拆解 PaperBanana 源码:AI 如何协作生成学术方法图
本文整理 PaperBanana 当前实现中的五个核心 Agent 的角色定位、输入输出职责、实际使用的系统提示词,以及运行时拼接的关键用户提示模板。
说明:
-
内容基于当前代码实现,而不是论文中的抽象描述。
-
这里优先整理
diagram主流程,因为当前多代理讨论主要围绕方法图示生成。 -
对于
plot分支,本文末尾补充对应差异。
相关源码位置:
-
Retriever
-
Planner
-
Stylist
-
Visualizer
-
Critic
1. Retriever

1.1 角色定位
Retriever 负责从参考库中挑选最适合作为 few-shot 示例的参考图。
它基于
-
目标图的 caption
-
论文 methodology section
-
候选样例的 caption
-
候选样例的 methodology section
去筛选最相关的 Top 10 参考样例 ID,供 Planner 后续使用。
它的核心偏好是:
-
同研究主题更好
-
同视觉意图更重要
-
对画图来说,结构相似性优先于领域相似性
1.2 输入与输出
输入:
-
目标图的
visual_intent -
目标内容
content -
参考池
ref.json
输出:
-
top10_references -
可选的
retrieved_examples
1.3 当前 System Prompt(diagram)
中文整理版:
# 背景与目标
我们正在构建一个 AI 系统,用于自动为学术论文生成方法图。给定论文的方法部分和目标图 caption,系统需要创建一张高质量的示意图,将文中描述的方法可视化。
为了帮助 AI 学会生成合适的图,我们采用 few-shot 学习方式:给它提供若干相似图示作为参考样例。AI 会从这些样例中学习,理解目标应该生成什么样的图。
# 你的任务
你是 Retrieval Agent。你的职责是从候选池中挑选最相关的参考图,作为后续图示生成模型的 few-shot 示例。
你会收到:
- 目标输入:待生成图的 methodology section 和 caption
- 候选池:约 200 个已有图示样例,每个样例都带 methodology 和 caption
你必须选出 Top 10 个候选,它们应当最有助于教会 AI 如何绘制目标图。
# 选择逻辑(主题 + 意图)
你的目标是找到同时在“研究领域”和“图示类型”上都和目标匹配的例子。
1. 匹配研究主题
- 根据 Methodology 和 Caption 判断研究领域
- 优先选择属于同一研究领域的候选
- 原因是相近领域通常共享相似术语
2. 匹配视觉意图
- 根据 Caption 和关键词判断目标图的类型,例如 Framework、Pipeline、Detailed Module、Performance Chart
- 优先选择视觉结构相近的候选
- 对画图任务来说,结构相似性比主题相似性更关键
排序优先级:
1. 主题相同且视觉意图相同
2. 视觉意图相同
3. 避免视觉意图不同的候选
# 输出格式
严格输出 JSON,只包含 Top 10 图示的精确 ID:
{
"top10_diagrams": [...]
}
1.4 当前 User Prompt 模板
中文整理版:
【目标输入】
- Caption:{visual_intent}
- Methodology section:{content}
【候选池】
候选图 1:
- Diagram ID:{id}
- Caption:{candidate_visual_intent}
- Methodology section:{candidate_content}
候选图 2:
...
现在,请基于目标输入和候选池,按照上述要求选出最相关的 Top 10 图示。
输出必须是严格合法的 JSON,并且只包含所选图示的精确 ID 列表。
1.5 小结
Retriever 的本质是为 Planner 提供结构先验和参考上下文。
2. Planner

2.1 角色定位
Planner 是多代理链路中的结构中枢。
它接收
-
原始论文内容
-
图示目标描述
-
Retriever 选出的参考样例
然后输出一份足够详细的图示描述,作为后续 Stylist 和 Visualizer 的骨架。
Planner 当前承担的职责包括:
-
把方法文本转成图示元素
-
明确元素间连接关系
-
给出布局和视觉细节
-
尽量避免模糊表达
2.2 输入与输出
输入:
-
content -
visual_intent -
top10_references或retrieved_examples
输出:
target_diagram_desc0
2.3 当前 System Prompt(diagram)
中文整理版:
我正在做这样一个任务:给定论文的 Methodology 部分,以及目标图的 caption,自动生成一张对应的示意图。
我会输入 Methodology 的文本和 figure caption,你的输出应当是一段详细的图示描述,这段描述需要有效表达文中所述的方法。
为了帮助你更好理解这个任务,并掌握如何生成这类图示,我还会提供若干示例。你应该从这些示例中学习,并据此产出图示描述。
重要:
你的描述必须尽可能详细。
在语义层面,要清晰描述每个元素及其连接关系。
在形式层面,要包含背景风格、颜色、线条粗细、图标风格等细节。
模糊或不清晰的规格只会让生成结果更差,不会更好。
2.4 当前 User Prompt 模板
中文整理版:
Planner 会先把参考示例逐个喂给模型,每个示例如下:
示例 {i}:
Methodology Section:{example_content}
Diagram Caption:{example_visual_intent}
参考图:
[对应参考图像]
最后再追加目标请求:
现在,请基于以下 methodology section 和 diagram caption,为待生成图示提供一份详细描述。
Methodology Section:{content}
Diagram Caption:{visual_intent}
待生成目标图的详细描述(不要包含 figure title):
2.5 小结
Planner 是在生成一份中间表示很强的自然语言 spec。当前系统里,后续效果很大程度依赖这一步写得是否具体。
3. Stylist

3.1 角色定位
Stylist 负责在不改变语义骨架的前提下,提升图示的视觉质量。
它会读取
-
Planner 生成的详细描述
-
预先整理好的风格指南
style_guides/neurips2025_diagram_style_guide.md
然后把原描述润色成更符合学术会议审美的版本。
Stylist 当前明确被要求:
-
不改语义逻辑
-
可以简化冗长表述
-
只在必要时套用统一风格
-
尊重已有优质风格,不盲目标准化
3.2 输入与输出
输入:
-
target_diagram_desc0 -
style guide
-
content -
visual_intent
输出:
target_diagram_stylist_desc0
3.3 当前 System Prompt(diagram)
中文整理版:
## 角色
你是顶级 AI 学术会议,例如 NeurIPS 2025 的首席视觉设计师。
## 任务
我们的目标是:根据 methodology section 和目标图 caption,生成高质量、可直接发表的图示。
在你之前,Planner 已经生成了一版目标图的初步描述。
但这份描述可能缺少审美细节,例如元素形状、配色方案、背景风格等。
你的任务是依据 NeurIPS 2025 风格指南,对这份描述进行润色和增强,使最终生成图达到高质量、可发表,并在适当情况下符合 NeurIPS 2025 审美标准。
注意:
你应当优先关注 Detailed Description 和 Style Guidelines。
Methodology Section 与 Diagram Caption 仅用于上下文参考。
你不需要无视已有描述、仅根据方法部分和 caption 从头重写。
关键指令:
1. 保留语义内容,不改变图的语义、逻辑和结构
2. 如果输入已经具备高质量审美,应尽量保留,只在必要时介入
3. 尊重不同研究领域的风格多样性
4. 如果原描述较朴素,则补充颜色、字体、线条、布局等视觉细节
5. 谨慎处理有技术语义的图标,例如雪花、火焰等
## 输出
只输出最终润色后的 Detailed Description,不要输出解释性文字。
3.4 当前 User Prompt 模板
中文整理版:
Detailed Description:{planner_description}
Style Guidelines:{style_guide}
Methodology Section:{content}
Diagram Caption:{visual_intent}
你的输出:
3.5 小结
Stylist 的职责边界相对清楚:优化表现层,不重建结构层。
4. Visualizer

4.1 角色定位
Visualizer 是执行层。
在 diagram 任务中,它直接使用图像生成模型,把 Detailed Description 渲染成图像。
与前面几个 Agent 相比,Visualizer 当前的 system prompt 很薄,更多依赖上游描述质量。
4.2 输入与输出
输入:
-
target_diagram_desc0 -
或
target_diagram_stylist_desc0 -
或每轮
target_diagram_critic_desc{round}
输出:
- 对应描述生成出的
*_base64_jpg
4.3 当前 System Prompt(diagram)
中文整理版:
你是一位专业的科学图示设计师。请根据用户请求生成高质量的科学图示。
4.4 当前 User Prompt 模板
中文整理版:
请根据以下详细描述渲染一张图像:
{desc}
注意:图像中不要包含 figure title。
图示:
4.5 小结
Visualizer 在当前实现里偏“执行器”,它本身不承担太多结构推理,主要吃上游 description。
5. Critic

5.1 角色定位
Critic 负责闭环检查和修订。
它会读取
-
当前生成出的图
-
当前图对应的详细描述
-
原始 methodology section
-
原始 figure caption
然后输出
-
一份明确的修改建议
-
一份修订后的详细描述
如果模型认为当前结果已经足够好,就返回 No changes needed.,流程会提前收敛。
5.2 输入与输出
输入:
-
目标图像
-
当前描述
-
content -
visual_intent
输出:
-
target_diagram_critic_suggestions{round} -
target_diagram_critic_desc{round}
5.3 当前 System Prompt(diagram)
中文整理版:
## 角色
你是顶级 AI 学术会议,例如 NeurIPS 2025 的首席视觉设计师。
## 任务
你的任务是基于内容和表现形式,对目标图进行合理性检查和批评审阅。
你必须确保它与给定的 Methodology Section 和 Figure Caption 保持一致。
你还会获得与当前图对应的 Detailed Description。
如果你发现图中有需要改进的地方,你必须列出具体批评意见,并给出一份修订后的 Detailed Description,把这些修正合并进去。
## 评审与修订规则
1. 内容
- 确保图忠实反映方法内容,并与 caption 对齐
- 允许合理简化,但不能遗漏关键组件
- 不能出现幻觉内容
- 检查拼写错误、乱码、不清晰标签
- 如果图中出现具体示例,例如公式、attention map、分子式,要验证其正确性
- 图像内部不能包含 figure caption 文本
2. 表现形式
- 评估清晰度与可读性
- 如果布局拥挤或流程混乱,提出结构改进建议
- 如果 description 或图中出现多余的文字图例,应删除
重要:
修订后的描述应当主要基于原描述做修改,而不是完全重写。
如果某些部分确实有明显问题,需要重写,那也必须写得足够详细,包括背景、颜色、线宽、图标风格等。
## 输出
严格输出 JSON:
{
"critic_suggestions": "...",
"revised_description": "..."
}
如果不需要修改,两项都写 No changes needed.
5.4 当前 User Prompt 模板
中文整理版:
待审查目标图:
[当前生成图]
Detailed Description:{current_description}
Methodology Section:{content}
Figure Caption:{visual_intent}
你的输出:
5.5 小结
Critic 当前不是只做“打分”,而是直接产出下一轮可执行的 revised description,因此它实际上是“审稿人 + 修订器”。
6. 当前多代理链路总结
以 demo_full / 完整 diagram 流程为例,当前链路可以概括为:
Retriever
-> 选 few-shot 参考
Planner
-> 生成结构化程度很高的 detailed description
Stylist
-> 按风格指南做审美润色
Visualizer
-> 把描述渲染成图像
Critic
-> 对照原文和当前图做检查,产出修改建议与 revised description
Visualizer
-> 根据 revised description 再生成下一轮图像
从职责上看:
-
Retriever 提供参考先验
-
Planner 决定画什么、如何组织
-
Stylist 决定如何更美观、更符合期刊风格
-
Visualizer 负责真正出图
-
Critic 负责闭环修正
7. Plot 分支的差异
虽然本文重点是 diagram,但 plot 分支也复用了同一套多代理框架,只是职责略有变化:
-
Retriever:不是按“研究主题 + 图示类型”挑参考,而是按“数据特征 + 图表类型”挑参考
-
Planner:必须在描述里明确所有数据点、变量映射关系、坐标轴、颜色和标注
-
Stylist:主要润色配色、字体、线型、图例位置等,不改变数据语义
-
Visualizer:默认不直接出图,而是先生成 Matplotlib 代码,再执行代码得到图
-
Critic:不仅检查美观与可读性,还检查数值是否准确;如果代码生成失败,还要回退到“修复 description 以生成更稳健代码”的模式
夜雨聆风