OpenAI API GPT-3.5土译日输出异常问题排查求助
土耳其语转日语翻译未生效问题排查与解决
问题概述
使用OpenAI API的GPT-3.5-turbo-16k模型处理土耳其语JSON数据翻译时,仅完成了语言代码"tr"到"ja"的替换,但土耳其语内容未被翻译成日语,原词保留。
相关代码与配置
代码片段
const { Configuration, OpenAIApi } = require("openai"); const { getLanguageString } = require('../../../helpers/auto_translate_helpers'); async function gptTranslateHelper(chunks, schema, target_language) { const responseData = []; const configuration = new Configuration({ apiKey: process.env.OPENAI_API_KEY, }); const openai = new OpenAIApi(configuration); try { for (const chunk of chunks) { const userMessage = { "role": "user", "content": `I am a restaurant owner and I manage my data in Turkish.My data : ${chunk.data} Please translate my data to ${getLanguageString(target_language)}. Replace all occurrences of "TR" with ${target_language}. `, }; const completion = await openai.createChatCompletion({ model: "gpt-3.5-turbo-16k", messages: [ { "role": "system", "content": "You are a helpful assistant." }, userMessage, ], functions: [{ name: "set_schema", parameters: schema }], function_call: { name: "set_schema" }, }); const generatedText = completion.data.choices[0].message.content; const parsedMenu = JSON.parse(generatedText); responseData.push(...parsedMenu.data); } } catch (e) { console.log(e); } console.log(responseData); return responseData; } module.exports = { gptTranslateHelper };
调用提示词
I am a restaurant owner and I manage my data in Turkish.My data : [{"_id":"64adce3a897a661ba27dcc4b","name":{"tr":"Yemekler"}},{"_id":"64adce44897a661ba27dcc4c","name":{"tr":"İçecekler"}}] Please translate my data to Japanese. Replace all occurrences of "tr" with ja.
错误输出结果
[ { _id: '64adce3a897a661ba27dcc4b', name: { ja: 'Yemekler' } }, { _id: '64adce44897a661ba27dcc4c', name: { ja: 'İçecekler' } } ]
问题定位
- 提示词指令逻辑模糊:提示词同时要求翻译和替换代码,但未明确优先级,模型优先执行了更简单的代码替换操作,忽略了翻译任务;
- 强制函数调用限制:设置
function_call: { name: "set_schema" }强制模型调用指定函数,可能导致模型仅关注输出符合schema结构,而未处理翻译需求; - 系统提示过于通用:默认的"You are a helpful assistant."未明确告知模型需要同时完成翻译与结构转换的双重任务。
解决方案
1. 优化提示词,明确任务顺序
将提示词修改为清晰的指令流程,先要求翻译内容,再替换语言代码:
我是餐厅经营者,数据使用土耳其语。请先将以下数据中的所有土耳其语内容翻译成日语,再把所有语言代码"tr"替换为"ja",输出保持原JSON结构: [{"_id":"64adce3a897a661ba27dcc4b","name":{"tr":"Yemekler"}},{"_id":"64adce44897a661ba27dcc4c","name":{"tr":"İçecekler"}}]
2. 调整函数调用策略
取消强制函数调用,让模型自主判断如何结合翻译需求输出符合schema的结果:
const completion = await openai.createChatCompletion({ model: "gpt-3.5-turbo-16k", messages: [ { "role": "system", "content": "你是专业的翻译助手,需将土耳其语数据翻译成日语,同时保持指定的JSON结构。" }, userMessage, ], functions: [{ name: "set_schema", parameters: schema }], // 移除强制调用,改为让模型自主选择 function_call: "auto", });
3. 增强系统提示的针对性
将系统提示修改为明确的任务导向:
{ "role": "system", "content": "你需要完成两项任务:1. 将输入中的所有土耳其语文本翻译成准确的日语;2. 将JSON中的语言代码\"tr\"替换为\"ja\",最终输出必须符合指定的schema结构。" }
修改后预期输出
[ { _id: '64adce3a897a661ba27dcc4b', name: { ja: '料理' } }, { _id: '64adce44897a661ba27dcc4c', name: { ja: '飲み物' } } ]
内容的提问来源于stack exchange,提问作者Ahmet Aydın
相关产品推荐
相关产品推荐

