import Select from '@/components/ui/Select'; import { ConfigModelProvider } from '@/lib/config/types'; import { useChat } from '@/lib/hooks/useChat'; import { useState } from 'react'; import { toast } from 'sonner'; const ModelSelect = ({ providers, type, }: { providers: ConfigModelProvider[]; type: 'chat' | 'embedding'; }) => { const [selectedModel, setSelectedModel] = useState( type === 'chat' ? `${localStorage.getItem('chatModelProviderId')}/${localStorage.getItem('chatModelKey')}` : `${localStorage.getItem('embeddingModelProviderId')}/${localStorage.getItem('embeddingModelKey')}`, ); const [loading, setLoading] = useState(false); const { setChatModelProvider, setEmbeddingModelProvider } = useChat(); const handleSave = async (newValue: string) => { setLoading(true); setSelectedModel(newValue); try { if (type === 'chat') { const providerId = newValue.split('/')[0]; const modelKey = newValue.split('/').slice(1).join('/'); localStorage.setItem('chatModelProviderId', providerId); localStorage.setItem('chatModelKey', modelKey); setChatModelProvider({ providerId: providerId, key: modelKey, }); } else { const providerId = newValue.split('/')[0]; const modelKey = newValue.split('/').slice(1).join('/'); localStorage.setItem('embeddingModelProviderId', providerId); localStorage.setItem('embeddingModelKey', modelKey); setEmbeddingModelProvider({ providerId: providerId, key: modelKey, }); } } catch (error) { console.error('Error saving config:', error); toast.error('Failed to save configuration.'); } finally { setLoading(false); } }; return (

Select {type === 'chat' ? 'Chat Model' : 'Embedding Model'}

{type === 'chat' ? 'Choose which model to use for generating responses' : 'Choose which model to use for generating embeddings'}