翻译质检:跨模型回译与语义漂移分级
官方 cookbook 示例
- 行业
- 营销与客服 · 翻译质检
- 来源
- open-multi-agent 官方 cookbook
- 当前阶段
- 可运行示例
这是 open-multi-agent 官方 cookbook 示例,由元定义维护。它用三个 Agent 做一次翻译质检:Claude 把四段英文技术短文译成简体中文,另一家供应商的模型把译文回译成英文,第三个 Agent 逐段比对原文与回译,输出带漂移等级和说明的 JSON 表。
场景
典型场景:技术文档、产品说明或合同条款要出多语种版本,审校人员往往不懂目标语言,只能看译文是否通顺。回译是本地化行业常用的核对办法:把译文再译回原语言,与原文对照,意思偏了的段落就会显出来。回译如果交给做翻译的同一个模型,它容易沿用自己的译法,偏差反而看不出来。
这个示例演示的是把翻译、回译、比对拆给三个 Agent,并让回译换一家模型供应商:每一步都按 Zod schema 产出结构化 JSON,下一步直接读上一步的字段,最后得到一张逐段的漂移表,可以接进后续的人工复核或自动化流程。
方案
| 角色 | 任务 DAG | 工具 | 模型 | 部署形态 |
|---|---|---|---|---|
| translator | 第 1 步:英文 → 简体中文,按段落编号逐段输出 | 未声明 | claude-sonnet-4-6 / anthropic | npx tsx 单次运行的本地脚本 |
| backtranslator | 第 2 步:读第 1 步的译文,回译成英文,保留段落编号 | 未声明 | gemini-2.5-pro / gemini(设了 GEMINI_API_KEY 时);否则 gpt-5.4 / openai,可用 OPENAI_MODEL 覆盖 | 同上 |
| reviewer | 第 3 步:按编号合并原文、译文、回译,逐段判定 drift_severity | 未声明 | claude-sonnet-4-6 / anthropic | 同上 |
表中模型为示例仓库的默认配置;实际选型在方案阶段按场景确定。
三个 Agent 放进 new AgentPool(1),由脚本依次调用 pool.run(),前一步的结构化结果拼进下一步的提示词;三者都设 temperature: 0、maxTurns: 1。回译方的选择写在代码里:有 GEMINI_API_KEY 优先用原生 Gemini,否则走 OpenAI,并读取 OPENAI_BASE_URL。
每个 Agent 配一个 Zod schema 作为 outputSchema:译文批次、回译批次、漂移表(每行含 original、translation、backtranslation、drift_severity、notes)。框架在 agent.ts 里先抽取 JSON 再校验,第一次不合 schema 时把校验错误回填给模型再试一次,仍不合格则该步返回失败。
脚本用 buildAgent() 注册了内置工具,但三个 Agent 都未声明 tools 或 toolPreset;OMA 的工具授权默认拒绝(src/tool/grants.ts:没有正向授权则解析为零个内置工具),这条流水线因此只做模型调用。待译原文是脚本里内联的四段英文,按空行切成带编号的段落。
结果
可运行产物与验证方式:
需要两家供应商的 API key。脚本头部写明前置条件是 ANTHROPIC_API_KEY,再加 GEMINI_API_KEY 或 OPENAI_API_KEY 中的一个;运行命令 npx tsx packages/core/examples/cookbook/translation-backtranslation.ts。
缺 key 时直接跳过。条件不满足会打印 [skip] This example needs ANTHROPIC_API_KEY plus GEMINI_API_KEY or OPENAI_API_KEY. 并以退出码 0 结束。
运行时先打印段落数与两侧所用的供应商和模型,再依次打印 [1/3]、[2/3]、[3/3] 三步进度。任一步未成功或没有拿到结构化结果,打印 Agent A / B / C failed: 及模型原始输出,并以退出码 1 结束。
最终产物是漂移表。成功时打印 FINAL DRIFT TABLE 下的 JSON 数组,每段一行,含原文、译文、回译、none / minor / major 三档之一的漂移等级和说明;随后按 Agent 列出 input / output token 数及合计,最后打印 Done.。
示例原文是脚本内联的四段英文技术短文(CI/CD、可观测性、schema 校验、跨模型校验),为演示而写;译文、回译和漂移判定都是模型生成的文本,供演示与验证流程使用。
出处
| 来源 | 链接 | 核实日期 |
|---|---|---|
| packages/core/examples/cookbook/translation-backtranslation.ts(commit 2f1d0ff) | https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/examples/cookbook/translation-backtranslation.ts ↗ | |
| packages/core/examples/README.md cookbook 条目(commit 2f1d0ff) | https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/examples/README.md ↗ | |
| packages/core/examples/catalog.json(commit 2f1d0ff) | https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/examples/catalog.json ↗ | |
| packages/core/src/agent/agent.ts(outputSchema 校验与一次纠错重试,commit 2f1d0ff) | https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/src/agent/agent.ts ↗ | |
| packages/core/src/tool/grants.ts(工具授权默认拒绝,commit 2f1d0ff) | https://github.com/open-multi-agent/open-multi-agent/blob/2f1d0ff/packages/core/src/tool/grants.ts ↗ |
与元定义的关系
本页素材是 open-multi-agent 官方仓库里的 cookbook 示例,由元定义维护。
如果你手上有一条真实的多语种翻译或本地化审校流程,要让不同供应商的模型互相核对译文,把漂移段落交给人工复核,并接进你自己的术语库与发布系统,元定义对应的服务是 AI Agent 定制开发 →
最后更新
想知道类似的流程在你这边怎么落地?