feat: the temperature and maxTokens of the openai can be configured
This commit is contained in:
@@ -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 = {
|
||||||
|
|||||||
@@ -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,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user