基于对话的多智能体(AutoGen)
Microsoft AutoGen 让多个智能体彼此对话,直到达成共识。
基于对话的多智能体(AutoGen) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
为什么使用多代理?
让一个代理拥有所有工具,通常不如让两个专门代理相互交流。专门化优于通才化。
示例:
- 研究员 + 写作者——一个收集信息,另一个组织答案
- 程序员 + 审查员——一个编写代码,另一个进行批评
- User-Proxy + Assistant——代表用户,与工作代理交流
AutoGen 模式
Microsoft AutoGen 允许代理进行对话:每个代理都是 AssistantAgent 或 UserProxyAgent。它们会交换消息,直到达成共识。
Two-Agent Example
# pip install pyautogen
from autogen import AssistantAgent, UserProxyAgent
llm_config = {'model': 'gpt-4o-mini', 'api_key': '...'}
assistant = AssistantAgent(
name='coder',
system_message='You write Python code. Reply with code only.',
llm_config=llm_config
)
user_proxy = UserProxyAgent(
name='user',
human_input_mode='NEVER',
code_execution_config={'work_dir': './workdir'}
)
user_proxy.initiate_chat(assistant, message='Write a function that returns the factorial of n.')UserProxyAgent
它代表人类(或脚本),可以执行助手返回的代码、提出澄清问题,并决定任务何时完成。
可对话代理
所有 AutoGen 代理都继承自 ConversableAgent。您可以为自定义行为创建子类。
GroupChat for >2 Agents
class AssistantAgent:
def __init__(self, name, system_message=''):
self.name = name
self.system_message = system_message
def initiate_chat(self, manager, message):
manager.run(self, message)
class GroupChat:
def __init__(self, agents, messages, max_round=12):
self.agents = agents
self.messages = messages
self.max_round = max_round
class GroupChatManager:
def __init__(self, groupchat, llm_config=None):
self.groupchat = groupchat
def run(self, initiator, message):
self.groupchat.messages.append({'role': initiator.name, 'content': message})
for i, agent in enumerate(self.groupchat.agents):
if i >= self.groupchat.max_round:
break
reply = f'{agent.name} contributes to: {message}'
self.groupchat.messages.append({'role': agent.name, 'content': reply})
print(reply)
user_proxy = AssistantAgent(name='user_proxy')
researcher = AssistantAgent(name='researcher')
writer = AssistantAgent(name='writer')
critic = AssistantAgent(name='critic')
group = GroupChat(agents=[user_proxy, researcher, writer, critic], messages=[], max_round=12)
manager = GroupChatManager(groupchat=group, llm_config={})
user_proxy.initiate_chat(manager, message='Write a blog post about RAG.')
发言者选择
GroupChatManager 决定接下来由谁发言。策略包括:
- round_robin——固定轮换
- auto——LLM 根据对话内容进行选择
- manual——由人类选择
终止条件
对话会在以下情况下结束:
- 代理发出 TERMINATE 关键字
- 达到 max_round
- UserProxyAgent 判断任务已完成
代码执行
UserProxyAgent 可以执行助手在代码块中发出的任意代码。请使用沙箱:
user_proxy = UserProxyAgent(
name='user',
code_execution_config={
'work_dir': './workdir',
'use_docker': True # safer
}
)成本监控
多代理对话成本很高——N 个代理 × M 轮 = 每项任务 N×M 次 LLM 调用。请严格限制轮数。
适用场景
- 角色分工明确的任务(研究、代码、审查)
- 批评能够提升质量的任务
- 单个代理的提示无法处理的复杂任务
不适用场景
- 简单问答——单个代理更快且更便宜
- 对延迟敏感的路径
- 单个代理能够很好完成全部工作的任务
AutoGen 与 LangGraph 的比较
AutoGen = 由对话驱动(代理之间进行自由形式的聊天)。LangGraph = 由图驱动(显式状态机)。两者都很有效;请根据任务与哪种方式更自然地匹配来选择。
AutoGen 模式
AutoGen 中的核心抽象是什么?
回顾
AutoGen = 基于角色的代理进行对话。它非常适合由一个代理负责监督、其他代理负责专门工作的任务。请关注成本并限制轮数。
常见问题解答
「基于对话的多智能体(AutoGen)」课时是免费的吗?
是的 — 「基于对话的多智能体(AutoGen)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「基于对话的多智能体(AutoGen)」这节课中我会学到什么?
Microsoft AutoGen 让多个智能体彼此对话,直到达成共识。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「基于对话的多智能体(AutoGen)」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 基于对话的多智能体(AutoGen)
- 分层监督者(编排器 + 工作器)
- 智能体角色与专门化
- 通信协议(消息总线)