TestLLM / ui /litellm-dashboard /src /components /pass_through_settings.tsx
Raju2024's picture
Upload 1072 files
e3278e4 verified
import React, { useState, useEffect } from "react";
import {
Card,
Title,
Subtitle,
Table,
TableHead,
TableRow,
Badge,
TableHeaderCell,
TableCell,
TableBody,
Metric,
Text,
Grid,
Button,
TextInput,
Select as Select2,
SelectItem,
Col,
Accordion,
AccordionBody,
AccordionHeader,
AccordionList,
} from "@tremor/react";
import {
TabPanel,
TabPanels,
TabGroup,
TabList,
Tab,
Icon,
} from "@tremor/react";
import {
getCallbacksCall,
setCallbacksCall,
getGeneralSettingsCall,
deletePassThroughEndpointsCall,
getPassThroughEndpointsCall,
serviceHealthCheck,
updateConfigFieldSetting,
deleteConfigFieldSetting,
} from "./networking";
import {
Modal,
Form,
Input,
Select,
Button as Button2,
message,
InputNumber,
} from "antd";
import {
InformationCircleIcon,
PencilAltIcon,
PencilIcon,
StatusOnlineIcon,
TrashIcon,
RefreshIcon,
CheckCircleIcon,
XCircleIcon,
QuestionMarkCircleIcon,
} from "@heroicons/react/outline";
import AddFallbacks from "./add_fallbacks";
import AddPassThroughEndpoint from "./add_pass_through";
import openai from "openai";
import Paragraph from "antd/es/skeleton/Paragraph";
interface GeneralSettingsPageProps {
accessToken: string | null;
userRole: string | null;
userID: string | null;
modelData: any;
}
interface routingStrategyArgs {
ttl?: number;
lowest_latency_buffer?: number;
}
interface nestedFieldItem {
field_name: string;
field_type: string;
field_value: any;
field_description: string;
stored_in_db: boolean | null;
}
export interface passThroughItem {
path: string
target: string
headers: object
}
const PassThroughSettings: React.FC<GeneralSettingsPageProps> = ({
accessToken,
userRole,
userID,
modelData,
}) => {
const [generalSettings, setGeneralSettings] = useState<passThroughItem[]>(
[]
);
useEffect(() => {
if (!accessToken || !userRole || !userID) {
return;
}
getPassThroughEndpointsCall(accessToken).then((data) => {
let general_settings = data["endpoints"];
setGeneralSettings(general_settings);
});
}, [accessToken, userRole, userID]);
const handleResetField = (fieldName: string, idx: number) => {
if (!accessToken) {
return;
}
try {
deletePassThroughEndpointsCall(accessToken, fieldName);
// update value in state
const updatedSettings = generalSettings.filter((setting) => setting.path !== fieldName);
setGeneralSettings(updatedSettings);
message.success("Endpoint deleted successfully.");
} catch (error) {
// do something
}
};
if (!accessToken) {
return null;
}
return (
<div className="w-full mx-4">
<TabGroup className="gap-2 p-8 h-[75vh] w-full mt-2">
<Card>
<Table>
<TableHead>
<TableRow>
<TableHeaderCell>Path</TableHeaderCell>
<TableHeaderCell>Target</TableHeaderCell>
<TableHeaderCell>Headers</TableHeaderCell>
<TableHeaderCell>Action</TableHeaderCell>
</TableRow>
</TableHead>
<TableBody>
{generalSettings.map((value, index) => (
<TableRow key={index}>
<TableCell>
<Text>{value.path}</Text>
</TableCell>
<TableCell>
{
value.target
}
</TableCell>
<TableCell>
{
JSON.stringify(value.headers)
}
</TableCell>
<TableCell>
<Icon
icon={TrashIcon}
color="red"
onClick={() =>
handleResetField(value.path, index)
}
>
Reset
</Icon>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
<AddPassThroughEndpoint accessToken={accessToken} setPassThroughItems={setGeneralSettings} passThroughItems={generalSettings}/>
</Card>
</TabGroup>
</div>
);
};
export default PassThroughSettings;