拆解 PaperBanana:AI 如何协作生成学术方法图

主题: Agent 工程

发布日期:

最后修改:

本文整理 PaperBanana 当前实现中的五个核心 Agent 的角色定位、输入输出职责、实际使用的系统提示词,以及运行时拼接的关键用户提示模板。

说明:

  • 内容基于当前代码实现,而不是论文中的抽象描述。
  • 这里优先整理 diagram 主流程,因为当前多代理讨论主要围绕方法图示生成。
  • 对于 plot 分支,本文末尾补充对应差异。

相关源码位置:



1. Retriever

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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 以生成更稳健代码”的模式