吴恩达翻译Agent开源复刻:Coze AI智能体实战
吴恩达不久前开源的翻译Agent项目引起了广泛关注。
这是一个Python项目,核心逻辑颇具巧思——通过“反思工作流”让AI主动回溯并修正自己刚完成的译文。这一机制精准解决了AI单次输出时容易忽略低级错误、细节把控不足的痛点。
本文基于Coze平台复刻该Agent,验证其实际落地效果。
先看运行效果:
流程概览
项目代码量不大,核心工作流用流程图可概括如下:
(流程图示意)
整体并不复杂,关键在于——让AI对自身翻译结果进行批判性反思。这条思路不仅适用于翻译,也值得迁移到其他AI工作流中。
完整的Coze工作流配置对应原始项目的每个节点,结构如下:
(Coze工作流节点截图)
说明:原项目对长文本按约1000 tokens分块处理,分块翻译后合并。本文为聚焦核心逻辑,暂时忽略长文本分块问题。
节点详解
开始节点
该节点定义工作流所需的输入参数。“国家语言习惯”为可选参数,其余均为必填项。
(开始节点参数配置截图)
AI首次翻译
此处“人设与回复逻辑”对应API调用时的system prompt,提示词直接取自开源项目源码。
(首次翻译节点的系统提示截图)
原始Prompt来自项目中的one_chunk_initial_translation函数。考虑到后续使用国内大模型,已将其翻译为中文,中文提示词更利于效果发挥。
system_message = f"你是一位精通从{source_lang}到{target_lang}翻译的语言学专家。"
translation_prompt = f"""这是从{source_lang}到{target_lang}的翻译任务,请为以下文本提供{target_lang}翻译。
除翻译内容外,不要提供任何解释或附加文本。
{source_lang}: {source_text}
{target_lang}:"""
AI反思节点
该节点根据“国家”参数是否存在,动态调整提示词细节。
(反思节点的系统提示截图)
原始Prompt来自one_chunk_reflect_on_translation函数。
system_message = f"你是一位精通从{source_lang}到{target_lang}翻译的语言学专家。你将获得原文和其译文,你的目标是改进译文。"
if country != "":
reflection_prompt = f"""你的任务是仔细阅读原文和译文,然后给出建设性的批评和有帮助的改进建议。
最终的翻译风格和语气应匹配{country}地区{target_lang}的口语表达习惯。
用XML标签 和 界定的原文和初始译文如下:
{source_text}
{translation_1}
在提出建议时,请关注以下几点:
(i) 准确性(纠正添加、误译、遗漏或未翻译文本的错误),
(ii) 流畅性(应用{target_lang}的语法、拼写和标点规则,确保没有不必要的重复),
(iii) 风格(确保译文反映原文风格并考虑文化背景),
(iv) 术语(确保术语使用一致并反映原文领域;只使用{target_lang}中对应的惯用语)。
写一份具体、有用且建设性的改进建议清单。
每条建议应针对译文的某一个具体问题。
只输出建议,不要输出其他内容。"""
else:
reflection_prompt = f"""你的任务是仔细阅读原文和译文,然后给出建设性的批评和有帮助的改进建议。
原文和初始译文由XML标签界定如上...
(其余提示词与上述类似,仅删除了关于具体国家口语风格的要求)"""
AI二次翻译节点
将原文、首次译文以及反思阶段生成的改进建议一并交给AI,由它进行二次编辑。
(二次翻译节点的系统提示截图)
原始Prompt来自one_chunk_improve_translation函数。
system_message = f"你是一位精通从{source_lang}到{target_lang}翻译编辑的语言学专家。"
prompt = f"""你的任务是仔细阅读原文和初始译文,然后根据专家建议和建设性批评,对译文进行编辑修改。
原文、初始译文和专家建议由XML标签 、 和 界定如下:
{source_text}
{translation_1}
{reflection}
请在编辑译文时,充分考虑专家建议。修改时需确保:
(i) 准确性,
(ii) 流畅性,
(iii) 风格,
(iv) 术语,
(v) 其他错误。
只输出新的译文,不要输出其他内容。"""
结束节点
结束节点直接输出二次翻译的结果,终止循环编辑。可附带一句提示告知用户翻译完成。
