← 返回案例
发布:整理:元定义科技(YuanASI)翻译质检回译跨模型校验结构化输出open-multi-agent

翻译质检:跨模型回译与语义漂移分级

官方 cookbook 示例

行业
营销与客服 · 翻译质检
来源
open-multi-agent 官方 cookbook
当前阶段
可运行示例
这是 open-multi-agent 官方 cookbook 示例,由元定义维护。它用三个 Agent 做一次翻译质检:Claude 把四段英文技术短文译成简体中文,另一家供应商的模型把译文回译成英文,第三个 Agent 逐段比对原文与回译,输出带漂移等级和说明的 JSON 表。

场景

典型场景:技术文档、产品说明或合同条款要出多语种版本,审校人员往往不懂目标语言,只能看译文是否通顺。回译是本地化行业常用的核对办法:把译文再译回原语言,与原文对照,意思偏了的段落就会显出来。回译如果交给做翻译的同一个模型,它容易沿用自己的译法,偏差反而看不出来。

这个示例演示的是把翻译、回译、比对拆给三个 Agent,并让回译换一家模型供应商:每一步都按 Zod schema 产出结构化 JSON,下一步直接读上一步的字段,最后得到一张逐段的漂移表,可以接进后续的人工复核或自动化流程。

方案

角色任务 DAG工具模型部署形态
translator第 1 步:英文 → 简体中文,按段落编号逐段输出未声明claude-sonnet-4-6 / anthropicnpx 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 定制开发

最后更新

想知道类似的流程在你这边怎么落地?