import type { ModelConfig } from '../store'; import { ServiceProvider } from '@/app/constant'; import { groupBy } from 'lodash-es'; import Locale from '../locales'; import { ModalConfigValidator } from '../store'; import { useAllModels } from '../utils/hooks'; import { getModelProvider } from '../utils/model'; import { InputRange } from './input-range'; import styles from './model-config.module.scss'; import { ListItem, Select } from './ui-lib'; export function ModelConfigList(props: { modelConfig: ModelConfig; updateConfig: (updater: (config: ModelConfig) => void) => void; }) { const allModels = useAllModels(); const groupModels = groupBy( allModels.filter(v => v.available), 'provider.providerName', ); const value = `${props.modelConfig.model}@${props.modelConfig?.providerName}`; const compressModelValue = `${props.modelConfig.compressModel}@${props.modelConfig?.compressProviderName}`; return ( <> { props.updateConfig( config => (config.temperature = ModalConfigValidator.temperature( e.currentTarget.valueAsNumber, )), ); }} > { props.updateConfig( config => (config.top_p = ModalConfigValidator.top_p( e.currentTarget.valueAsNumber, )), ); }} > props.updateConfig( config => (config.max_tokens = ModalConfigValidator.max_tokens( e.currentTarget.valueAsNumber, )), )} > {props.modelConfig?.providerName == ServiceProvider.Google ? null : ( <> { props.updateConfig( config => (config.presence_penalty = ModalConfigValidator.presence_penalty( e.currentTarget.valueAsNumber, )), ); }} > { props.updateConfig( config => (config.frequency_penalty = ModalConfigValidator.frequency_penalty( e.currentTarget.valueAsNumber, )), ); }} > props.updateConfig( config => (config.enableInjectSystemPrompts = e.currentTarget.checked), )} > props.updateConfig( config => (config.template = e.currentTarget.value), )} > )} props.updateConfig( config => (config.historyMessageCount = e.target.valueAsNumber), )} > props.updateConfig( config => (config.compressMessageLengthThreshold = e.currentTarget.valueAsNumber), )} > props.updateConfig( config => (config.sendMemory = e.currentTarget.checked), )} > ); }