import React from 'react'; import TextareaAutosize from 'react-textarea-autosize'; import type { TModelSelectProps } from '~/common'; import { ESide } from '~/common'; import { SelectDropDown, Input, Label, Slider, InputNumber, HoverCard, HoverCardTrigger, } from '~/components/ui'; import OptionHover from './OptionHover'; import { cn, defaultTextProps, optionText, removeFocusOutlines } from '~/utils/'; import { useLocalize } from '~/hooks'; export default function Settings({ conversation, setOption, models, readonly }: TModelSelectProps) { const localize = useLocalize(); if (!conversation) { return null; } const { model, modelLabel, promptPrefix, temperature, topP, topK, maxOutputTokens } = conversation; const setModel = setOption('model'); const setModelLabel = setOption('modelLabel'); const setPromptPrefix = setOption('promptPrefix'); const setTemperature = setOption('temperature'); const setTopP = setOption('topP'); const setTopK = setOption('topK'); const setMaxOutputTokens = setOption('maxOutputTokens'); const codeChat = model?.startsWith('codechat-'); return (
{!codeChat && ( <>
setModelLabel(e.target.value ?? null)} placeholder={localize('com_endpoint_google_custom_name_placeholder')} className={cn( defaultTextProps, 'flex h-10 max-h-10 w-full resize-none px-3 py-2', removeFocusOutlines, )} />
setPromptPrefix(e.target.value ?? null)} placeholder={localize('com_endpoint_prompt_prefix_placeholder')} className={cn( defaultTextProps, 'flex max-h-[300px] min-h-[100px] w-full resize-none px-3 py-2 ', )} />
)}
setTemperature(value ?? 0.2)} max={1} min={0} step={0.01} controls={false} className={cn( defaultTextProps, cn( optionText, 'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200', ), )} />
setTemperature(value[0])} doubleClickHandler={() => setTemperature(0.2)} max={1} min={0} step={0.01} className="flex h-4 w-full" />
{!codeChat && ( <>
setTopP(value ?? '0.95')} max={1} min={0} step={0.01} controls={false} className={cn( defaultTextProps, cn( optionText, 'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200', ), )} />
setTopP(value[0])} doubleClickHandler={() => setTopP(0.95)} max={1} min={0} step={0.01} className="flex h-4 w-full" />
setTopK(value ?? 40)} max={40} min={1} step={0.01} controls={false} className={cn( defaultTextProps, cn( optionText, 'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200', ), )} />
setTopK(value[0])} doubleClickHandler={() => setTopK(40)} max={40} min={1} step={0.01} className="flex h-4 w-full" />
)}
setMaxOutputTokens(value ?? 1024)} max={1024} min={1} step={1} controls={false} className={cn( defaultTextProps, cn( optionText, 'reset-rc-number-input reset-rc-number-input-text-right h-auto w-12 border-0 group-hover/temp:border-gray-200', ), )} />
setMaxOutputTokens(value[0])} doubleClickHandler={() => setMaxOutputTokens(1024)} max={1024} min={1} step={1} className="flex h-4 w-full" />
); }