Table of Contents
TL;DR
这篇文章关注我在 SciRead 中实现的"讨论式多智能体"。不同于单智能体的线性推理,这个系统让四个具有不同分析视角的"专家"通过"洞察生成 → 提问 → 回答 → 收敛评估 → 共识整合"的循环讨论论文,最终产出显式记录推理过程、标注分歧、量化共识度的报告。我会说明这种设计的动机、其核心架构、以及相比单智能体方案的权衡。
设计动机
从协调到讨论:为什么需要真正的互动?
在上一篇博文中,我实现了三种智能体系统:Simple Agent、ReAct Agent 和协调多智能体。
协调多智能体系统虽然能并行处理文章的不同部分(如元数据抽取、方法论分析、实验结果评估),但各个智能体之间是完全独立的——它们就像四个专家各自埋头读论文,最后把笔记简单拼接。这带来了一个根本问题:缺乏真正的质疑和辩论。
真实学术讨论中最有价值的部分,恰恰是学者之间、或者研究者与前人工作之间的互动:质疑、澄清、挑战观点、逐步达成共识。协调模式完全缺失了这个环节。
单智能体的瓶颈
无论是 Simple Agent 还是 ReAct Agent,都存在一个结构性缺陷,他设计上无法处理自己的错误倾向。
具体表现为:
- 错误累积:在单次前向推理的单智能体架构下,一旦早期推理步骤偏离真实前提,后续链式推理会在错误基础上持续展开,而模型缺乏显式的中断与回滚机制;除非额外引入自校正或外部验证环,否则错误倾向于在链路上累积而非自发被纠正。1
- 迎合式修正(Acquiescence):现有生成式语言模型后训练对齐了礼貌、合作、减少冲突,而非在证据充分时坚持自身立场。因此,当受到用户否定时,单智能体往往更倾向于道歉并修正回答,而不是基于证据为原推理辩护;这种行为模式更多反映出对上下文否定语气的顺从,而非真正意义上的“诚实“。2
就像一个缺乏坚定立场的讨论参与者,面对挑战者的任何反驳都立即退缩。这种形式可能在日常对话中有用,但在学术评估中则严重削弱了结论的可信度(比如过度相信文章的结论,忽视潜在漏洞)。
以"偏置"驱动讨论
为了解决上述问题,讨论式系统的核心设计不是简单的"多开几个窗口",而是引入结构化的偏置(Structured Bias)。
我为此设计了四个性格分明的"专家角色"。在这里,角色不仅仅是提示词装饰,而是预设的思维偏置。这种偏置保证了他们对同一篇论文产生可预测的分歧,而分歧正是产生高价值提问的动力。
| 角色 | 核心立场 | 在讨论中的作用 |
|---|---|---|
| 批判评估者 | 严谨性 > 创新性 | 总是寻找漏洞:实验是否充分?结论是否夸大?即使被挑战,也会坚持"证据不足就是有问题" |
| 创新洞察者 | 创新性 > 实用性 | 强调突破性和未来影响,即使被质疑实用性,也会捍卫"学术价值" |
| 实践应用者 | 落地 > 理论 | 关注成本、复杂度、部署难度。 |
| 理论整合者 | 一致性 > 效果 | 关注与现有理论的关系,防止"效果好但解释不通"的情况 |
这种设计带来了一个关键变化:举一个实例就是,当"实践应用者"质疑"创新洞察者"对于论文的模型设计过于乐观时,后者不会顺从,因为它的"人设"要求它捍卫创新价值。这种形式可能会使得双方必须列举更深层的证据。
讨论多智能体系统 (Discussion Agent)
核心架构:讨论循环
系统的核心是一个迭代的"讨论循环"(Discussion Loop),而非线性的任务流。
flowchart LR
A[初始分析]
B[提问阶段]
C[回应阶段]
D[收敛评估]
F[完成]
A --> B
B --> C
C --> D
D -->|未收敛| B
D -->|已收敛| F
style A fill:#E3F2FD,stroke:#2196F3,stroke-width:2px
style B fill:#FFF3E0,stroke:#FB8C00,stroke-width:2px
style C fill:#FFF3E0,stroke:#FB8C00,stroke-width:2px
style D fill:#FFF9C4,stroke:#FBC02D,stroke-width:2px
style F fill:#F3E5F5,stroke:#9C27B0,stroke-width:2px
注: 为了维护这样一个讨论循环,外围的系统其实相当复杂。我们使用了用任务调度的思路来管理各个智能体的状态、历史记录和交互。但这是实现细节。框架层只关心"阶段—角色—信息交换"的逻辑流转。
核心信号机制
为了让讨论可控,系统要求所有交互必须包含三类字段:
- 证据引用:任何洞察或反驳都应包含基于原文的证据描述。
- 动作标签:模型需要声明自己的输出是支持、质疑、澄清还是修正,使系统能自动识别讨论意图。
- 置信度:数值信号(0-1),用于让协调器决定哪些问题值得进入下一轮,以及何时可以停机。
关键阶段解析
- 初始分析:各角色根据性格偏好,独立扫描全文,输出带置信度的"初始洞察"。
- 提问:角色扫描他人的洞察。如果发现逻辑漏洞或与自己立场冲突,则发起
Challenge;如果信息模糊,发起Clarification。跳过机制在此阶段生效:如果历史记录中已有类似问答,角色会主动跳过,避免重复和不必要的循环。 - 回应与修正:被挑战者必须回应,根据新证据生成修订建议。虽然修订内容会被记录在讨论链中,但原始洞察不会动态更新,这保持了讨论历史的完整性。
- 收敛评估与退出:
系统计算所有角色的"收敛分数"(0-1)。当满足以下任一条件时进入共识构建:
- 分数阈值:平均收敛度 > 0.75
- 达到最大迭代轮数:通常设为 5 轮
利弊分析
优势
- 可解释性增强:相比单智能体的"黑盒"输出,讨论链显式记录了质疑与辩护过程,报告更像"学术研讨会纪要"。
- 共识度量化:收敛分数提供了对结果可信度的直观指标(>0.9 高度共识 vs <0.5 存在重大分歧)。
- 分歧即洞察(Insight via Collision):不一致的意见往往包含最有价值的信息。系统不仅是消除分歧,更是在保留“观点碰撞”。例如,当理论与实践视角无法调和时,往往揭示了该领域目前的真实困境,这种“无法收敛的洞察”比平庸的共识更有价值。
框架级 Tradeoff
任何架构选择都是权衡。引入讨论机制带来了显著的质量提升,但也引入了新的系统性挑战:
1. 成本激增(Token & Latency)
相比单次调用,多轮讨论的 Token 消耗呈线性倍数增长。典型的 3-5 轮迭代可能导致成本上升 10-20 倍。
2. 收敛的不确定性
并不是所有讨论都能收敛。
- 论文本身的矛盾:如果输入信息存在逻辑硬伤,诚实的智能体不应强行达成共识。
- 角色偏置过强:如果"批判者"过于激进,可能会在细枝末节上无限纠缠。
3. 操控性与多样性的博弈
这是一个敏感的超参数平衡。
- 提示词太强:角色行为僵化,容易产生为了反对而反对的"伪争论"。
- 提示词太弱:角色同质化,退化为单一视角的重复确认。 调试这一系统的核心工作量,往往集中在微调"性格提示词"以获得恰到好处的差异化。
真实执行案例:分析《Segment Anything》
为了验证框架,我用 Meta 的《Segment Anything》论文进行了完整运行。
执行概览
| 指标 | 数值 |
|---|---|
| 迭代轮数 | 2 轮(收敛分数 0.74 → 0.85) |
| LLM 调用 | ~88 次(单体系统的 ~20 倍) |
| 结果 | 成功收敛,识别出 4 个共识点与 2 个分歧点 |
关键行为观察:跳过提问环节
在第二轮迭代中,系统展现了预期的"上下文记忆"能力。日志显示,多个角色主动跳过了提问。
典型案例: 实践应用者 决定跳过向 创新洞察者 提问,理由是:
“The insight correctly identifies the core innovation… My focus is on economic viability… Asking a follow-up would not materially advance the discussion on novelty.”
这证明了框架并非盲目循环,而是具备信息增益意识。当讨论不再产生新信息时,系统能够自我加速收敛。
附上完整报告:GitHub Gist
共识与分歧
最终报告清晰地分离了共识与分歧:
- 共识:各方都认可 Promptable framework 的灵活性和 Data Engine 的效率。
- 分歧:创新者认为 Data Engine 是范式转移,而批判者担心其 Dataset Circularity 风险。这种分歧被完整保留在报告中,供人类读者判断。
未完待续
原计划在本文中同时介绍"按需生成专家"的智能体(动态生成角色、平衡多样性与可控性),但要实现这一点需要更复杂的提示词设计以及动态生成智能体带来的字段校验、状态管理等挑战,目前尚未完成。我计划将其放在下一篇博文单独探讨。
Arbuzov, M. L., Shvets, A. A., & Beir, S. (2025). Beyond Exponential Decay: Rethinking Error Accumulation in Large Language Models. arXiv preprint arXiv:2505.24187 ↩︎
Hunter Perrin. (2025). Lies, Damned Lies, and LLMs: AI is a Con SciActive Inc ↩︎