LangChain链未按预期运行:仅改写文本未完成翻译求助
技术解决方案:LangChain链未执行翻译操作的问题
核心问题分析
你的链仅完成文本改写未执行翻译,核心原因是系统提示指令模糊,加上拼写错误、参数传递冗余导致LLM未接收到清晰的双重任务要求:
- 系统提示中的
file_content可能仅包含改写规则,未明确要求将改写结果翻译成目标语言 - 第二个系统提示存在拼写错误(
reprahsed→rephrased),且指令未明确“改写+翻译”的双重任务 - 传递给
language参数的是带标注的语言名称(如Czech (CZ)),增加了LLM识别目标语言的额外负担
具体修复步骤
1. 修正系统提示,明确双重任务
改写系统提示,清晰告知LLM需要先完成文本改写,再将结果翻译成指定语言,同时修正拼写错误:
prompt = ChatPromptTemplate.from_messages( [ ("system", file_content), # 确保file_content包含改写规则,比如"请先对汽车审计报告进行措辞优化,使其表达更专业流畅" ("system", "After rephrasing the car audit report, translate the rephrased content into {language}."), ("user", "\n{input}"), ] )
如果file_content为英文指令,建议统一用英文表述,避免混合语言导致LLM混淆。
2. 优化语言参数传递
直接传递纯语言名称或代码,减少LLM识别冗余信息的成本:
# 修改language_options,值为纯语言名称 language_options = { "cs": "Czech", "sk": "Slovak", "en": "English", "de": "German", "it": "Italian", "pl": "Polish", "ro": "Romanian", "sq": "Albanian" } # 调用链时传递优化后的语言参数 answer = chain.invoke({"input": user_input, "language": selected_language})
3. 合并提示强化任务清晰度(可选)
若LLM仍未执行翻译,可合并系统提示,用更直白的方式明确任务:
prompt = ChatPromptTemplate.from_messages( [ ("system", """ 请完成以下两项任务: 1. 对用户提供的汽车审计报告进行措辞改写,提升文本专业性与流畅度 2. 将改写后的内容翻译成{language}语言 最终仅需输出翻译完成的改写文本 """), ("user", "\n{input}"), ] )
4. 验证LLM语言支持能力
确认你使用的LLM(如GPT、Claude等)支持目标语言的翻译功能,避免因模型本身限制导致翻译未执行。
内容的提问来源于stack exchange,提问作者Stanislav Jirak CZ
相关产品推荐
相关产品推荐

