123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- import { ModalConfigValidator, ModelConfig } from "../store";
- import Locale from "../locales";
- import { InputRange } from "./input-range";
- import { ListItem, Select } from "./ui-lib";
- import { useAllModels } from "../utils/hooks";
- export function ModelConfigList(props: {
- modelConfig: ModelConfig;
- updateConfig: (updater: (config: ModelConfig) => void) => void;
- }) {
- const allModels = useAllModels();
- return (
- <>
- <ListItem title={Locale.Settings.Model}>
- <Select
- value={props.modelConfig.model}
- onChange={(e) => {
- props.updateConfig(
- (config) =>
- (config.model = ModalConfigValidator.model(
- e.currentTarget.value,
- )),
- );
- }}
- >
- {allModels
- .filter((v) => v.available)
- .map((v, i) => (
- <option value={v.name} key={i}>
- {v.displayName}
- </option>
- ))}
- </Select>
- </ListItem>
- <ListItem
- title={Locale.Settings.Temperature.Title}
- subTitle={Locale.Settings.Temperature.SubTitle}
- >
- <InputRange
- value={props.modelConfig.temperature?.toFixed(1)}
- min="0"
- max="1" // lets limit it to 0-1
- step="0.1"
- onChange={(e) => {
- props.updateConfig(
- (config) =>
- (config.temperature = ModalConfigValidator.temperature(
- e.currentTarget.valueAsNumber,
- )),
- );
- }}
- ></InputRange>
- </ListItem>
- <ListItem
- title={Locale.Settings.TopP.Title}
- subTitle={Locale.Settings.TopP.SubTitle}
- >
- <InputRange
- value={(props.modelConfig.top_p ?? 1).toFixed(1)}
- min="0"
- max="1"
- step="0.1"
- onChange={(e) => {
- props.updateConfig(
- (config) =>
- (config.top_p = ModalConfigValidator.top_p(
- e.currentTarget.valueAsNumber,
- )),
- );
- }}
- ></InputRange>
- </ListItem>
- <ListItem
- title={Locale.Settings.MaxTokens.Title}
- subTitle={Locale.Settings.MaxTokens.SubTitle}
- >
- <input
- type="number"
- min={1024}
- max={512000}
- value={props.modelConfig.max_tokens}
- onChange={(e) =>
- props.updateConfig(
- (config) =>
- (config.max_tokens = ModalConfigValidator.max_tokens(
- e.currentTarget.valueAsNumber,
- )),
- )
- }
- ></input>
- </ListItem>
- <ListItem
- title={Locale.Settings.PresencePenalty.Title}
- subTitle={Locale.Settings.PresencePenalty.SubTitle}
- >
- <InputRange
- value={props.modelConfig.presence_penalty?.toFixed(1)}
- min="-2"
- max="2"
- step="0.1"
- onChange={(e) => {
- props.updateConfig(
- (config) =>
- (config.presence_penalty =
- ModalConfigValidator.presence_penalty(
- e.currentTarget.valueAsNumber,
- )),
- );
- }}
- ></InputRange>
- </ListItem>
- <ListItem
- title={Locale.Settings.FrequencyPenalty.Title}
- subTitle={Locale.Settings.FrequencyPenalty.SubTitle}
- >
- <InputRange
- value={props.modelConfig.frequency_penalty?.toFixed(1)}
- min="-2"
- max="2"
- step="0.1"
- onChange={(e) => {
- props.updateConfig(
- (config) =>
- (config.frequency_penalty =
- ModalConfigValidator.frequency_penalty(
- e.currentTarget.valueAsNumber,
- )),
- );
- }}
- ></InputRange>
- </ListItem>
- <ListItem
- title={Locale.Settings.InjectSystemPrompts.Title}
- subTitle={Locale.Settings.InjectSystemPrompts.SubTitle}
- >
- <input
- type="checkbox"
- checked={props.modelConfig.enableInjectSystemPrompts}
- onChange={(e) =>
- props.updateConfig(
- (config) =>
- (config.enableInjectSystemPrompts = e.currentTarget.checked),
- )
- }
- ></input>
- </ListItem>
- <ListItem
- title={Locale.Settings.InputTemplate.Title}
- subTitle={Locale.Settings.InputTemplate.SubTitle}
- >
- <input
- type="text"
- value={props.modelConfig.template}
- onChange={(e) =>
- props.updateConfig(
- (config) => (config.template = e.currentTarget.value),
- )
- }
- ></input>
- </ListItem>
- <ListItem
- title={Locale.Settings.HistoryCount.Title}
- subTitle={Locale.Settings.HistoryCount.SubTitle}
- >
- <InputRange
- title={props.modelConfig.historyMessageCount.toString()}
- value={props.modelConfig.historyMessageCount}
- min="0"
- max="64"
- step="1"
- onChange={(e) =>
- props.updateConfig(
- (config) => (config.historyMessageCount = e.target.valueAsNumber),
- )
- }
- ></InputRange>
- </ListItem>
- <ListItem
- title={Locale.Settings.CompressThreshold.Title}
- subTitle={Locale.Settings.CompressThreshold.SubTitle}
- >
- <input
- type="number"
- min={500}
- max={4000}
- value={props.modelConfig.compressMessageLengthThreshold}
- onChange={(e) =>
- props.updateConfig(
- (config) =>
- (config.compressMessageLengthThreshold =
- e.currentTarget.valueAsNumber),
- )
- }
- ></input>
- </ListItem>
- <ListItem title={Locale.Memory.Title} subTitle={Locale.Memory.Send}>
- <input
- type="checkbox"
- checked={props.modelConfig.sendMemory}
- onChange={(e) =>
- props.updateConfig(
- (config) => (config.sendMemory = e.currentTarget.checked),
- )
- }
- ></input>
- </ListItem>
- </>
- );
- }
|