0Pricing
AI Agents · 课时

基于对话的多智能体(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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 基于对话的多智能体(AutoGen)
  2. 分层监督者(编排器 + 工作器)
  3. 智能体角色与专门化
  4. 通信协议(消息总线)
← 返回 AI Agents