From 5d1d65c2d3bad3a30c184558ef1e597333eaa9fe Mon Sep 17 00:00:00 2001 From: Gabe Yuan Date: Tue, 21 May 2024 23:15:46 +0800 Subject: [PATCH] feat: the temperature and maxTokens of the openai can be configured --- src/apis/trans.js | 16 +++++++++++++--- src/config/index.js | 2 ++ src/libs/utils.js | 10 ++++++++++ src/views/Options/Apis.js | 31 ++++++++++++++++++++++++++++++- 4 files changed, 55 insertions(+), 4 deletions(-) diff --git a/src/apis/trans.js b/src/apis/trans.js index f06952f..ec34489 100644 --- a/src/apis/trans.js +++ b/src/apis/trans.js @@ -185,7 +185,17 @@ const genTencent = ({ text, from, to }) => { return [URL_TENCENT_TRANSMART, init]; }; -const genOpenAI = ({ text, from, to, url, key, prompt, model }) => { +const genOpenAI = ({ + text, + from, + to, + url, + key, + prompt, + model, + temperature, + maxTokens, +}) => { prompt = prompt .replaceAll(INPUT_PLACE_FROM, from) .replaceAll(INPUT_PLACE_TO, to); @@ -202,8 +212,8 @@ const genOpenAI = ({ text, from, to, url, key, prompt, model }) => { content: text, }, ], - temperature: 0, - max_tokens: 256, + temperature, + max_tokens: maxTokens, }; const init = { diff --git a/src/config/index.js b/src/config/index.js index 4b7ca10..1a030ef 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -500,6 +500,8 @@ const defaultOpenaiApi = { key: "", model: "gpt-4", prompt: `You will be provided with a sentence in ${INPUT_PLACE_FROM}, and your task is to translate it into ${INPUT_PLACE_TO}.`, + temperature: 0, + maxTokens: 256, fetchLimit: 1, fetchInterval: 500, }; diff --git a/src/libs/utils.js b/src/libs/utils.js index c53ad3a..d50e111 100644 --- a/src/libs/utils.js +++ b/src/libs/utils.js @@ -15,6 +15,16 @@ export const limitNumber = (num, min = 0, max = 100) => { return number; }; +export const limitFloat = (num, min = 0, max = 100) => { + const number = parseFloat(num); + if (Number.isNaN(number) || number < min) { + return min; + } else if (number > max) { + return max; + } + return number; +}; + /** * 匹配是否为数组中的值 * @param {*} arr diff --git a/src/views/Options/Apis.js b/src/views/Options/Apis.js index b762a60..15ec44a 100644 --- a/src/views/Options/Apis.js +++ b/src/views/Options/Apis.js @@ -38,7 +38,7 @@ import { useApi } from "../../hooks/Api"; import { apiTranslate } from "../../apis"; import Box from "@mui/material/Box"; import Link from "@mui/material/Link"; -import { limitNumber } from "../../libs/utils"; +import { limitNumber, limitFloat } from "../../libs/utils"; function TestButton({ translator, api }) { const i18n = useI18n(); @@ -121,6 +121,8 @@ function ApiFields({ translator }) { memoryNo = "", reqHook = "", resHook = "", + temperature = 0, + maxTokens = 256, } = api; const handleChange = (e) => { @@ -132,6 +134,12 @@ function ApiFields({ translator }) { case "fetchInterval": value = limitNumber(value, 0, 5000); break; + case "temperature": + value = limitFloat(value, 0, 2); + break; + case "maxTokens": + value = limitNumber(value, 0, 2 ** 15); + break; default: } updateApi({ @@ -225,6 +233,27 @@ function ApiFields({ translator }) { )} + {translator.startsWith(OPT_TRANS_OPENAI) && ( + <> + + + + )} + {translator === OPT_TRANS_NIUTRANS && ( <>