Browse Source

Merge pull request #1807 from AngelLiang/feat/frequency_penalty

feat: Add frequency_penalty request parameter
Yifei Zhang 1 year ago
parent
commit
f3ec9f02eb

+ 1 - 0
app/client/platforms/openai.ts

@@ -42,6 +42,7 @@ export class ChatGPTApi implements LLMApi {
       model: modelConfig.model,
       temperature: modelConfig.temperature,
       presence_penalty: modelConfig.presence_penalty,
+      frequency_penalty: modelConfig.frequency_penalty,
     };
 
     console.log("[Request] openai payload: ", requestPayload);

+ 21 - 0
app/components/model-config.tsx

@@ -88,6 +88,27 @@ export function ModelConfigList(props: {
         ></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.HistoryCount.Title}
         subTitle={Locale.Settings.HistoryCount.SubTitle}

+ 4 - 0
app/locales/cn.ts

@@ -197,6 +197,10 @@ const cn = {
       Title: "话题新鲜度 (presence_penalty)",
       SubTitle: "值越大,越有可能扩展到新话题",
     },
+    FrequencyPenalty: {
+      Title: "频率惩罚度 (frequency_penalty)",
+      SubTitle: "值越大,越有可能降低重复字词",
+    },
   },
   Store: {
     DefaultTopic: "新的聊天",

+ 5 - 0
app/locales/cs.ts

@@ -155,6 +155,11 @@ const cs: PartialLocaleType = {
       Title: "Přítomnostní korekce",
       SubTitle: "Větší hodnota zvyšuje pravděpodobnost nových témat.",
     },
+    FrequencyPenalty: {
+      Title: "Frekvenční penalizace",
+      SubTitle:
+        "Větší hodnota snižující pravděpodobnost opakování stejného řádku",
+    },
   },
   Store: {
     DefaultTopic: "Nová konverzace",

+ 5 - 0
app/locales/de.ts

@@ -158,6 +158,11 @@ const de: PartialLocaleType = {
       SubTitle:
         "Ein größerer Wert erhöht die Wahrscheinlichkeit, dass über neue Themen gesprochen wird",
     },
+    FrequencyPenalty: {
+      Title: "Frequency Penalty", // HäufigkeitStrafe
+      SubTitle:
+        "Ein größerer Wert, der die Wahrscheinlichkeit verringert, dass dieselbe Zeile wiederholt wird",
+    },
   },
   Store: {
     DefaultTopic: "Neues Gespräch",

+ 5 - 0
app/locales/en.ts

@@ -199,6 +199,11 @@ const en: LocaleType = {
       SubTitle:
         "A larger value increases the likelihood to talk about new topics",
     },
+    FrequencyPenalty: {
+      Title: "Frequency Penalty",
+      SubTitle:
+        "A larger value decreasing the likelihood to repeat the same line",
+    },
   },
   Store: {
     DefaultTopic: "New Conversation",

+ 5 - 0
app/locales/es.ts

@@ -156,6 +156,11 @@ const es: PartialLocaleType = {
       SubTitle:
         "Un valor mayor aumenta la probabilidad de hablar sobre nuevos temas",
     },
+    FrequencyPenalty: {
+      Title: "Penalización de frecuencia",
+      SubTitle:
+        "Un valor mayor que disminuye la probabilidad de repetir la misma línea",
+    },
   },
   Store: {
     DefaultTopic: "Nueva conversación",

+ 5 - 0
app/locales/fr.ts

@@ -159,6 +159,11 @@ const fr: PartialLocaleType = {
       SubTitle:
         "Une valeur plus élevée augmentera la probabilité d'introduire de nouveaux sujets",
     },
+    FrequencyPenalty: {
+      Title: "Pénalité de fréquence",
+      SubTitle:
+        "Une valeur plus élevée diminuant la probabilité de répéter la même ligne",
+    },
   },
   Store: {
     DefaultTopic: "Nouvelle conversation",

+ 5 - 0
app/locales/it.ts

@@ -157,6 +157,11 @@ const it: PartialLocaleType = {
       SubTitle:
         "Un valore maggiore aumenta la probabilità di parlare di nuovi argomenti",
     },
+    FrequencyPenalty: {
+      Title: "Penalità di frequenza",
+      SubTitle:
+        "Un valore maggiore che diminuisce la probabilità di ripetere la stessa riga",
+    },
   },
   Store: {
     DefaultTopic: "Nuova conversazione",

+ 4 - 0
app/locales/jp.ts

@@ -158,6 +158,10 @@ const jp: PartialLocaleType = {
       Title: "トピックの新鮮度 (presence_penalty)",
       SubTitle: "値が大きいほど、新しいトピックへの展開が可能になります。",
     },
+    FrequencyPenalty: {
+      Title: "話題の頻度 (frequency_penalty)",
+      SubTitle: "値が大きいほど、重複語を低減する可能性が高くなります",
+    },
   },
   Store: {
     DefaultTopic: "新しいチャット",

+ 4 - 0
app/locales/ko.ts

@@ -154,6 +154,10 @@ const ko: PartialLocaleType = {
       Title: "존재 페널티 (presence_penalty)",
       SubTitle: "값이 클수록 새로운 주제에 대해 대화할 가능성이 높아집니다.",
     },
+    FrequencyPenalty: {
+      Title: "빈도 페널티(frequency penalty)",
+      SubTitle: "값이 클수록 같은 줄이 반복될 가능성이 줄어듭니다.",
+    },
   },
   Store: {
     DefaultTopic: "새 대화",

+ 5 - 0
app/locales/ru.ts

@@ -157,6 +157,11 @@ const ru: PartialLocaleType = {
       SubTitle:
         "Чем выше значение, тем больше вероятность общения на новые темы",
     },
+    FrequencyPenalty: {
+      Title: "Штраф за частоту",
+      SubTitle:
+        "Большее значение снижает вероятность повторения одной и той же строки",
+    },
   },
   Store: {
     DefaultTopic: "Новый разговор",

+ 5 - 0
app/locales/tr.ts

@@ -158,6 +158,11 @@ const tr: PartialLocaleType = {
       SubTitle:
         "Daha büyük bir değer, yeni konular hakkında konuşma olasılığını artırır",
     },
+    FrequencyPenalty: {
+      Title: "Frekans Cezası",
+      SubTitle:
+        "Aynı satırı tekrar etme olasılığını azaltan daha büyük bir değer",
+    },
   },
   Store: {
     DefaultTopic: "Yeni Konuşma",

+ 4 - 0
app/locales/tw.ts

@@ -152,6 +152,10 @@ const tw: PartialLocaleType = {
       Title: "話題新穎度 (presence_penalty)",
       SubTitle: "值越大,越有可能擴展到新話題",
     },
+    FrequencyPenalty: {
+      Title: "頻率懲罰度 (frequency_penalty)",
+      SubTitle: "值越大,越有可能降低重複字詞",
+    },
   },
   Store: {
     DefaultTopic: "新的對話",

+ 4 - 0
app/locales/vi.ts

@@ -154,6 +154,10 @@ const vi: PartialLocaleType = {
       Title: "Chủ đề mới (presence_penalty)",
       SubTitle: "Giá trị càng lớn tăng khả năng mở rộng sang các chủ đề mới",
     },
+    FrequencyPenalty: {
+      Title: "Hình phạt tần suất",
+      SubTitle: "Giá trị lớn hơn làm giảm khả năng lặp lại cùng một dòng",
+    },
   },
   Store: {
     DefaultTopic: "Cuộc trò chuyện mới",

+ 14 - 0
app/masks/cn.ts

@@ -29,6 +29,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 32,
       compressMessageLengthThreshold: 1000,
@@ -52,6 +53,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -75,6 +77,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -98,6 +101,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -121,6 +125,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -144,6 +149,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: false,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -167,6 +173,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: false,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -190,6 +197,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: false,
       historyMessageCount: 0,
       compressMessageLengthThreshold: 1000,
@@ -218,6 +226,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 0.5,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -241,6 +250,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -270,6 +280,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: false,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -299,6 +310,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: false,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -349,6 +361,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 1,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: false,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -377,6 +390,7 @@ export const CN_MASKS: BuiltinMask[] = [
       temperature: 0.5,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,

+ 4 - 0
app/masks/en.ts

@@ -17,6 +17,7 @@ export const EN_MASKS: BuiltinMask[] = [
       temperature: 0.3,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -57,6 +58,7 @@ export const EN_MASKS: BuiltinMask[] = [
       temperature: 0.5,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -80,6 +82,7 @@ export const EN_MASKS: BuiltinMask[] = [
       temperature: 0.5,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 1000,
@@ -108,6 +111,7 @@ export const EN_MASKS: BuiltinMask[] = [
       temperature: 0.5,
       max_tokens: 2000,
       presence_penalty: 0,
+      frequency_penalty: 0,
       sendMemory: true,
       historyMessageCount: 4,
       compressMessageLengthThreshold: 2000,

+ 4 - 0
app/store/config.ts

@@ -35,6 +35,7 @@ export const DEFAULT_CONFIG = {
     temperature: 0.5,
     max_tokens: 2000,
     presence_penalty: 0,
+    frequency_penalty: 0,
     sendMemory: true,
     historyMessageCount: 4,
     compressMessageLengthThreshold: 1000,
@@ -150,6 +151,9 @@ export const ModalConfigValidator = {
   presence_penalty(x: number) {
     return limitNumber(x, -2, 2, 0);
   },
+  frequency_penalty(x: number) {
+    return limitNumber(x, -2, 2, 0);
+  },
   temperature(x: number) {
     return limitNumber(x, 0, 1, 1);
   },