import React, { useState, useEffect } from "react"; import { Card, Title, Text, Tab, TabList, TabGroup, TabPanel, TabPanels, Grid, Badge, Button as TremorButton, TextInput, NumberInput, } from "@tremor/react"; import { ArrowLeftIcon, TrashIcon } from "@heroicons/react/outline"; import { modelDeleteCall, modelUpdateCall } from "./networking"; import { Button, Form, Input, InputNumber, message, Select } from "antd"; import EditModelModal from "./edit_model/edit_model_modal"; import { handleEditModelSubmit } from "./edit_model/edit_model_modal"; import { getProviderLogoAndName } from "./provider_info_helpers"; import { getDisplayModelName } from "./view_model/model_name_display"; interface ModelInfoViewProps { modelId: string; onClose: () => void; modelData: any; accessToken: string | null; userID: string | null; userRole: string | null; editModel: boolean; setEditModalVisible: (visible: boolean) => void; setSelectedModel: (model: any) => void; onModelUpdate?: (updatedModel: any) => void; } export default function ModelInfoView({ modelId, onClose, modelData, accessToken, userID, userRole, editModel, setEditModalVisible, setSelectedModel, onModelUpdate }: ModelInfoViewProps) { const [form] = Form.useForm(); const [localModelData, setLocalModelData] = useState(modelData); const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false); const [isDirty, setIsDirty] = useState(false); const [isSaving, setIsSaving] = useState(false); const [isEditing, setIsEditing] = useState(false); const canEditModel = userRole === "Admin"; const handleModelUpdate = async (values: any) => { try { if (!accessToken) return; setIsSaving(true); const updateData = { model_name: values.model_name, litellm_params: { ...localModelData.litellm_params, model: values.litellm_model_name, api_base: values.api_base, custom_llm_provider: values.custom_llm_provider, organization: values.organization, tpm: values.tpm, rpm: values.rpm, max_retries: values.max_retries, timeout: values.timeout, stream_timeout: values.stream_timeout, input_cost_per_token: values.input_cost / 1_000_000, output_cost_per_token: values.output_cost / 1_000_000, }, model_info: { id: modelId, } }; await modelUpdateCall(accessToken, updateData); const updatedModelData = { ...localModelData, model_name: values.model_name, litellm_model_name: values.litellm_model_name, litellm_params: updateData.litellm_params }; setLocalModelData(updatedModelData); if (onModelUpdate) { onModelUpdate(updatedModelData); } message.success("Model settings updated successfully"); setIsDirty(false); setIsEditing(false); } catch (error) { console.error("Error updating model:", error); message.error("Failed to update model settings"); } finally { setIsSaving(false); } }; if (!modelData) { return (
{modelData.litellm_model_name || "Not Set"}
{JSON.stringify(modelData, null, 2)}
Are you sure you want to delete this model?