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.temperature = ModalConfigValidator.temperature(e)),
);
}}
>
{
props.updateConfig(
(config) => (config.top_p = ModalConfigValidator.top_p(e)),
);
}}
>
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))
}
/>
>
);
}