文章目录
Prompt工程之Autogen 2)核心组件详解
Autogen 的强大功能来自其“智能体(Agent)+ 协作机制”的设计理念。本章将深入介绍 Autogen 的五大核心组件:AssistantAgent、UserProxyAgent、CodeExecutorAgent、HumanAgent 和 GroupChatManager,并提供动手示例帮助你快速理解。
2.1 AssistantAgent:GPT 驱动的智能助手
AssistantAgent
是最基本的智能体类型,通常用于代表 GPT 模型,生成文本、代码或执行任务建议。
示例:
from autogen import AssistantAgent
assistant = AssistantAgent(name="assistant")
你可以通过 name
参数指定代理名称,在多 Agent 系统中有助于标识角色身份。
2.2 UserProxyAgent:可控的用户代理
UserProxyAgent
是一个“用户行为模拟器”,用于代表用户与其他智能体进行互动。它通常被用来:
- 作为系统的“发起者”;
- 接收其他 Agent 的消息;
- 控制对话流程,插入人类反馈。
示例:
from autogen import UserProxyAgent
user = UserProxyAgent(name="user_proxy")
你可以通过 user.initiate_chat(...)
主动发起对话:
user.initiate_chat(assistant, message="帮我写一个快速排序示例")
2.3 CodeExecutorAgent:自动代码执行与反馈
如果你的任务涉及自动编程、运行脚本、数据处理等,CodeExecutorAgent
是必不可少的组件。它会:
- 接收生成的代码;
- 在本地沙盒环境中执行;
- 将输出结果发送回对话中。
示例:
from autogen import CodeExecutorAgent
executor = CodeExecutorAgent(name="code_executor")
这个代理可以被其他 Agent 调用,例如:
assistant.send(executor, "请运行以下代码并告诉我结果:\nprint(2 + 2)")
⚠️ 默认 CodeExecutor 是开启的,但可配置执行沙箱路径、日志路径等参数来控制安全性。
2.4 HumanAgent:引入人类参与
HumanAgent
是为了将真实人类纳入对话流程而设计的组件。当系统遇到不确定情形时,可以通过 HumanAgent
请求人类指令,实现“人类在环(human-in-the-loop)”。
示例:
from autogen import HumanAgent
human = HumanAgent(name="real_user")
💡 默认情况下,
HumanAgent
会在控制台等待人类输入,适合需要人工审批或干预的任务流程。
2.5 GroupChatManager:智能体间的对话协调器
当你使用多个 Agent 时,需要一个机制管理他们之间的通信和流程。GroupChatManager
就是这样一个“调度器”,它支持:
- 多 Agent 轮流发言
- 控制中止条件
- 记录与回放对话历史
示例:
from autogen import GroupChat, GroupChatManager
groupchat = GroupChat(agents=[user, assistant, executor], messages=[])
manager = GroupChatManager(groupchat=groupchat, llm_config=False)
user.initiate_chat(manager, message="请写一个冒泡排序并执行")
🧠 在这个示例中,
UserProxyAgent
发起会话,AssistantAgent
编写代码,CodeExecutorAgent
执行它,整个过程由GroupChatManager
协调完成。
小贴士:LLMConfig 的配置技巧
每个 Agent 都可以传入 llm_config
参数,用于配置 OpenAI API、模型温度、系统 prompt 等。例如:
llm_config = {
"config_list": [
{
"model": "gpt-4",
"api_key": "your-api-key",
}
],
"temperature": 0.2,
}
assistant = AssistantAgent(name="assistant", llm_config=llm_config)
你可以通过不同的 llm_config
为每个 Agent 设定独立“人格”。
2.6 总结:各 Agent 的职责一览表
Agent 类型 | 用途 | 常见角色 | 是否需要 GPT 接入 |
---|---|---|---|
AssistantAgent | 内容生成 | 编程助手、数据分析师 | ✅ |
UserProxyAgent | 发起对话、控制流程 | 用户代理 | ✅ |
CodeExecutorAgent | 执行代码 | Python 执行器 | ❌ |
HumanAgent | 等待人类响应 | 审核人、决策者 | ❌ |
GroupChatManager | 管理消息流 | 调度器 | ✅(如处理任务转移) |
2.7 练习区:创建你自己的三智能体系统
目标:创建一个系统,完成以下任务流程:
- 用户代理提问
- 助手机器人生成代码
- 代码执行器运行代码并反馈结果
示例代码:
from autogen import AssistantAgent, UserProxyAgent, CodeExecutorAgent, GroupChat, GroupChatManager
assistant = AssistantAgent(name="assistant")
user = UserProxyAgent(name="user")
executor = CodeExecutorAgent(name="executor")
groupchat = GroupChat(agents=[user, assistant, executor], messages=[])
manager = GroupChatManager(groupchat=groupchat)
user.initiate_chat(manager, message="写一个函数求 1 到 100 的和,并运行它")
本章小结
Autogen 通过模块化的智能体设计,提供了极强的扩展性与控制力。从文本生成到代码执行,从自动流程到人类插入,每种 Agent 都承担着清晰的职责。