import React from "react"; import { Form, Select as AntSelect } from "antd"; import { TextInput, Text } from "@tremor/react"; import { Row, Col } from "antd"; import { Providers } from "../provider_info_helpers"; interface LiteLLMModelNameFieldProps { selectedProvider: string; providerModels: string[]; getPlaceholder: (provider: string) => string; } const LiteLLMModelNameField: React.FC = ({ selectedProvider, providerModels, getPlaceholder, }) => { const form = Form.useFormInstance(); const handleModelChange = (value: string[]) => { // If "all-wildcard" is selected, clear the model_name field if (value.includes("all-wildcard")) { form.setFieldsValue({ model_name: undefined }); } }; return ( <> {(selectedProvider === Providers.Azure) || (selectedProvider === Providers.OpenAI_Compatible) || (selectedProvider === Providers.Ollama) ? ( ) : providerModels.length > 0 ? ( (option?.label ?? '').toLowerCase().includes(input.toLowerCase()) } options={[ { label: `All ${selectedProvider} Models (Wildcard)`, value: 'all-wildcard' }, ...providerModels.map(model => ({ label: model, value: model })), { label: 'Custom Model Name (Enter below)', value: 'custom' } ]} style={{ width: '100%' }} /> ) : ( )} {/* Custom Model Name field */} prevValues.model !== currentValues.model } > {({ getFieldValue }) => { const selectedModels = getFieldValue('model') || []; return selectedModels.includes('custom') && ( ); }} Actual model name used for making litellm.completion() call. We loadbalance models with the same public name ); }; export default LiteLLMModelNameField;