From 318b9e0bc1e8e2a33d0fec560a62fb4bf044fedf Mon Sep 17 00:00:00 2001 From: Mark Chen <9006264+Mark9804@users.noreply.github.com> Date: Tue, 11 Jun 2024 22:41:44 +0900 Subject: [PATCH] =?UTF-8?q?refact(toolbox):=20=E5=89=A7=E6=83=85=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E5=85=A8=E9=83=A8=E8=B0=83=E7=94=A8=20Claude?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/TranslationPane.vue | 41 ++++++++++--------- .../helper/AnthropicTranslationService.ts | 27 ++++++++++-- 2 files changed, 45 insertions(+), 23 deletions(-) diff --git a/apps/ba-online-toolbox/src/tools/ScenarioEditor/components/TranslationPane.vue b/apps/ba-online-toolbox/src/tools/ScenarioEditor/components/TranslationPane.vue index 2db491a5..8f170f10 100644 --- a/apps/ba-online-toolbox/src/tools/ScenarioEditor/components/TranslationPane.vue +++ b/apps/ba-online-toolbox/src/tools/ScenarioEditor/components/TranslationPane.vue @@ -102,11 +102,11 @@ 规范符号 - 重新翻译 + > --> { const text = currentText.value ?.replaceAll("#n", "[#n]") ?.replaceAll(/\[.*?\]/g, ""); - translate( - text, - translateHash[config.getLanguage], - translateHash[config.getTargetLang] - ) - .then(res => { - config.setTmpMachineTranslate( - currentText.value, - halfToFull((res.translation || [])[0] ?? "") - ); - }) - .catch(err => { - console.log(err); - }); + handleLLMTranslateRequest(0) + // translate( + // text, + // translateHash[config.getLanguage], + // translateHash[config.getTargetLang] + // ) + // .then(res => { + // config.setTmpMachineTranslate( + // currentText.value, + // halfToFull((res.translation || [])[0] ?? "") + // ); + // }) + // .catch(err => { + // console.log(err); + // }); } }; @@ -322,7 +323,9 @@ let llmLastCalled = 0; const llmLoading = ref(false); const studentNames = computed(() => config.getStudentList); -function handleLLMTranslateRequest() { +function handleLLMTranslateRequest( + model: 0 | 1 | 2 | "haiku" | "sonnet" | "opus" = 0 +) { if (config.getSelectLine !== -1) { if (Date.now() - llmLastCalled < 5000) { ElMessage({ @@ -337,7 +340,7 @@ function handleLLMTranslateRequest() { const text = mainStore.getScenario.content[config.getSelectLine][config.getLanguage]; - getClaudeTranslation(text) + getClaudeTranslation(text, model) .then((res: ClaudeMessage) => { const rawText = res.content[0].text ?? ""; const fullWidthText = halfToFull(rawText); diff --git a/apps/ba-online-toolbox/src/tools/public/helper/AnthropicTranslationService.ts b/apps/ba-online-toolbox/src/tools/public/helper/AnthropicTranslationService.ts index 6b121099..2e7202c7 100644 --- a/apps/ba-online-toolbox/src/tools/public/helper/AnthropicTranslationService.ts +++ b/apps/ba-online-toolbox/src/tools/public/helper/AnthropicTranslationService.ts @@ -38,8 +38,7 @@ const instance = axios.create({ }); const rag_request = { - // model: "claude-3-haiku-20240307", - model: "claude-3-opus-20240229", + model: "", max_tokens: 1000, temperature: 0, system: @@ -107,7 +106,25 @@ const rag_request = { ], }; -function getClaudeTranslation(input: string) { +const models = [ + { + modelName: "claude-3-haiku-20240307", + alias: [0, "haiku"], + }, + { + modelName: "claude-3-haiku-20240307", + alias: [1, "sonnet"], + }, + { + modelName: "claude-3-opus-20240229", + alias: [2, "opus"], + }, +]; + +function getClaudeTranslation( + input: string, + model: 0 | 1 | 2 | "haiku" | "sonnet" | "opus" = 0 +) { // const test = { // content: [ // { @@ -119,6 +136,8 @@ function getClaudeTranslation(input: string) { // return new Promise(resolve => resolve(test)); + rag_request.model = (models.find(el => el.alias.includes(model)) || models[0]).modelName + const error_message = { content: [{ type: "text", text: "" }] }; if (input && input.length < 10) { @@ -128,7 +147,7 @@ function getClaudeTranslation(input: string) { } if (!ANTHROPIC_TIER1_SECRET || ANTHROPIC_TIER1_SECRET.length === 0) { - error_message.content[0].text = "找不到Anthropic API Key"; + error_message.content[0].text = "找不到 Anthropic API Key"; return new Promise(resolve => resolve(error_message)); }