import React, { useState, useEffect } from "react"; import { Card, Title, Subtitle, Table, TableHead, TableRow, TableCell, TableBody, Metric, Grid } from "@tremor/react"; import { modelInfoCall } from "./networking"; import { Badge, BadgeDelta, Button } from '@tremor/react'; interface ModelDashboardProps { accessToken: string | null; token: string | null; userRole: string | null; userID: string | null; } const ModelDashboard: React.FC = ({ accessToken, token, userRole, userID, }) => { const [modelData, setModelData] = useState({ data: [] }); useEffect(() => { if (!accessToken || !token || !userRole || !userID) { return; } const fetchData = async () => { try { // Replace with your actual API call for model data const modelDataResponse = await modelInfoCall(accessToken, userID, userRole); console.log("Model data response:", modelDataResponse.data); setModelData(modelDataResponse); } catch (error) { console.error("There was an error fetching the model data", error); } }; if (accessToken && token && userRole && userID) { fetchData(); } }, [accessToken, token, userRole, userID]); if (!modelData) { return
Loading...
; } // loop through model data and edit each row for (let i = 0; i < modelData.data.length; i++) { let curr_model = modelData.data[i]; let litellm_model_name = curr_model?.litellm_params?.model; let model_info = curr_model?.model_info; let defaultProvider = "openai"; let provider = ""; let input_cost = "Undefined" let output_cost = "Undefined" let max_tokens = "Undefined" // Check if litellm_model_name is null or undefined if (litellm_model_name) { // Split litellm_model_name based on "/" let splitModel = litellm_model_name.split("/"); // Get the first element in the split let firstElement = splitModel[0]; // If there is only one element, default provider to openai provider = splitModel.length === 1 ? defaultProvider : firstElement; } else { // litellm_model_name is null or undefined, default provider to openai provider = defaultProvider; } if (model_info) { input_cost = model_info?.input_cost_per_token; output_cost = model_info?.output_cost_per_token; max_tokens = model_info?.max_tokens; } modelData.data[i].provider = provider modelData.data[i].input_cost = input_cost modelData.data[i].output_cost = output_cost modelData.data[i].max_tokens = max_tokens console.log(modelData.data[i]); } // when users click request access show pop up to allow them to request access return (
Model Name Provider Access Input Price per token ($) Output Price per token ($) Max Tokens {modelData.data.map((model: any) => ( {model.model_name} {model.provider} {model.user_access ? Yes : } {model.input_cost} {model.output_cost} {model.max_tokens} ))}
); }; export default ModelDashboard;