model.tsx 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import { ModelConfig } from "@/app/store";
  2. import { ModelConfigProps } from "../types";
  3. import { ListItem, Select } from "../../ui-lib";
  4. import Locale from "@/app/locales";
  5. import { InputRange } from "../../input-range";
  6. export function OpenAIModelConfig(
  7. props: ModelConfigProps<ModelConfig["openai"]>,
  8. ) {
  9. return (
  10. <>
  11. <ListItem title={Locale.Settings.Model}>
  12. <Select
  13. value={props.config.model}
  14. onChange={(e) => {
  15. props.updateConfig(
  16. (config) => (config.model = e.currentTarget.value),
  17. );
  18. }}
  19. >
  20. {props.models.map((v, i) => (
  21. <option value={v.name} key={i} disabled={!v.available}>
  22. {v.name}
  23. </option>
  24. ))}
  25. </Select>
  26. </ListItem>
  27. <ListItem
  28. title={Locale.Settings.Temperature.Title}
  29. subTitle={Locale.Settings.Temperature.SubTitle}
  30. >
  31. <InputRange
  32. value={props.config.temperature?.toFixed(1)}
  33. min="0"
  34. max="1" // lets limit it to 0-1
  35. step="0.1"
  36. onChange={(e) => {
  37. props.updateConfig(
  38. (config) => (config.temperature = e.currentTarget.valueAsNumber),
  39. );
  40. }}
  41. ></InputRange>
  42. </ListItem>
  43. <ListItem
  44. title={Locale.Settings.TopP.Title}
  45. subTitle={Locale.Settings.TopP.SubTitle}
  46. >
  47. <InputRange
  48. value={(props.config.top_p ?? 1).toFixed(1)}
  49. min="0"
  50. max="1"
  51. step="0.1"
  52. onChange={(e) => {
  53. props.updateConfig(
  54. (config) => (config.top_p = e.currentTarget.valueAsNumber),
  55. );
  56. }}
  57. ></InputRange>
  58. </ListItem>
  59. <ListItem
  60. title={Locale.Settings.MaxTokens.Title}
  61. subTitle={Locale.Settings.MaxTokens.SubTitle}
  62. >
  63. <input
  64. type="number"
  65. min={100}
  66. max={100000}
  67. value={props.config.max_tokens}
  68. onChange={(e) =>
  69. props.updateConfig(
  70. (config) => (config.max_tokens = e.currentTarget.valueAsNumber),
  71. )
  72. }
  73. ></input>
  74. </ListItem>
  75. <ListItem
  76. title={Locale.Settings.PresencePenalty.Title}
  77. subTitle={Locale.Settings.PresencePenalty.SubTitle}
  78. >
  79. <InputRange
  80. value={props.config.presence_penalty?.toFixed(1)}
  81. min="-2"
  82. max="2"
  83. step="0.1"
  84. onChange={(e) => {
  85. props.updateConfig(
  86. (config) =>
  87. (config.presence_penalty = e.currentTarget.valueAsNumber),
  88. );
  89. }}
  90. ></InputRange>
  91. </ListItem>
  92. <ListItem
  93. title={Locale.Settings.FrequencyPenalty.Title}
  94. subTitle={Locale.Settings.FrequencyPenalty.SubTitle}
  95. >
  96. <InputRange
  97. value={props.config.frequency_penalty?.toFixed(1)}
  98. min="-2"
  99. max="2"
  100. step="0.1"
  101. onChange={(e) => {
  102. props.updateConfig(
  103. (config) =>
  104. (config.frequency_penalty = e.currentTarget.valueAsNumber),
  105. );
  106. }}
  107. ></InputRange>
  108. </ListItem>
  109. </>
  110. );
  111. }