You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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' } } ]

问题定位

  1. 提示词指令逻辑模糊:提示词同时要求翻译和替换代码,但未明确优先级,模型优先执行了更简单的代码替换操作,忽略了翻译任务;
  2. 强制函数调用限制:设置function_call: { name: "set_schema" }强制模型调用指定函数,可能导致模型仅关注输出符合schema结构,而未处理翻译需求;
  3. 系统提示过于通用:默认的"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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 06:15:25