| import React from 'react'; | |
| import OpenAI from './OpenAI'; | |
| import BingAI from './BingAI'; | |
| import Google from './Google'; | |
| import Plugins from './Plugins'; | |
| import ChatGPT from './ChatGPT'; | |
| import Anthropic from './Anthropic'; | |
| import { useRecoilValue } from 'recoil'; | |
| import type { TConversation } from 'librechat-data-provider'; | |
| import type { TSetOption, TModelSelectProps } from '~/common'; | |
| import store from '~/store'; | |
| type TGoogleProps = { | |
| showExamples: boolean; | |
| isCodeChat: boolean; | |
| }; | |
| type TSelectProps = { | |
| conversation: TConversation | null; | |
| setOption: TSetOption; | |
| extraProps?: TGoogleProps; | |
| }; | |
| const optionComponents: { [key: string]: React.FC<TModelSelectProps> } = { | |
| openAI: OpenAI, | |
| azureOpenAI: OpenAI, | |
| bingAI: BingAI, | |
| google: Google, | |
| gptPlugins: Plugins, | |
| anthropic: Anthropic, | |
| chatGPTBrowser: ChatGPT, | |
| }; | |
| export default function ModelSelect({ conversation, setOption }: TSelectProps) { | |
| const modelsConfig = useRecoilValue(store.modelsConfig); | |
| if (!conversation?.endpoint) { | |
| return null; | |
| } | |
| const { endpoint } = conversation; | |
| const OptionComponent = optionComponents[endpoint]; | |
| const models = modelsConfig?.[endpoint] ?? []; | |
| if (!OptionComponent) { | |
| return null; | |
| } | |
| return <OptionComponent conversation={conversation} setOption={setOption} models={models} />; | |
| } | |