源文件:chapter10/book-translation/README.md 实验 10-3:书籍翻译 Agent —— 管理者模式(Orchestration) 配套代码,演示如何用管理者模式把长文档翻译拆给多个专职 Agent。核心是 上下文隔离与控制 Manager 上下文膨胀:Manager 只保存任务、计划、各 Agent 调用记录和文件索引,完整译文全部落盘到文件系统,因此无论书有多长, Manager 的上下文都基本恒定。 目的 对比「单 Agent 一条对话翻完整本书」与「管理者模式多 Agent 协作」两种方案,用 真实 token 数说明后者如何控制主/Manager 上下文膨胀,并用共享术语表保证 全书术语一致。
源文件:chapter10/book-translation/README.md
配套代码,演示如何用管理者模式把长文档翻译拆给多个专职 Agent。核心是
上下文隔离与控制 Manager 上下文膨胀:Manager 只保存任务、计划、各
Agent 调用记录和文件索引,完整译文全部落盘到文件系统,因此无论书有多长,
Manager 的上下文都基本恒定。
对比「单 Agent 一条对话翻完整本书」与「管理者模式多 Agent 协作」两种方案,用
真实 token 数说明后者如何控制主/Manager 上下文膨胀,并用共享术语表保证
全书术语一致。
| Agent | 输入(独立上下文) | 产出 | 上下文特点 |
|---|---|---|---|
| Glossary Agent | 全书内容 | 结构化术语表 glossary.json |
读全书,产出后即释放 |
| Translation Agent | 当前章节 + 术语表 + 翻译指南 | chapterN_zh.md |
每章一个独立实例,只看到自己这一章 |
| Proofreading Agent | 所有译文 + 术语表 | 审校报告 proofreading_report.json |
做一致性 / 流畅性检查 |
| Manager Agent | 任务 + 文件索引 + 报告摘要 | 调度决策(是否发回修订) | 只存元信息,不存正文 |
数据流:Manager 调度 Glossary → 逐章 Translation(共享同一份术语表文件)→
Proofreading → Manager 依据报告决定是否把个别章节发回 Translation 修订。译文与
术语表都通过文件系统传递,Manager 只在上下文里保存文件路径。
关键设计:Manager 把「编辑部指定术语」(house style,如 token→词元、
prompt→提示词、latency→时延)强制写入共享术语表,下发给每个 Translation Agent,
从而把指定译法贯彻到全书。单 Agent 看不到术语表,只能用自己的默认译法。
book-translation/ ├── agents.py # 四种 Agent + 两种运行方式 + token 追踪 ├── consistency.py # 术语一致性 / 术语表遵从率(确定性字符串匹配) ├── demo.py # 一键演示:跑管理者模式 + 单 Agent 对照,打印对比表 ├── sample_book/ # 自带英文技术小书(4 个短章节,含术语与代码) │ ├── chapter1.md ... chapter4.md ├── output/ # 运行时生成:术语表 / 各章译文 / 审校报告(已 gitignore) ├── requirements.txt └── env.example
pip install -r requirements.txt cp env.example .env # 填入 OPENAI_API_KEY python demo.py
python demo.py 会先打印四 Agent 协作的实时轨迹(Manager 制定计划 → 调度
Glossary → 逐章 Translation → Proofreading → 依报告决定修订),再打印各 Agent 的
token 消耗与管理者模式 vs 单 Agent 的核心对比表。
gpt-5.6-luna(当前便宜旗舰),可用 OPENAI_MODEL 覆盖;如需自建/代理端点,设 OPENAI_BASE_URL。OPENAI_API_KEY 直连 OpenAI;若未设置该变量但设了OPENROUTER_API_KEY,则自动改走 OpenRouter,并把模型名映射到其命名空间gpt-5.6-luna → openai/gpt-5.6-luna)。提示:gpt-5.6 系列直连 OpenAI 需组织验证,OPENROUTER_API_KEY(不填 OPENAI_API_KEY)即可强制走 OpenRouter,更省事。python demo.py --help)| 参数 | 作用 | 默认 |
|---|---|---|
--dry-run |
离线预演:只画四 Agent 协作图、Manager 计划、编辑部术语与各 Agent 的 token 预算,不调用任何 API、无需 Key | 关闭 |
--sample-dir DIR |
待翻译书籍目录(读取其中 *.md,按文件名排序) |
sample_book/ |
--out-dir DIR |
产物根目录(其下再分 orchestration/、single_agent/) |
output/ |
--source-lang LANG / --target-lang LANG |
源 / 目标语言(仅影响提示词措辞) | 英文 / 中文 |
--no-glossary |
关闭 Glossary Agent(仅保留编辑部指定术语) | 启用 |
--no-proofreading |
关闭 Proofreading Agent 与 Manager 修订闭环 | 启用 |
--model MODEL |
临时覆盖模型(等价于设 OPENAI_MODEL) |
gpt-5.6-luna |
--skip-single |
只跑管理者模式,跳过单 Agent 对照组 | 关闭 |
注意:内置的术语一致性 / 遵从率统计(
consistency.py)针对 英文→中文 调校;
改翻译方向仍可正常翻译,但该统计表意义有限。
无 Key / 离线快速查看架构:
python demo.py --dry-run # 打印四 Agent 协作图 + Manager 计划 + token 预算,不联网
该模式用 tiktoken 离线估算各 Agent 会读到的上下文规模,直观印证「Manager 上下文
只随章节数加几行记录、与每章正文长度无关」,而单 Agent 的累积上下文随书长线性膨胀。
tiktoken 统计的 token 数峰值 —— 它从不包含完整译文。| 指标 | 管理者模式 | 单 Agent |
|---|---|---|
| 主/Manager 上下文峰值 (tokens) | 697 | 2320 |
| Manager LLM 决策调用上下文 (tokens) | 783 | — |
| 全流程总 token | 11849 | 6886 |
| 术语内部一致率 | 100% | 89% |
| 指定术语遵从率 | 100% | 53% |
| 参与 Agent 种类数 | 4 | 1 |
说明:术语一致性用确定性字符串匹配统计(见
consistency.py),不是让模型自评。
具体数字每次运行会有小幅波动,但上述量级与结论稳定复现。
gpt-5.6-luna 上验证;换更强/更弱的模型,两种模式的差距会变化——越强的consistency.py),不是模型自评,