Agents' Room: Narrative Generation through Multi-step Collaboration
- arXiv/venue: 2410.02603(2024-10;ICLR 2025 会议论文,OpenReview HfWcFs7XLR)
- 作者: Fantine Huot, Reinald Kim Amplayo, Jennimaria Palomaki, Alice Shoshana Jakobovits, Elizabeth Clark, Mirella Lapata(Google DeepMind)
- 类型: 受叙事理论启发的多智能体协作写作框架(本领域"多 agent 写故事"的奠基/最常被引基线)
- 一句话: 把写故事拆成"规划 agent(冲突/人物/设定/情节)+ 写作 agent(铺垫/上升/高潮/下降/结局)",经 orchestrator 调度、共享 scratchpad 协作,产出比端到端基线更受专家青睐的长故事,并配套发布 Tell Me A Story 数据集与评测框架。
1. 要解决的问题
写好长篇小说是多面工程(情节、人物、语言…),但 LLM 目前重度依赖复杂 prompt,且单次生成难以维持长文的连贯、语气、事实一致,也难写出独特声音;同时缺长文写作数据集与标准化评测。作者主张把长文写作看成多智能体协作问题(而非在单 agent 内做分解),借专门化 + 协作把复杂写作拆成可处理的子任务。目标故事长度 1,000–2,000 tokens。
2. 方法 / 核心思路
框架(Algorithm 1)由 orchestrator + scratchpad + 两类 agent 构成:
2.1 两类 agent(灵感来自叙事理论 Freytag 金字塔)
- 规划 agent(4 个,只写进 scratchpad、不进最终稿):
- [CONFLICT] 中心冲突(主角目标/动机/阻碍)
- [CHARACTER] 人物(外形/口吻/动机/缺陷/成长)
- [SETTING] 设定(地点/时代/时间跨度)
- [PLOT] 关键情节点
- 写作 agent(5 个,逐段拼出最终稿):[EXPOSITION] 铺垫 → [RISING ACTION] 上升 → [CLIMAX] 高潮 → [FALLING ACTION] 下降 → [RESOLUTION] 结局。分段写正是解决"单次生成太短"的手段。
2.2 Orchestrator(编排器)
中心化、确定性调度,按固定顺序先调 4 个规划 agent(CONFLICT→CHARACTER→SETTING→PLOT)再调 5 个写作 agent。形式上是马尔可夫过程(下一步只依赖当前 scratchpad),也可换成学习式;本文因叙事理论先验强而用确定性版本。
2.3 Scratchpad(共享草稿板 / 记忆)
初始化为写作 prompt,每个 agent 输出(带唯一标签 l_t)追加进去传给下一个 agent;写作 agent 的输出还会拼进最终稿 y。标签让各 agent 能引用/解析特定片段、避免重复。agent 定义很泛(可以是 zero-shot prompt、微调 LLM、确定性函数,甚至人类),天然支持 human-in-the-loop。
2.4 变体与训练
- 变体:plan+write(完整)、plan(仅规划 + 一个简单 [FINALIZER] 收尾)、write(仅写作);每种又分 ZS(zero-shot) 与 FT(fine-tuned)。
- 合成数据训练(蒸馏式反向翻译 / distilled backtranslation):用大 teacher(Gemini Ultra)从"prompt+人写故事"反推出各规划 agent 的输出、并把故事切成 5 段,得到各 agent 的合成训练数据(比从零生成更简单,只需逆向工程)。backbone 用 Gemini 1.5 Flash,LoRA 微调(rank 4, lr 1e-6, 250 步)。
3. 数据与实验
- Tell Me A Story 数据集:通过写作工作坊(28 名写手,自拟 prompt→初稿→同侪反馈→修订→坊主终审,平均 3–4 周)收集。规模小:训练 123 / 验证 52 / 测试 55;平均输入 prompt 113 tokens、目标故事 1,498 tokens(远长于 WritingPrompts 的 735、且 prompt 更详细)。题材以科幻/奇幻为主,兼有恐怖、剧情、喜剧、冒险、民俗。
- 评测框架:人评成对偏好,4 维——Plot / Creativity / Development / Language Use + 总体偏好,3 点量表(A 好 / 差不多 / B 好),Latin Square 分配、随机呈现顺序,用 Bradley-Terry 折算系统强度。共收集 9,900 对评分,Fleiss' κ=0.46。另有 LLM 评委(Gemini 1.5 Pro)做同维度 side-by-side,及表面/参考指标(长度、独特词比、trigram 重复、Rouge-L、BertScore)。
- 基线:端到端 E2E(ZS/FT)、E2E+plan、E2E+reflect、E2E+decompose、2STAGE decompose。
4. 主要结果(带数值 vs baseline)
长度与文风(Table 2):含写作 agent 的变体故事显著更长(约翻倍)——AR_ZS write 约 3,278 词、AR plan+write 约 3,034 词,而 E2E 仅约 1,207 词、人写 1,439 词。Agents' Room 与 prompt 的 trigram 重叠最低(最少照抄、接近人类水平)。
偏好排名(Figure 3,人评 + LLM 评委): - 人写故事总体最优(各维度都有差距,但语言维度差距最小——提示 LLM 已可当写作助手)。 - Agents' Room(带写作 agent 的变体)在所有维度都优于基线系统,其中 AR_FT write 与 AR_FT plan+write 最好;微调 agent 优于 zero-shot(证明反向翻译造合成数据有效)。仅有规划的 plan 变体较弱(单个 [FINALIZER] 太简单,用不好规划内容)。 - LLM 评委胜率(Table 3,AR_ZS plan+write vs 基线,overall/plot/creativ/develop/language):vs E2E_ZS+plan 74.55 / 63.64 / 75.47 / 75.93 / 81.13;vs E2E_ZS+decompose 高达 89.09 / 80.00 / 87.04 / 90.91 / 90.91;vs 2STAGE decompose 66.67。换小模型 Gemma2-9B-it 时(Table 4)AR vs E2E_ZS 仍 80.00 / 67.27 / 84.62 / 83.33 / 77.78。 - LLM 评委与人评一致:系统级 Spearman ρ=0.62、条目级 ρ=0.41;发展维 ρ=0.83、创意维 ρ=0.85;LLM 换序复评 90.2% 保持同一偏好。 - 偏好非因更长:人评"更长者被选"的比例仅约 0.51。
5. 局限
- 数据集极小(123/52/55),不足以从零训练,只能靠合成数据 + LoRA。
- orchestrator 是确定性、固定叙事结构(仅 Freytag 五段式),未探索更丰富结构或学习式编排(作者列为 future work,需先有好的评测/奖励模型)。
- 仍显著逊于人类作者(各维度有差距);参与者反馈指出模型有"套路化词汇、整段重复、突兀语气切换、七年级写作水平"等问题。
- 实验主要用 Gemini 1.5 Flash(受长上下文+写作质量要求所限),未大规模跨模型验证。
6. 对做产品 / 工程的启发
- "规划 agent + 写作 agent + orchestrator + scratchpad"是长写作产品的经典骨架:规划只写草稿板不进正文、写作 agent 逐段成稿,职责清晰、易插 human-in-the-loop(任何 agent 都可换成人)。
- scratchpad 用带标签的共享记忆 传递中间产物,既让下游 agent 精确引用、又避免重复,是简单有效的多 agent 通信机制。
- 分段写作直接解决"单次生成太短":把 Freytag 五段分给五个 agent,长度约翻倍——这条经验被后续大量工作(含 [[10_storywriter]])沿用。
- 蒸馏式反向翻译造训练数据:从"成品故事"逆推各 agent 的中间输出来做 SFT,比从零标注便宜得多,适合数据稀缺的创意写作。
- 评测方法论可直接借用:4 维成对偏好 + Bradley-Terry + 校准良好的 LLM 评委(与人评 ρ≈0.62、复评一致率 90%),可作为长文写作产品的自动评测底座。
- 数据集与评测已开源(github.com/google-deepmind/tell_me_a_story)。
关联
- 本篇是本批多篇的共同基线/思想源头:[[10_storywriter]]、[[11_storybox]] 都把它当直接对比对象(并指出其故事偏短、1–2k 词、结构较僵)。
- planning/writing agent 的分工被 [[12_cogwriter]](Planning+Generation agent)、[[13_muse]](Planner + 各阶段 Critic)继承与扩展。
- scratchpad 共享记忆思路与 [[03_dome]] 的 KG 记忆、[[02_from_personas_to_plot_magnet]] 的世界状态、[[01_lost_in_stories]] 的一致性追踪同属"外置记忆/状态"路线。
- 确定性五段式 orchestrator 与 [[04_codified_foreshadowing_payoff]] 的叙事结构编码可结合,向学习式/更丰富结构演进。