import { ListItem } from "@/app/components/List"; import { ModalConfigValidator, ModelConfig, useAppConfig, } from "@/app/store/config"; import { useAllModels } from "@/app/utils/hooks"; import Locale from "@/app/locales"; import Select from "@/app/components/Select"; import SlideRange from "@/app/components/SlideRange"; import Switch from "@/app/components/Switch"; import Input from "@/app/components/Input"; export default function ModelSetting(props: { modelConfig: ModelConfig; updateConfig: (updater: (config: ModelConfig) => void) => void; }) { const allModels = useAllModels(); const { isMobileScreen } = useAppConfig(); return ( <> props.updateConfig( (config) => (config.max_tokens = ModalConfigValidator.max_tokens(e)), ) } > {props.modelConfig.model.startsWith("gemini") ? null : ( <> { props.updateConfig( (config) => (config.presence_penalty = ModalConfigValidator.presence_penalty(e)), ); }} > { props.updateConfig( (config) => (config.frequency_penalty = ModalConfigValidator.frequency_penalty(e)), ); }} > props.updateConfig( (config) => (config.enableInjectSystemPrompts = e), ) } /> { if (!v.includes("{{input}}")) { return { error: true, message: Locale.Settings.InputTemplate.Error, }; } return { error: false }; }} > props.updateConfig((config) => (config.template = e)) } > )} { props.updateConfig((config) => (config.historyMessageCount = e)); }} > props.updateConfig( (config) => (config.compressMessageLengthThreshold = e), ) } > props.updateConfig((config) => (config.sendMemory = e)) } /> ); }