import { useState } from 'react'; import { Settings2 } from 'lucide-react'; import { useRecoilState, useRecoilValue } from 'recoil'; import SelectDropDown from '../../ui/SelectDropDown'; import EndpointOptionsPopover from '../../Endpoints/EndpointOptionsPopover'; import SaveAsPresetDialog from '../../Endpoints/SaveAsPresetDialog'; import { Button } from '../../ui/Button.tsx'; import Settings from '../../Endpoints/OpenAI/Settings.jsx'; import { cn } from '~/utils/'; import store from '~/store'; function OpenAIOptions() { const [advancedMode, setAdvancedMode] = useState(false); const [saveAsDialogShow, setSaveAsDialogShow] = useState(false); const [conversation, setConversation] = useRecoilState(store.conversation) || {}; const { endpoint } = conversation; const { model, chatGptLabel, promptPrefix, temperature, top_p, presence_penalty, frequency_penalty, } = conversation; const endpointsConfig = useRecoilValue(store.endpointsConfig); const isOpenAI = endpoint === 'openAI' || endpoint === 'azureOpenAI'; if (!isOpenAI) { return null; } const models = endpointsConfig?.[endpoint]?.['availableModels'] || []; const triggerAdvancedMode = () => setAdvancedMode((prev) => !prev); const switchToSimpleMode = () => { setAdvancedMode(false); }; const saveAsPreset = () => { setSaveAsDialogShow(true); }; const setOption = (param) => (newValue) => { let update = {}; update[param] = newValue; setConversation((prevState) => ({ ...prevState, ...update, })); }; const cardStyle = 'transition-colors shadow-md rounded-md min-w-[75px] font-normal bg-white border-black/10 hover:border-black/10 focus:border-black/10 dark:border-black/10 dark:hover:border-black/10 dark:focus:border-black/10 border dark:bg-gray-700 text-black dark:text-white'; return ( <>
} visible={advancedMode} saveAsPreset={saveAsPreset} switchToSimpleMode={switchToSimpleMode} /> ); } export default OpenAIOptions;