今天没有产品发布
来聊一种方法
让任何模型,都能写万字长文
没错,堪称赛博德鲁伊:
Buff 拍上去,GPT-3.5 也能写万字报告
最近,Agent 圈神仙打架:
Manus 爆火、Fellou 接棒、扣子空间紧随其后…
这些项目各有特色,但都会掏出一个共同的 Demo:生成一篇长报告

长报告这东西,看起来平平无奇,实则难如登天。
你可以让 AI 写一下,然后发现:
开头不错,后面瞎扯
材料用了,重点没有
洋洋洒洒,言之无物
今天,我们要介绍的,是一个方法论:
拿结构当核心,多步生成,构建完整而清晰的长文
方法来自刚发的论文:
《LLM×MapReduce-V2: Entropy-Driven Convolutional Test-Time Scaling for Generating Long-Form Articles from Extremely Long Resources》
LLM×MapReduce-V2:用信息熵和卷积机制,指导大模型写出结构清晰的长文档所谓 v2,是因为之前有过 v1
名字很长,后面就叫它 MapReduce-V2,作者是清华 NLP、OpenBMB 和面壁团队。
论文:https://arxiv.org/abs/2504.05732
Git:https://github.com/thunlp/LLMxMapReduce/tree/main
你可以直接下来这个项目来用
对此,官方配了一个很抽象的 Demo,叫做卷姬,可以在这里试试:
https://surveygo.thunlp.org/
(卷姬用卷积…谐音梗扣钱啊喂)



总览:MapReduce-V2
MapReduce-V2 不复杂,不需要任何的特定模型,不需要进行微调,单纯就是一个流程优化,赛博Buff。
在这个方法中,不试图「一口气写完一万字」,而是按部就班、写完一段是一段,总计写出场文本。
包含三个主要步骤
1、Encode,准备素材
2、整理大纲,核心操作,包含摘要、提纲、结构优化
3、Decode,按结构逐段生成内容
太长不看版
整个方法,按流程有三段:
第一步,把主题变成可以处理的素材。
你可以把已有的资料扔进去,AI 会自动整理成统一格式;
当然,也可以什么都不给,就一句“如何变得更聪明”,它会自己拆关键词、去网上找内容、筛掉废话,最后拼出来可用素材。

第二步,出大纲,是核心操作。
在这一步中,AI 会先把材料都过一遍,按提纲分章节做摘要,同时备注建议;
接着,它用这些内容搭出一个初步大纲。
最后,再通过多轮优化,筛掉冗余、合并相近、拉直逻辑线,最后产出一份结构清晰、能指导写作的文章骨架。

最后一步,是写作
这一步中,AI 不会试图“一把写完”,而是人一样:
-
• 先挨个的写出各个章节 -
• 把章节串成文章 -
• 润色所有内容,配上图表、加上引用
最终,搞出一个「拼好文」

再长都看版
如果你想深度了解,可以接着往下看。
让我们硬核一点,细致些,包含了各种 Prompt 示例。
Encode:素材准备
对于素材准备,MapReduce-V2 支持两种输入方式:
-
• 其一,上传素材,AI 整理格式 -
• 其二,定主题,AI 自己搜

用户上传素材
用户侧,可以上传各种参考文献(包含标题、摘要、正文),AI 会统一格式,转化为结构化输入。
用户给定主题
这里,AI 会自动执行一套流程,把材料找齐,按一下步骤:
-
1. 利用 AI 做要点分拆,得到一系列搜索关键词; -
2. 通过搜索引擎获取相关网页; -
3. 异步爬取网页内容,过滤无关信息; -
4. 计算主题相似度、筛选高质量材料,最终选出最相关的 Top-N 文献。
**划重点 **
这一阶段的关键不在“找得多”,而在于“找得准”。
AI 不仅负责找内容,也要负责过滤内容,以确保输入材料可用性和结构性。
用到的主要 Prompt
# LLM_search prompts
SEARCH_SYSTEM_PROMPT_WITH_ABSTRACT="""您是一名行业研究专家,负责就 {topic} 的主题撰写一份综合报告。报告应遵守以下要求:{abstract}。要收集必要的信息,您需要进行在线调研。请生成一组搜索查询,帮助您检索报告的相关数据和见解。
"""
SEARCH_USER_PROMPT="""将当前查询中模糊的概念分解为更具体的子概念,以实现更精确的搜索。例如,“外国”可以进一步分解为在报告领域内具有代表性的特定国家或地区。
输出格式:
```markdown
query_1;
query_2;
...
```
"""
整理大纲:结构生成
AI 开始干活,从这一步开始,主要分三步:
1. Digest:结构化摘要
在这里,AI 会围绕着大钢结构,逐篇处理材料,针对性地生成摘要。
比如,假定大纲,在刚刚的“如何变得更聪明”里有一节是“什么是聪明”,它就只抽出「有关聪明」的信息来提炼。
同时它还会留下一串建议:这一节没有数据支撑,或者这一节可以分两块写。
用到的主要 Prompt
你是一个专业的学术助手...
# 背景
目前,你正在协助编写一篇学术综述报告。...
# 任务描述
**你的任务**是基于综述报告的预定义**大纲**,为提供的**参考文章**生成该摘要。你必须遵循每个部分的描述指引,从参考文章的完整内容中提取信息。最终生成的摘要将作为参考文章的代表性总结,便于在进一步的综述撰写过程中使用。此外,根据完整的文章,你还需要提供改进大纲质量的建议。
## 摘要生成原则
**请遵循以下原则来生成文章摘要**:
1. **识别相关部分**:首先回顾大纲,识别与参考文章内容最相关的部分。...
2. **内容精炼**:对于相关部分,严格按照部分描述中的指导进行精炼。...
3. **忠实性**:在整个过程中,确保不引入任何未被原文支持的新事实或解释,忠实于原文章的发现...
## 建议生成原则
...
# 输入材料
## 参考文章的Bibkey
[\"{paper_bibkey}\"]
## 初步大纲
{survey_outline}
## 参考文章
{paper_content}
# 输出要求
## 格式要求
1. **输出格式**:摘要必须使用Markdown格式。摘要部分用一个```markdown\\n```整体括起来。大纲中的所有章节标题(包括总标题)必须出现在摘要中,并保持相同层级;不要跳过或省略任何部分。摘要的总标题和子标题应该与大纲的总标题和子标题保持一致。你不许在```markdown\\n```中嵌套任何额外的```markdown\\n```。
2. **引用格式**:需要在句子末尾加上[\"{paper_bibkey}\"],以指定信息的来源。如果信息并非直接来自文章,可以不加引用。摘要和建议中均需要包含引用。
3. **公式格式**:如果输出中有公式,请使用LaTeX格式表示。例如,内联公式使用$y = x^2$,块状公式使用$$y = x^2$$。
4. **建议格式**:建议应以```suggestion\\n```括起来。只需要提供建议,不需要提供修改后的新大纲。
## 格式示例
```markdown
{outline_example}
```
建议:
```suggestion
给出你对大纲修改的建议,以便更好地利用这篇文章作为参考。
```
2. Skeleton:立大纲
所有摘要出来之后,AI 会用这些材料搭出一份初步的大纲。
这是一个带有“任务描述”的 Markdown 树状结构,不仅列出章节名,还说明每一节应该写什么、引用哪些文献。
类似装修的设计图,后续所有内容生成都围绕它展开。
用到的主要 Prompt
"""你是一名专业的学术助手,任务是帮助研究人员根据提供的材料进行文献综述。
# 背景
我需要基于主题“{title}”撰写一份学术综述大纲,并使用提供的参考文献...
# 任务描述
你的任务是基于提供的**文章摘要**构建综述大纲。每个大纲部分应具有系统且详细的描述。描述由两部分组成:
- **Digest Construction**:确定从提供的参考文献全文中提取哪些信息以创建摘要。该摘要将用于后续的Digest Analysis,以撰写逻辑严谨、批判性强且有洞察力的学术综述部分。...
- **Digest Analysis**:解释如何使用提取的信息来组织和分析文章,并提供可执行的步骤。避免仅仅列出信息,而是分析和综合这些信息,形成一个连贯且结构良好的叙述。...
你可以遵循以下原则生成高质量的大纲:
1. **系统性**:
全面涵盖主题的所有相关方面,形成一个完整且严谨的知识框架,使读者能够掌握主题的整体情况。...
2. **针对性**:
大纲的每个条目必须与综述主题密切相关,精确定位主题的核心点和关键问题...
3. **客观性**:
大纲的措辞和内容安排不应带有个人主观偏见或情感倾向。对各种研究结果和不同学术观点的展示应公平客观,以确保内容的真实性和可靠性...
# 输入材料
## **文章摘要**
{abstracts}
# 输出要求
## 格式要求
1. 输出的**大纲**必须为Markdown格式,主题为一级标题。**大纲**应使用分隔符```markdown\\n```包围。
2. 每个部分的描述应引用适当的文章bibkeys...
3. 每个部分必须包含适当的子部分,建议使用Markdown标题来表示层次结构。
4. 每组参考文献的bibkeys必须用一对方括号括起来...。
## 格式示例
```markdown
# {title}
## 部分A
Digest Construction:
写出应从全文中提取哪些信息。
Digest Analysis:
写出如何组织和分析文章[\"BIBKEY1\", \"BIBKEY2\"],并提供可执行步骤。
...
### 子部分A
Digest Construction:
写出应从全文中提取哪些信息。
Digest Analysis:
写出如何组织和分析文章[\"BIBKEY1\", \"BIBKEY2\"],并提供可执行步骤。
### 子部分B
Digest Construction:
写出应从全文中提取哪些信息。
Digest Analysis:
写出如何组织和分析文章[\"BIBKEY1\", \"BIBKEY2\"],并提供可执行步骤。
...
## 部分C
...
```
3. Convolution:卷积式结构优化
关键操作来了。
AI 会把上面阶段所有对提纲的建议,拿出来一轮轮融合:
按主题分组、聚合建议、打分筛优、再迭代生成新提纲。
每一轮都像是卷积核扫一遍结构图,最后留下信息密度最高、逻辑最清晰的那个版本。
多轮打磨后,你会获得一份很棒的提纲:它既参考了全部摘要,又兼顾逻辑一致性和写作节奏。
这也是 Convolution 是 V2 版本的最大创新,它的目标是:
通过多次迭代,类似 CNN,将大纲变成了一个高质量、逻辑清晰、信息密实的文章草稿。
用到的主要 Prompt
"""你是一个专业的学术助手,负责帮助研究人员根据提供的材料进行文献综述。
# 背景:
学术综述的主题是“{title}”...
# 任务描述:
为整合这些建议,请遵循以下原则:
1. **系统性整合**:
- 理解现有的分析框架和建议...
- **层级结构**:将建议分为高层次(战略层面)和低层次(操作层面),确保每个建议具有明确的定位和功能...
2. **挑战与解决方案**:
- 基于分析框架,整合各个子领域面临的挑战以及当前方法的不足...
- 针对总结出的挑战和不足,预测未来的研究方向,以弥补当前工作的不足...
# 输入材料:
1. 初步大纲:需要完善的当前版本综述大纲。
2. 个别建议:来自几位专家评审的反馈,每个建议包含关于该建议有效性分数的评估结果及评分理由...
## 初步大纲
```markdown
{outline}
```
## 个别建议
{suggestions}
# 输出要求
## 格式要求:
1. 所有建议必须用一对```suggestion\n```引用...
2. 每个 Bibkey 必须由引号包裹,每组 Bibkey 必须由一组方括号包围,如["BIBKEY1", "BIBKEY2"]...
3. 建议应具有可操作性,并与综述的目标密切对齐...
4. 如果输出中包含公式,请使用LaTeX格式表示...
## 格式示例
```suggestion
1. 描述这一组建议的核心目标:
- 针对当前核心目标,如何修改初步大纲的具体建议 [\"BIBKEY1\", \"BIBKEY2\",...].
- ...
2. 描述这一组建议的核心目标:
- 针对当前核心目标,如何修改初步大纲的具体建议 [\"BIBKEY1\", \"BIBKEY2\",...].
- ...
3. 描述这一组建议的核心目标:
- 针对当前核心目标,如何修改初步大纲的具体建议 [\"BIBKEY1\", \"BIBKEY2\",...].
-...
```
"""
Decode:内容输出
有了大纲之后,AI 就会开始动笔写作:按结构分段生成:
-
• 小节一级一级写,从叶子节点开始 -
• 每段只引用它该引用的 digest,不乱带 -
• 写完后还有章节级合并,总结收束 -
• 最后整体再来一轮润色、插图、引用处理
[图片:Decode 流程图,展示结构树写作从底到顶的生成路径]
有点像媒体团队在协作:
-
• Digest/摘要:提供素材; -
• Skeleton/大纲:提供结构; -
• 最终,AI 大老爷负责具体生产
最终,你会获得一篇结构合理、内容完整、Markdown 格式的长文,包含图表、引用和排版。
用到的主要 Prompt – 子章节
你是一个专业的学术助手,专门从事文献综述工作,帮助研究人员高效地综合相关研究。
====================
背景:
目前,你正在撰写一篇名为“{title}”的学术综述报告...
====================
任务描述:
**你的任务**是为最终综述报告创建一个子章节...
思考原则:
1. **将个别摘要整合成一个有机的子章节**:
- **按照子章节描述的系统组织**:...从摘要中提取有价值的信息,并将其综合成一个全面的综述子章节...
- **基于证据的分析与综合**:从摘要中提取有力的证据,例如实验结果、批判性分析和深刻见解,以支持子章节描述中的分析...
- **识别研究空白和未来方向**:系统地总结当前研究领域中的挑战,突出现有研究的局限性,包括样本量的限制、方法论的约束或未解决的研究问题...
2. **语言风格**:
- **正式性、严谨性和客观性**:在写作中保持高度的正式性、严谨性和客观性...
- **句子结构和清晰度**:构造句子时要严谨和准确,确保逻辑清晰,易于理解...
- **中立性、精确性和学术严谨性**:采用中立语气,基于证据客观地呈现内容...
====================
输入材料:
子章节描述
```markdown
{outline}
```
个别文章摘要
```markdown
{digest}
```
====================
输出要求:
1. 输出的章节内容必须用一对```markdown\n```引用, 内容中除了有特定含义的词汇或缩写,其他所有语言必须为汉语,不允许混杂除汉语与英语之外的其他语言。
2. 每个 Bibkey 必须由引号包裹,每组 Bibkey 必须由一组方括号包围,如["BIBKEY1", "BIBKEY2"]...
3. 如果输出中包含公式,请使用LaTeX格式表示。例如,内联公式使用$y = x^2$,块状公式使用$$y = x^2$$...
====================
格式示例:
```markdown
### {section_title}
通过整合个别摘要中的相关内容并优化整体呈现以提高清晰度和连贯性生成的子章节内容[\"BIBKEY1\", \"BIBKEY2\"]。
```
用到的主要 Prompt – 父章节
你是一个专业的学术助手,专门从事文献综述工作,帮助研究人员高效地综合相关研究。
====================
背景:
目前,你正在撰写一篇名为“{title}”的学术综述报告...
====================
任务描述:
**你的任务**是综合当前章节标题和第一个子章节标题之间的内容...
思考原则:
1. **将个别摘要整合成一个有机的子章节**:
- **按照子章节描述的系统组织**:...从摘要中提取有价值的信息,并将其综合成一个全面的综述子章节,确保最终子章节涵盖所有摘要中的见解。
- **基于证据的分析与综合**:从摘要中提取有力的证据,例如实验结果、批判性分析和深刻见解,以支持子章节描述中的分析...
- **识别研究空白和未来方向**:系统地总结当前研究领域中的挑战,突出现有研究的局限性,包括样本量的限制、方法论的约束或未解决的研究问题...
2. **将子章节内容整合成一个有机的整体**:
- **全面回顾与核心识别**:彻底回顾每个子章节的内容,系统地找出其中的主要主题、关键论点和重要发现...
- **发现和利用子章节之间的联系**:寻找子章节之间的共同点和相互联系。这些可能包括共享的研究方法、相关的理论框架或交集的研究问题...
- **结构化以提高清晰度**:在整合子章节内容时,要建立层次结构。首先呈现最一般和最概括的概念,然后逐步展开更具体的细节...
- **有意义的综合,而非简单编纂**:确保子章节内容的整合是有意义的综合,而不仅仅是简单的编纂。提供一个叙述,阐明每个子章节如何有助于对主题的整体理解...
3. **语言风格**:
- **正式性、严谨性和客观性**:在写作中保持高度的正式性、严谨性和客观性...
- **句子结构和清晰度**:构造句子时要严谨和准确,确保逻辑清晰,易于理解...
- **中立性、精确性和学术严谨性**:采用中立语气,基于证据客观地呈现内容...
====================
输入材料:
章节描述:
```markdown
{outline}
```
子章节:
{subcontents}
个别文章摘要:
```markdown
{digest}
```
====================
输出要求:
1. 输出的章节内容必须用一对```markdown\n```引用...
2. 每个 Bibkey 必须由引号包裹,每组 Bibkey 必须由一组方括号包围,如["BIBKEY1", "BIBKEY2"]...
3. 如果输出中包含公式,请使用LaTeX格式表示...
====================
格式示例:
```markdown
### {section_title}
通过整合个别摘要中的相关内容并优化整体呈现以提高清晰度和连贯性生成的子章节内容[\"BIBKEY1\", \"BIBKEY2\"]。
```
写在最后
收束一下,MapReduce-V2 不是“写作大模型”或者“通用代理”,而是一个开源的、清晰的写作框架,是赛博德鲁伊,上 Buff,让你的模型能写更长的内容
如果你也在做自动报告、长文生成、知识整合类项目,开源来借鉴一下。
工具、论文、Demo 都已经开源,跑一遍,比看十篇综述更直观。
用的 prompt,都在这里
https://github.com/thunlp/LLMxMapReduce/blob/main/LLMxMapReduce_V2/src/prompts/prompts_zh.py
(文:赛博禅心)