对话模式决定了系统长什么样。选错模式,要么失控要么僵死。这一节把三种常见模式——顺序、自由、广播——摆在一起比,并讲清各自的代价。

A 说完给 B,B 说完给 C,单向流动。适合步骤固定、不需回头的任务,比如"提取→翻译→校对"。可控、好调试,但一旦某步需要回头重做,得自己写逻辑。
from autogen import ConversableAgent import os cfg = {"model": "gpt-4o-mini", "api_key": os.environ.get("OPENAI_API_KEY")} extract = ConversableAgent("extract", llm_config=cfg, system_message="你提取要点。") translate = ConversableAgent("translate", llm_config=cfg, system_message="你翻译。") # 顺序:extract 发起,把结果传给 translate chat = extract.initiate_chat(translate, message="提取并翻译这段。", max_turns=2)
任意两个 Agent 可直接互发,不限定路径。灵活,适合探索型任务,但容易乱、难复现。我们建议只在原型期用,定型后尽量收成顺序或群聊。
一个 Agent 把消息同时发给多个接收者,常用于"通知所有角色新状态"。AutoGen 里可借 GroupChat 或手动循环 send 实现。
# 广播:把同一条消息发给多个 Agent agents = [extract, translate] msg = {"role": "user", "content": "目标已更新,请重新处理。"} for ag in agents: extract.send(msg, ag) # extract 作为发送方广播
| 模式 | 可控性 | 灵活度 | 调试难度 | 适用 |
|---|---|---|---|---|
| 顺序 | 高 | 低 | 低 | 固定流水线 |
| 自由 | 低 | 高 | 高 | 探索原型 |
| 广播 | 中 | 中 | 中 | 状态同步 |
我们主张:生产系统优先顺序,协作涌现交给 GroupChat(4.2),自由对话留作实验。
选模式不该只看"哪个灵活",要看"哪种失败你能接受"。顺序对话的失败面是僵:一旦某步需要回头(比如翻译发现提取漏了),它不会自动返工,你得在业务层写补偿逻辑。自由对话的失败面是乱:两个 Agent 可能陷入互相附和的循环,或谁都没接关键一步,而且因为路径不定,你根本无法稳定复现"上次是怎么跑通的"。广播的失败面是过载:一个状态更新同时砸给所有角色,无关角色也被迫处理,上下文和算力被摊薄。
用建筑来类比:顺序是传送带,稳但改线贵;自由是开放工坊,灵但容易乱;广播是广播喇叭,快但吵。选型就是选"你的系统最怕哪种失败"。我们给一条经验法则——凡是要进生产的、步骤可枚举的任务,先上顺序;当需要"多个角色自由碰撞出方案"时才上群聊(4.2),且务必配终止条件;自由对话只留在原型期验证想法,定型当天就收掉。很多团队栽在"原型用自由、忘了改",上线后对话不可复现,排错无门。
还有一点容易被忽略:模式可以嵌套。一个顺序流水线里,某一步内部可以是一个群聊(比如"校对"这步让三个审稿 Agent 群聊挑刺)。这种模式组合比"全自由"或"全顺序"都更实用——外层可控,内层有涌现。设计系统时不妨把模式当积木拼,而不是二选一。
| 模式 | 最怕的失败 | 何时该选 | 何时别选 |
|---|---|---|---|
| 顺序 | 需回头返工 | 步骤固定可枚举 | 路径多变、需碰撞 |
| 自由 | 不可复现/死循环 | 原型探索想法 | 任何生产场景 |
| 广播 | 无关角色被吵 | 状态同步通知 | 需个性化响应 |
光会选还不够,系统跑起来后你常需要在模式间切换。几个触发信号值得记住。当顺序流水线里某一步频繁需要"回头改上一步",说明路径已经不是真·固定,该把那几步收成一个群聊让角色自己协调,而不是在业务层写一堆 if 补偿。当群聊里角色总是按固定顺序说话、从不变换,说明涌现没发生,round_robin 或顺序更省成本,auto 是在白烧钱。当广播后多个角色给出高度重复响应,说明信息没有分工,广播退化成了噪音,应该让不同角色各管一块而非同接全局。
还有一个上线后常被忽视的点:模式选择要写进设计文档。很多团队口头定了"用顺序",代码里却因为某个 Agent 顺手回了句给第三方,悄悄变成自由对话,事后没人说得清当初为什么。把"为什么选这个模式、什么信号会触发切换"写进设计说明,是低成本高回报的工程习惯,也方便后来人接手时理解约束。
⚠️ 模式切换不是随便换:从顺序切到群聊,要确保终止条件(4.4)已就位,否则群聊可能不收敛;从自由切到顺序,要确认路径已稳定可枚举,否则会卡死在意外分支。
选模式不能只看任务,还要看团队对多智能体的熟悉度。新手团队一上来就用 auto 群聊,面对"为什么这轮是它说话、为什么聊不停"会完全失控,误操作成本高。这时先用 round_robin 或顺序,行为可预期,团队能在可控环境里建立直觉,等理解了收敛和终止,再放 auto 看涌现。反之,老手团队死守顺序,会浪费群聊的碰撞价值。所以模式选型和团队阶段绑定:控制力优先于灵活性,等你驾驭了再谈灵活。这也呼应了本书一贯的节奏——先小可控,再逐步放开。
⚠️ 自由对话上生产前一定加终止条件,否则两个 Agent 能聊到账单爆炸。
💡 对话模式是"对话即编排"的骨架选择——骨架定错,后面填肉也救不回来。