Merge pull request #3461 from BerriAI/litellm_set_router_retry_policy_ui

[UI] Set Router Retry Policy
This commit is contained in:
Ishaan Jaff 2024-05-06 16:36:09 -07:00 committed by GitHub
commit a1e53247ee
2 changed files with 89 additions and 2 deletions

View file

@ -2631,6 +2631,7 @@ class Router:
"retry_after", "retry_after",
"fallbacks", "fallbacks",
"context_window_fallbacks", "context_window_fallbacks",
"model_group_retry_policy",
] ]
for var in vars_to_include: for var in vars_to_include:
@ -2656,6 +2657,7 @@ class Router:
"retry_after", "retry_after",
"fallbacks", "fallbacks",
"context_window_fallbacks", "context_window_fallbacks",
"model_group_retry_policy",
] ]
_int_settings = [ _int_settings = [

View file

@ -18,7 +18,7 @@ import {
} from "@tremor/react"; } from "@tremor/react";
import { TabPanel, TabPanels, TabGroup, TabList, Tab, TextInput, Icon, DateRangePicker } from "@tremor/react"; import { TabPanel, TabPanels, TabGroup, TabList, Tab, TextInput, Icon, DateRangePicker } from "@tremor/react";
import { Select, SelectItem, MultiSelect, MultiSelectItem, DateRangePickerValue } from "@tremor/react"; import { Select, SelectItem, MultiSelect, MultiSelectItem, DateRangePickerValue } from "@tremor/react";
import { modelInfoCall, userGetRequesedtModelsCall, modelCreateCall, Model, modelCostMap, modelDeleteCall, healthCheckCall, modelUpdateCall, modelMetricsCall, modelExceptionsCall, modelMetricsSlowResponsesCall } from "./networking"; import { modelInfoCall, userGetRequesedtModelsCall, modelCreateCall, Model, modelCostMap, modelDeleteCall, healthCheckCall, modelUpdateCall, modelMetricsCall, modelExceptionsCall, modelMetricsSlowResponsesCall, getCallbacksCall } from "./networking";
import { BarChart, AreaChart } from "@tremor/react"; import { BarChart, AreaChart } from "@tremor/react";
import { import {
Button as Button2, Button as Button2,
@ -83,6 +83,17 @@ const provider_map: Record <string, string> = {
}; };
const retry_policy_map: Record <string, string> = {
"BadRequestError (400)": "BadRequestErrorRetries",
"AuthenticationError (401)": "AuthenticationErrorRetries",
"TimeoutError (408)": "TimeoutErrorRetries",
"RateLimitError (429)": "RateLimitErrorRetries",
"ContentPolicyViolationError (400)": "ContentPolicyViolationErrorRetries"
};
const handleSubmit = async (formValues: Record<string, any>, accessToken: string, form: any) => { const handleSubmit = async (formValues: Record<string, any>, accessToken: string, form: any) => {
try { try {
/** /**
@ -211,6 +222,10 @@ const ModelDashboard: React.FC<ModelDashboardProps> = ({
to: new Date(), to: new Date(),
}); });
const [modelGroupRetryPolicy, setModelGroupRetryPolicy] = useState<Record<string, number>>({});
const [defaultRetry, setDefaultRetry] = useState<number>(0);
const EditModelModal: React.FC<EditModelModalProps> = ({ visible, onCancel, model, onSubmit }) => { const EditModelModal: React.FC<EditModelModalProps> = ({ visible, onCancel, model, onSubmit }) => {
const [form] = Form.useForm(); const [form] = Form.useForm();
let litellm_params_to_edit: Record<string, any> = {} let litellm_params_to_edit: Record<string, any> = {}
@ -514,6 +529,22 @@ const handleEditSubmit = async (formValues: Record<string, any>) => {
setSlowResponsesData(slowResponses); setSlowResponsesData(slowResponses);
const routerSettingsInfo = await getCallbacksCall(accessToken, userID, userRole);
let router_settings = routerSettingsInfo.router_settings;
console.log("routerSettingsInfo:", router_settings)
let model_group_retry_policy = router_settings.model_group_retry_policy;
let default_retries = router_settings.num_retries;
console.log("model_group_retry_policy:", model_group_retry_policy)
console.log("default_retries:", default_retries)
setModelGroupRetryPolicy(model_group_retry_policy);
setDefaultRetry(default_retries);
} catch (error) { } catch (error) {
console.error("There was an error fetching the model data", error); console.error("There was an error fetching the model data", error);
} }
@ -795,6 +826,7 @@ const handleEditSubmit = async (formValues: Record<string, any>) => {
<Tab>Add Model</Tab> <Tab>Add Model</Tab>
<Tab><pre>/health Models</pre></Tab> <Tab><pre>/health Models</pre></Tab>
<Tab>Model Analytics</Tab> <Tab>Model Analytics</Tab>
<Tab>Model Retry Settings</Tab>
</div> </div>
<div className="flex items-center space-x-2"> <div className="flex items-center space-x-2">
@ -816,7 +848,7 @@ const handleEditSubmit = async (formValues: Record<string, any>) => {
<TabPanel> <TabPanel>
<Grid> <Grid>
<div className="flex items-center"> <div className="flex items-center">
<Text>Filter by Public Model Name</Text> <Text>Filter by Public Model Name</Text>
<Select <Select
className="mb-4 mt-2 ml-2 w-50" className="mb-4 mt-2 ml-2 w-50"
defaultValue="all" defaultValue="all"
@ -1214,6 +1246,59 @@ const handleEditSubmit = async (formValues: Record<string, any>) => {
/> />
</Card> </Card>
</TabPanel> </TabPanel>
<TabPanel>
<div className="flex items-center">
<Text>Filter by Public Model Name</Text>
<Select
className="mb-4 mt-2 ml-2 w-50"
defaultValue={selectedModelGroup? selectedModelGroup : availableModelGroups[0]}
value={selectedModelGroup ? selectedModelGroup : availableModelGroups[0]}
onValueChange={(value) => setSelectedModelGroup(value)}
>
{availableModelGroups.map((group, idx) => (
<SelectItem
key={idx}
value={group}
onClick={() => setSelectedModelGroup(group)}
>
{group}
</SelectItem>
))}
</Select>
</div>
<Title>
Retry Policy for {selectedModelGroup}
</Title>
<Text className="mb-6">How many retries should be attempted based on the Exception</Text>
{retry_policy_map &&
<table>
<tbody>
{Object.keys(retry_policy_map).map((key, idx) => (
<tr key={idx} className="flex justify-between items-center mt-2">
<td>
<Text>{key}</Text>
</td>
<td>
<InputNumber
className="ml-5"
defaultValue={defaultRetry}
min={0}
step={1}
/>
</td>
</tr>
))}
</tbody>
</table>
}
<Button className="mt-6 mr-8">
Save
</Button>
</TabPanel>
</TabPanels> </TabPanels>
</TabGroup> </TabGroup>