LongWriter: Unleashing 10,000+ Word Generation from Long Context LLMs
- arXiv: 2408.07055(2024-08;相关工作发表于 ICLR 2025)
- 作者: Yushi Bai, Jiajie Zhang, Xin Lv, Linzhi Zheng, Siqi Zhu, Lei Hou, Yuxiao Dong, Jie Tang, Juanzi Li(清华 THUDM)
- 代码: https://github.com/THUDM/LongWriter
- 类型: 长输出数据合成 + 训练
- 一句话: 发现 LLM 写不长的根因是"SFT 数据里就没有长样本",用 AgentWrite 分治合成超长训练数据,SFT+DPO 后让 9B 模型稳定生成一万字以上,是长文写作绕不开的工程基石。
1. 要解决的问题
长上下文 LLM 能读 10 万 token,却写不过 2000 词。作者定位根因:模型的有效生成长度受限于它在 SFT 阶段见过的最长样本 —— 训练数据里没有长输出,模型自然学不会写长。
2. 方法 / 核心思路
AgentWrite(分治式长文合成 pipeline)
把"写一篇超长文"拆成可管理的子任务:先规划大纲 → 逐段生成 → 拼接,用现成 LLM即可产出 2 万词以上的连贯长文,无需改架构。用它来批量合成训练数据。
LongWriter-6k 数据集
用 AgentWrite 造出 6,000 条 SFT 样本,输出长度覆盖 2k–32k 词,补上了通用 SFT 数据缺失的"长输出"分布。
训练
标准 SFT 融入 LongWriter-6k,再加 DPO 提升质量与指令遵从。
LongBench-Write 基准
配套评测超长生成能力(长度遵从 + 质量)。
3. 数据与实验
- 数据:LongWriter-6k(2k–32k 词)。
- 评测:LongBench-Write。
4. 主要结果
- 9B 参数模型在 LongBench-Write 上达到 SOTA,超过体量大得多的闭源模型,且能在万字以上保持质量。
- 证明"解锁长输出"主要靠数据(长样本 SFT),而非更大的模型或改架构。
5. 局限
- AgentWrite 合成数据的质量上限受生成它的 LLM 影响。
- 侧重"长度 + 遵从",文学性/情节深度不是其主攻点(那是 [[05_book_writing_capability]] 之类的目标)。
6. 对做产品 / 工程的启发
- 想让模型写长,先检查训练/微调数据里有没有长样本 —— 这是最被低估的一招。
- AgentWrite 的分治合成可直接复用来给自家模型造长文 SFT 数据。
- LongBench-Write 可作为"长度遵从度"的现成回归测试。
关联
- AgentWrite 分治思想是 [[02_from_personas_to_plot_magnet]]、[[10_storywriter]] 等多智能体/分段生成的前身。
- 与 [[05_book_writing_capability]] 互补:一个解决"写得够长",一个解决"写得像文学"。
- 长度遵从评测与评估方向的 [[22_hellobench]]、[[20_writingbench]] 相关。