feat: the temperature and maxTokens of the openai can be configured

This commit is contained in:
Gabe Yuan
2024-05-21 23:15:46 +08:00
parent 0198963584
commit 5d1d65c2d3
4 changed files with 55 additions and 4 deletions

View File

@@ -185,7 +185,17 @@ const genTencent = ({ text, from, to }) => {
return [URL_TENCENT_TRANSMART, init]; 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 prompt = prompt
.replaceAll(INPUT_PLACE_FROM, from) .replaceAll(INPUT_PLACE_FROM, from)
.replaceAll(INPUT_PLACE_TO, to); .replaceAll(INPUT_PLACE_TO, to);
@@ -202,8 +212,8 @@ const genOpenAI = ({ text, from, to, url, key, prompt, model }) => {
content: text, content: text,
}, },
], ],
temperature: 0, temperature,
max_tokens: 256, max_tokens: maxTokens,
}; };
const init = { const init = {

View File

@@ -500,6 +500,8 @@ const defaultOpenaiApi = {
key: "", key: "",
model: "gpt-4", 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}.`, 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, fetchLimit: 1,
fetchInterval: 500, fetchInterval: 500,
}; };

View File

@@ -15,6 +15,16 @@ export const limitNumber = (num, min = 0, max = 100) => {
return number; 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 * @param {*} arr

View File

@@ -38,7 +38,7 @@ import { useApi } from "../../hooks/Api";
import { apiTranslate } from "../../apis"; import { apiTranslate } from "../../apis";
import Box from "@mui/material/Box"; import Box from "@mui/material/Box";
import Link from "@mui/material/Link"; import Link from "@mui/material/Link";
import { limitNumber } from "../../libs/utils"; import { limitNumber, limitFloat } from "../../libs/utils";
function TestButton({ translator, api }) { function TestButton({ translator, api }) {
const i18n = useI18n(); const i18n = useI18n();
@@ -121,6 +121,8 @@ function ApiFields({ translator }) {
memoryNo = "", memoryNo = "",
reqHook = "", reqHook = "",
resHook = "", resHook = "",
temperature = 0,
maxTokens = 256,
} = api; } = api;
const handleChange = (e) => { const handleChange = (e) => {
@@ -132,6 +134,12 @@ function ApiFields({ translator }) {
case "fetchInterval": case "fetchInterval":
value = limitNumber(value, 0, 5000); value = limitNumber(value, 0, 5000);
break; break;
case "temperature":
value = limitFloat(value, 0, 2);
break;
case "maxTokens":
value = limitNumber(value, 0, 2 ** 15);
break;
default: default:
} }
updateApi({ updateApi({
@@ -225,6 +233,27 @@ function ApiFields({ translator }) {
</> </>
)} )}
{translator.startsWith(OPT_TRANS_OPENAI) && (
<>
<TextField
size="small"
label={"Temperature"}
type="number"
name="temperature"
value={temperature}
onChange={handleChange}
/>
<TextField
size="small"
label={"Max Tokens"}
type="number"
name="maxTokens"
value={maxTokens}
onChange={handleChange}
/>
</>
)}
{translator === OPT_TRANS_NIUTRANS && ( {translator === OPT_TRANS_NIUTRANS && (
<> <>
<TextField <TextField