想象你是业主,刚拿到一套毛坯房的钥匙。你请来一家装修公司:设计师出效果图,水电工改造线路,木工打柜子,油漆工刷墙,监理全程盯质量。大家建了一个“装修沟通群”,谁需要什么、干到什么程度,都在群里说一声。但七嘴八舌一定会乱套,于是项目经理在群里维持秩序:什么时候该谁上场,活干到什么标准,遇到分歧怎么拍板,最后把各家成果汇总起来向你汇报——这套流程,就是“多 Agent 协作系统”的雏形。 AutoGen 正是这样一个“装修公司管理后台”。它由微软开源,帮你把大模型包装成一个个各司其职的 Agent,再通过群聊、工作流、代码执行等机制,让它们像装修队一样分工协作、高效交付。本文就借这家“AI 装修队”的故事,带你从零搞懂 AutoGen 多 Agent 协作框架的核心用法。

岗位关联

多 Agent 协作是 AI 应用从“单打独斗”走向“团队作战”的关键能力。掌握 AutoGen,等于拿到一套成熟的多 Agent 编排工具,让复杂任务可以被拆解、分工、并行执行并最终收敛成可靠成果——这是 AI 应用开发者进阶的必修课。

目录
  1. 可视化演示
  2. Agent 基础概念
  3. 对话协作模式
  4. 群聊编排机制
  5. 工作流设计
  6. 代码执行环境
  7. 结果聚合策略
  8. 实践应用技巧
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态演示AutoGen多Agent的核心机制,通过开始/执行/监控/完成四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

AutoGen多Agent:Auto AutoGen多Agent编排 Group Chat群聊编排与 核心机制可视化 AutoGen多Agent整体架构与关键组件

Agent 基础概念

装修队里没有万能工。设计师懂风格,水电工懂管线,监理懂标准,大家各管一摊。如果让水电工去设计北欧风,结果是灾难。同样,在 AI 世界里,一个通用大模型什么都懂一点,但让它同时做策划、写稿、审查、执行,往往顾此失彼。于是 AutoGen 提出一个思路:把大模型包装成一个有明确人设的 Agent——就像给每位工人发一顶帽子,戴上帽子就知道自己该干什么。

在 AutoGen 中,Agent 是一个可对话的智能实体。每个 Agent 内部至少包含三样东西:一个大模型作为“大脑”负责推理,一组工具作为“手脚”负责执行,一份对话历史作为“记忆”记录来龙去脉。AutoGen 的核心类 ConversableAgent 允许你通过 system_message 设定人设,通过 llm_config 配置大模型连接,通过 human_input_mode 决定是否允许人工介入。Agent 的类型也很多样:有带大模型的智能体,也有不带模型、只转达人类指令的“用户代理”。

πθ(at∣ot,ht)\pi_{\theta}(a_t \mid o_t, h_t)

1. 策略函数:策略函数表示 Agent 在给定信息下选择某个动作的概率分布,是 Agent 决策的“大脑”。

πθ\pi_{\theta}

2. 动作:表示当前时刻 Agent 要执行的动作,比如发送一条消息或调用一次工具。

ata_t

3. 观察与历史:是当前输入观察,是过去所有消息组成的记忆,两者共同决定动作。

ot,  hto_t, \; h_t

4. 条件与参数:竖线表示“在……条件下”,是模型的可训练参数。

∣θ\mid \theta

回到装修队:大模型是师傅的“手艺底子”,工具是“工具箱”,对话历史是“施工日志”。AutoGen 就是发帽子的人——它让你轻松创建各种专业的 Agent,并让它们各就各位。使用多 Agent 的第一步,永远是像给装修队分工一样,想清楚每个 Agent 的人设和边界。

对话协作模式

装修队开工后,师傅们怎么沟通?没有人会绕过群聊直接去拆别人刚贴好的瓷砖。每一次沟通都必须有来有回、说得明白:谁说的、对谁说的、内容是什么。如果只是喊一嗓子“帮我一下”,对方根本不知道要干什么。多 Agent 协作的第一课,就是把“话”说规范。

AutoGen 中 Agent 之间通过消息(Message)对话。消息不是简单的字符串,而是一个结构化的数据对象,包含 role(身份)、content(内容)以及可选的 meta(元数据,比如工具调用结果、时间戳)。这种结构化消息让 Agent 能准确知道“这句话是谁说的、想表达什么”,也让对话管理器能看清全局、做出下一步路由决策。这就是“对话驱动”的协作模式:Agent 之间不需要写复杂的函数接口,只要会发消息就能协作。

Ht={m1,m2,…,mt},mi=(rolei,contenti,metai)H_t = \{ m_1, m_2, \ldots, m_t \}, \quad m_i = ( \text{role}_i, \text{content}_i, \text{meta}_i )

1. 历史集合:从第 1 条到第 t 条消息的集合,相当于装修群的完整聊天记录。

Ht={m1,m2,…,mt}H_t = \{ m_1, m_2, \ldots, m_t \}

2. 单条消息:每条消息都是一个三元组,携带身份、正文和元数据。

mi=(rolei,contenti,metai)m_i = ( \text{role}_i, \text{content}_i, \text{meta}_i )

3. 身份:消息发送者的角色名,比如 planner 或 user,让接收者知道是谁在说话。

rolei\text{role}_i

4. 正文与元数据:一个管“说了什么”,一个管“附带什么信息”(例如工具返回的报错)。

contenti,  metai\text{content}_i, \; \text{meta}_i

这种对话驱动的模式很像群聊:所有消息记录在案,后来的师傅翻翻记录就能明白工程来龙去脉,不需要反复口头复述。但也要注意,历史无限累积意味着 token 消耗持续上涨——群聊记录越长,“会议成本”越高,这也是后文要讲轮次约束的原因。

群聊编排机制

把策划、编辑、校对都拉进一个微信群,七嘴八舌立刻开干——行吗?不行。没人决定“此时该谁发言”,结果就是策划在布置任务,编辑在回复旧话题,校对在刷屏,群彻底乱套。所以装修群一定有一个项目经理在“主持”:谁先讲、谁接话、吵起来了怎么拉回正题。

AutoGen 的 GroupChat 就是这样一个群:它把所有 Agent 拉进来,共享一个消息池。GroupChatManager(简称 GM)是群主,负责两项关键工作:一是维护发言顺序——每轮从所有 Agent 中挑选一个“最有资格发言”的人;二是维护终止条件——达到 max_round(最大轮数)就散会。没有 GM 的群聊只是消息列表,有了 GM 才变成有序的会议。

st+1=arg⁡max⁡s∈S  Score(s∣Ht)s_{t+1} = \arg\max_{s \in \mathcal{S}} \; \text{Score}(s \mid H_t)

1. 下一位发言人:表示下一步被允许发言的 Agent。

st+1s_{t+1}

2. 候选集合:群里所有可以发言的 Agent 组成的集合。

S\mathcal{S}

3. 打分函数:GM 根据对话历史为每个候选者计算“该谁上场”的分数。

Score(s∣Ht)\text{Score}(s \mid H_t)

4. 最大值:选分数最高的 Agent,也就是“最该说话的人”。

arg⁡max⁡s∈S\arg\max_{s \in \mathcal{S}}

GM 的打分不是硬编码规则,它本身也用一个大模型来“读气氛”:看对话进行到哪一步、哪个 Agent 的话还没被回应、哪个角色最需要出场,然后动态挑人。这种路由方式能应对突发走向——比如校对发现问题后,GM 会把发言权交回编辑,而不是机械地按顺序点名。一个好的群主让会议高效:不冷场、不刷屏、有结论,AutoGen 的 GM 就是这种会“控场”的 AI 群主。

工作流设计

装修不能想干就干。先砸墙后改水电,改完水电才贴砖,瓷砖干透再做木工——这叫工序。但也有能并行的地方:主卧做木工的同时,客厅可以改水电,只要互不干扰就行。施工图就是把每道工序的安排画清楚。AutoGen 的“工作流设计”,就是 AI 协作版的施工图。

工作流设计的本质是对多 Agent 协作过程的整体编排。常见三种模式:线性流程,A 做完给 B、B 做完给 C,适合依赖关系强的任务;并行协作,多个 Agent 各自处理独立子任务再汇总,适合大规模分头行动;动态调度,每一步根据中间结果决定下一步派谁上场,灵活性最高但最难控制。绘制工作流时,可以把每个 Agent 看成图上的一个节点,消息流向看成边。

G=(V,E),V={a1,a2,…,an},E⊆V×VG = (V, E), \quad V = \{ a_1, a_2, \ldots, a_n \}, \quad E \subseteq V \times V

1. 有向图:表示整个工作流的结构。

G=(V,E)G = (V, E)

2. 节点集合:每个节点是一个 Agent,比如策划、编辑、校对。

V={a1,a2,…,an}V = \{ a_1, a_2, \ldots, a_n \}

3. 边集合:每条边表示消息从一个 Agent 流向另一个 Agent。

E⊆V×VE \subseteq V \times V

4. 子集与笛卡尔积:边只是“所有可能组合”的子集,说明不是任意两个 Agent 之间都必须有连线。

⊆,  ×\subseteq, \; \times

在 AutoGen 中,最简单的线性工作流就是两个 Agent 的对话;复杂任务可以拆成多个两两对话,必要时还能用嵌套对话(nested chat)——一个 Agent 在自己内部再开一个小型讨论组。把工作流画成图之后,你能一眼看出哪里可以并行、哪里必须等待、哪里可能出现瓶颈。有了施工图,监理才知道盯哪个节点;设计好工作流,多 Agent 才不会干到一半就卡壳。

代码执行环境

装修师傅手艺再好,没有电钻也只能用锤子慢慢敲。AutoGen 给 Agent 配了“工具箱”——代码执行器,让 Agent 不仅能动嘴,还能动手:写段代码算数据、生成图表、跑一遍测试用例,然后把真实结果反馈回对话。

AutoGen 的代码执行机制是这样的:Agent 在对话中输出代码块,代码执行器负责运行并返回结果。执行方式有几种选择:本地执行最快,但直接碰宿主机,适合完全可信的环境;Docker 沙箱用容器隔离,推荐用于不可信代码;还可以指定 work_dir 工作目录,让执行过程中产生的文件可以持久化。此外,通过工具调用(function calling),Agent 还能调用外部 API——相当于把“工具箱”扩展成整个互联网。

R={O,if c=0Err,otherwiseR = \begin{cases} O, & \text{if } c = 0 \\ \text{Err}, & \text{otherwise} \end{cases}

1. 执行结果:代码运行后返回给对话的最终值。

RR

2. 正常输出:退出码为 0 时返回的标准输出,比如打印的表格、计算结果。

O,  if c=0O, \; \text{if } c = 0

3. 退出码:进程结束时的状态码,0 表示成功,非 0 表示异常。

c=0c = 0

4. 错误分支:退出码非 0 时返回错误信息,Agent 看到报错就能自己修 bug。

Err,  otherwise\text{Err}, \; \text{otherwise}

代码执行的最大价值是闭环验证:Agent 写完代码不只给人看,而是真的跑一遍,把输出或报错贴回群聊,再根据反馈继续修改。这就从“纸上谈兵”变成了“真刀真枪”。给师傅配上趁手的电钻,还要戴上安全帽——Docker 沙箱就是那顶安全帽,让 Agent 放心干活,也不怕拆了承重墙。

结果聚合策略

工地干完,业主问:怎么样?项目经理不能只说“都还行”,得给出明确结论:户型完成度多少、哪些地方返工了、监理怎么评价。如果几位师傅对某个方案有分歧,还要投票或按权威程度加权——不能让门卫大爷和总工程师一票相等。

结果聚合是多 Agent 协作收尾的关键环节。常见策略有三种:一是投票机制,每个 Agent 对候选方案投一票,简单多数胜出,独立角度的投票能互相制衡;二是加权汇总,给不同角色分配不同权重,比如评审 Agent 的权重高于执行 Agent,再求加权平均;三是最优选择,当每个 Agent 都产出完整方案时,用一个评分卡或额外的裁判 Agent 挑出最佳。

Final=∑i=1nwi⋅oi,s.t.wi≥0,  ∑i=1nwi=1\text{Final} = \sum_{i=1}^{n} w_i \cdot o_i, \quad \text{s.t.} \quad w_i \geq 0, \; \sum_{i=1}^{n} w_i = 1

1. 最终结果:聚合后产出的明确结论,项目经理给业主的交付。

Final=∑i=1nwi⋅oi\text{Final} = \sum_{i=1}^{n} w_i \cdot o_i

2. 意见:第 i 个 Agent 给出的观点、方案或评分。

oio_i

3. 权重:第 i 个 Agent 的发言分量,代表它在这次决策中的权威程度。

wiw_i

4. 约束条件:权重非负且总和为 1,这样最终结果就是加权平均,尺度不会跑偏。

wi≥0,  ∑i=1nwi=1w_i \geq 0, \; \sum_{i=1}^{n} w_i = 1

在 AutoGen 中,聚合不一定是内置函数,更多是你通过工作流设计出来的:你可以让一个专门的“汇总 Agent”去读所有人的输出并提炼结论,也可以在群聊最后让 GM 把意见收敛成答案。关键是聚合策略要匹配任务性质——事实型任务用投票,开放型任务用加权或最优选择。项目经理的水平不在于每个工种都会干,而在于能把大家的成果拧成一句可靠的交付。

实践应用技巧

老项目经理接单多了,总结出几条铁律:小活儿别拉太多人,群聊别开太久,每个人工位要写清楚,手里的预算要盯紧。这些经验照搬到 AutoGen 上,每一条都成立。

第一条,小任务慎用多 Agent:每个 Agent 每次发言都是一次 LLM 调用,Agent 越多、轮次越长,成本越高。第二条,给每个 Agent 写清 system prompt:职责边界越明确,跑偏概率越低。第三条,设置合理的 max_round:既要给足讨论空间,又要防止无限扯皮。第四条,监控 token 消耗:根据预算反推 Agent 数量和轮次上限,别等账单出来才后悔。

Ncalls=∑r=1RkrN_{\text{calls}} = \sum_{r=1}^{R} k_r

1. 总调用次数:整场多 Agent 协作消耗的 LLM 请求总数,直接决定成本。

NcallsN_{\text{calls}}

2. 轮次变量:从第 1 轮跑到第 R 轮,R 通常由 max_round 控制。

r=1,…,Rr = 1, \ldots, R

3. 每轮参与数:第 r 轮实际发言的 Agent 数量。

krk_r

4. 求和符号:把每一轮参与发言的人数全部加起来,就得到总调用量。

∑r=1R\sum_{r=1}^{R}

从公式能看出,控制成本的两条路分别是削减轮次和限制每轮发言人数。这也是为什么“排列组合式”群聊(所有 Agent 每轮都发言)非常烧钱,而精心设计的工作流(每轮只点 1-2 个人)反而又快又省。装修队的老项目经理赢在排兵布阵,不在人海战术——用 AutoGen,同样要学会做减法。

AI 应用场景

场景一:AI 写作流水线

阶段:多 Agent 编排 + 工作流设计

解决的问题:内容团队每天要产出大量稿件,传统单人写作风格单一、容易出错、效率不高;人工反复改稿要耗费大量时间。

具体案例:运营在对话里丢一句“写一篇 AutoGen 入门介绍,200 字”。系统自动组建一个 4 人写作群:策划 Agent 拆提纲 → 编辑 Agent 出初稿 → 校对 Agent 查错修订 → 策划 Agent 汇总成稿交付。整个过程无需人工盯守,AI 完成从需求到成稿的闭环,运营只需最后看一眼成品。

场景二:AI 代码评审委员会

阶段:代码执行环境 + 群聊编排

解决的问题:传统代码评审依赖资深工程师人工 review,速度慢、覆盖不全,紧急上线时容易跳过审查留下隐患。

具体案例:开发 Agent 生成代码后自动在 Docker 沙箱中运行,测试 Agent 设计边界用例并把运行结果贴回群聊;质量 Agent 审查代码风格与安全风险;最后由评审 Agent 聚合所有意见,输出“通过 / 打回”的结论。开发者只需看结论和修改建议,不用逐行审阅。

场景三:市场调研“分身术”

阶段:并行协作 + 结果聚合

解决的问题:竞品调研要翻大量官网、抓新闻舆情、整理电商定价,传统方式派一个人做要一整天,还容易漏信息。

具体案例:三个 Agent 并行开工——一个抓官网产品参数,一个爬社交媒体舆情,一个整理电商平台定价;互不干扰地完成子任务后,由分析 Agent 用加权汇总的方式整合成一份含结论和建议的调研报告,从启动到出稿不到十分钟。

Python 演示

python57 行
# -*- coding: utf-8 -*-# AutoGen 多 Agent 群聊协作示例from autogen import ConversableAgent, GroupChat, GroupChatManager CONFIG = {"config_list": [{"model": "gpt-4o", "api_key": "YOUR_API_KEY"}]} # 1. 定义装修队成员: 策划、编辑、校对planner = ConversableAgent(    name="planner",    system_message="你是项目经理小王, 负责拆解需求、分配任务、汇总成果。",    llm_config=CONFIG,    human_input_mode="NEVER",) writer = ConversableAgent(    name="writer",    system_message="你是文案编辑小李, 负责写出通俗易懂的正文。",    llm_config=CONFIG,    human_input_mode="NEVER",) critic = ConversableAgent(    name="critic",    system_message="你是质检员小张, 负责挑错并给出修改建议。",    llm_config=CONFIG,    human_input_mode="NEVER",) # 2. 拉一个装修沟通群, 群成员仅限上述三位, 最多聊 8 轮group_chat = GroupChat(    agents=[planner, writer, critic],    messages=[],    max_round=8,) # 3. 任命群主 GroupChatManager, 由它控制发言顺序manager = GroupChatManager(    groupchat=group_chat,    llm_config=CONFIG,) # 4. 用户代理人发起需求, 启动整场群聊user_proxy = ConversableAgent(    name="user_proxy",    llm_config=False,    human_input_mode="NEVER",) user_proxy.initiate_chat(    manager,    message="请写一篇 200 字以内、面向小白的 AutoGen 多 Agent 介绍。",) # 5. 复盘群聊记录for msg in group_chat.messages:    who = msg.get("name", "user_proxy")    print(f"[{who}] {msg.get('content', '')}")
目的:用 AutoGen 搭建一个“策划-编辑-校对”三人群聊,用户代理抛出一个写作任务,群主 GM 自动调度三位 Agent 协作完成,最后打印整个群聊过程。
  1. CONFIG = {"config_list": [{"model": "gpt-4o", "api_key": "YOUR_API_KEY"}]}大脑接线图,指定用哪个模型、怎么连服务;实际使用时替换成自己的 API Key。
  2. system_message="你是项目经理小王..."给 Agent 立人设,相当于给师傅发工牌,告诉它“你是谁、该干什么”。
  3. human_input_mode="NEVER"全自动发言人,不需要人工确认,师傅领了任务就自己干活。
  4. GroupChat(agents=[planner, writer, critic], messages=[], max_round=8)拉群并设定轮次上限,防止三位 Agent 无限扯皮。
  5. GroupChatManager(groupchat=group_chat, llm_config=CONFIG)任命群主(GM),由它负责每轮“该谁发言”的路由调度。
  6. user_proxy.initiate_chat(manager, message=...)用户代理人在群里抛出一个话题,启动整场协作。
  7. for msg in group_chat.messages翻聊天记录,复盘每个 Agent 都说了什么,方便排查问题和展示成果。

常见误区

误区既然要做多 Agent,那就把角色分得越细越好,人多力量大嘛。比如写一篇文章,我拉了策划、编辑、校对、排版、润色、审核……十来个 Agent 一起进群,肯定又快又好。

正解每个 Agent 每轮发言都要调用一次 LLM,都会产生真金白银的 token 费用和时间延迟。角色过多反而让群主路由变难,经常出现“两个 Agent 抢话、其他 Agent 打酱油”的局面。正确做法是按任务复杂度配置角色:小任务 2-3 个 Agent 足够,复杂任务也不宜超过 6-8 个,并且要控制每轮参与发言的 Agent 数。

为何常见:“多”字让我们本能地联想到“稳”“准”,却忽略了多 Agent 背后的算力成本与协同开销;加上网上很多演示视频渲染了“一群 AI 热烈讨论”的场景,容易误导初学者。

误区我理解 Group Chat 就是建一个微信群,把想参与的 Agent 全拉进去,它们就会像人一样自发地你一言我一语,自动把问题聊明白。

正解AutoGen 的 GroupChat 必须搭配 GroupChatManager 使用。GM 负责根据当前对话上下文从候选 Agent 中选一个发言人,还要检查终止条件(轮次上限、结束语等)。没有 GM 的群聊就是无人维护的吵架群——消息顺序不可控、没有收敛保障、容易死循环。

为何常见:“群聊”一词太有生活感,我们下意识套用了人类微信群的“自发秩序”,而忽略了机器没有自觉,一切秩序都来自显式设计。

误区为了让 Agent 跑代码速度更快,我直接让它在宿主机上执行,不上沙箱不上 Docker,反正代码是我自己的 Agent 生成的,应该不会出什么乱子。

正解Agent 生成的代码是不可信的。一次 prompt 注入或一个恶意工具调用,就可能让 LLM 生成删库或窃密的代码。AutoGen 支持 Docker 沙箱执行、限制超时时间、隔离文件系统,这些安全措施不是拖后腿,而是让 Agent 敢放手干活的前提。

为何常见:本地执行确实响应最快、配置最简单,初学者很容易选择“先跑通再说”,从而忽略了安全边界;只有出过一次事故,才会重视沙箱。

误区多 Agent 产生多个方案时,我就让每个 Agent 投票,得票最多的方案就是最好的。毕竟投票一直是人类民主决策的标准姿势。

正解不同 Agent 的角色视角和可信度差别很大——专业质检员的意见和普通助手的一票不该等权。对开放型任务,加权汇总、由裁判 Agent 做最优选择往往比简单投票更可靠。此外,如果候选方案本身质量都不高,多数票可能选出一个“平庸但有人缘”的方案。

为何常见:“投票”是人类社会最熟悉的聚合方式,但它假设每个投票者独立、同权、信息完备,而多 Agent 协作里这些假设常常不成立。

误区做工作流当然要选全动态调度,让群主随时自由决定下一步,这样系统最智能、最能应对各种意外。

正解动态调度的确灵活,但也最不可控、最难调试、token 成本最高。工程实践讲究“能线性就不并行,能并行就不动态”:依赖清晰的任务用线性流程最稳定;子任务独立才并行;只有确实需要根据中间结果分支时才用动态调度。先简单后复杂,跑通再升级。

为何常见:技术人容易追求“最先进”而忽略“最合适”,动态调度看起来最酷;但生产环境里,稳定性和可解释性远比炫技重要。

面试题

Q1. 在 AutoGen 中,配置大模型连接与参数最常用的参数是?

单选题 · easy

  • A.model_config 配置项
  • B.llm_config 配置项← 正确答案
  • C.prompt_config 配置项
  • D.token_config 配置项

答案:B。llm_config 是 ConversableAgent 的标准配置项,用来传入模型列表、API key、温度等参数,相当于给工人配“大脑”的统一接口。其他三个选项不是 AutoGen 的标准概念。

Q2. 当某个 Agent 的 human_input_mode 设为 "NEVER" 时,它意味着?

单选题 · easy

  • A.永远不做任何回复
  • B.全自动发言无需人工← 正确答案
  • C.每次发言等待人工确认
  • D.只能读取不能输出

答案:B。“NEVER“ 表示 Agent 完全不需要人类输入、自动生成回复,对应装修队里”项目经理交代完就自己干活“的师傅。而 ”ALWAYS“ 才表示每次都要人确认,”TERMINATE” 表示对话结束。

Q3. GroupChatManager(GM)的核心职责是?

单选题 · mid

  • A.给每个 Agent 配置显卡资源
  • B.决定下一位发言的 Agent← 正确答案
  • C.存储所有 Agent 的历史代码
  • D.训练每个 Agent 的大模型

答案:B。GM 是“群主”,负责 speaker selection(发言人选择)和终止判定。它用 LLM 读对话上下文打分,选出最该出场的人。其他选项把 GM 的功能误匹配成了资源管理或训练任务。

Q4. GroupChat 的 max_round 参数主要作用是?

单选题 · mid

  • A.限制每条消息的最大字数
  • B.限制群聊的最大对话轮数← 正确答案
  • C.限制群成员的数量上限
  • D.限制单次 LLM 的 token 数

答案:B。max_round 是 GroupChat 构造时传入的轮次上限,防止 Agent 无限互相回复,相当于装修群“今天开到几点就散会”的硬性时间表。消息字数、成员数量、token 数都由其他参数控制。

Q5. 相比单个大模型直接回答,多 Agent 协作的主要优势是?

单选题 · mid

  • A.每次推理成本一定更低
  • B.完全不需要人工审查
  • C.角色分工让复杂任务更可控← 正确答案
  • D.每次响应速度一定会更快

答案:C。多 Agent 的核心价值是把复杂任务拆成策划、执行、质检等专业角色,各司其职、互相制衡,让输出更可控。成本和速度不一定占优,多 Agent 通常更贵、更慢。

Q6. 在 AutoGen 中,让用户代理启动与群管的对话应调用?

单选题 · mid

  • A.initiate_chat() 方法← 正确答案
  • B.execute_chat() 方法
  • C.start_conversation() 方法
  • D.spawn_agent() 方法

答案:A。ConversableAgent 提供 initiate_chat() 发起一段对话,这是 AutoGen 最常见的入口。其他三个都不是官方标准 API,容易记住 initiate_chat 就够用了。

Q7. 辩论或评审类群聊中,最合适的发言人机制是?

单选题 · hard

  • A.固定按列表顺序轮流发言
  • B.由 GM 根据上下文动态打分选择← 正确答案
  • C.让所有 Agent 每轮同时发言
  • D.只允许发起者一个人发言

答案:B。辩论类任务走向不可预知,固定轮询会打断节奏,全员同时发言没有意义。GM 的动态 speaker selection 会根据上一条发言选出最相关的反驳者或评审者,让讨论自然推进。

Q8. 以下哪些属于 AutoGen 代码执行环境的安全措施?

多选题 · hard

  • A.支持用 Docker 容器隔离执行← 正确答案
  • B.默认拥有宿主机完全权限
  • C.可以设置代码执行的超时时间← 正确答案
  • D.可限制读写本地文件系统← 正确答案

答案:ACD。Docker 沙箱、超时控制、文件系统限制都是安全执行的标准配置,相当于给师傅戴上安全帽。B 恰恰违反了安全原则——AutoGen 默认不建议直接给宿主机完全权限,本地执行需非常谨慎。

Q9. 多 Agent 工作流中常见的协作模式包括?

多选题 · hard

  • A.线性流水线按序作业← 正确答案
  • B.多 Agent 并行子任务← 正确答案
  • C.管理器动态调度任务← 正确答案
  • D.所有 Agent 共享一个回复

答案:ABC。线性、并行、动态调度是三种典型模式,对应施工的工序串联、多工种同时开工和临时调配。D 描述的“共享一个回复”没有分工,不构成多 Agent 协作。

Q10. 以下哪些情况容易导致 Group Chat 陷入无限循环对话?

多选题 · extreme

  • A.发言人选择逻辑不稳健← 正确答案
  • B.执行与评审互相不收敛← 正确答案
  • C.消息路由规则过于随机← 正确答案
  • D.所有代理共用同一系统提示词

答案:ABC。不健壮的 speaker selection 可能让两个 Agent 反复 ping-pong;执行与评审互评若没有终止信号会一直挑错改错;随机路由不可复现且难以收敛。而所有 Agent 复用同一 system prompt 只是“人设混同”,不会必然导致死循环。