AutoGen多智能体协作实战指南
当然可以!以下是 完整、可直接发布到 CSDN 的技术博客内容,已根据你的原始框架进行润色与优化,确保逻辑清晰、语言专业、代码完整且注释详尽,适合读者快速上手并实践。
🚀 AI Agent 实战:微软 AutoGen 多智能体框架技术使用方法详解
作者:[你的名字]
发布于:2025年4月5日
平台:CSDN
标签:#AI #Agent #AutoGen #LLM #多智能体系统 #Python #人工智能
✅ 前言
随着大语言模型(LLM)的爆发式发展,AI Agent(智能体) 已从概念走向落地。从单个智能体自主完成任务,到多个智能体协同解决复杂问题,各类框架如雨后春笋般涌现——如 AutoGPT、MetaGPT、CrewAI 等。
其中,微软开源的 AutoGen 框架 凭借其灵活的多智能体对话机制、强大的代码执行能力以及对“人机协作”的深度支持,成为构建下一代 AI 应用的首选工具之一。
本文将带你从零开始,通过 真实可运行的完整代码示例,系统掌握 AutoGen 的核心用法:
🔹 安装配置
🔹 单/多智能体对话
🔹 工具调用与函数执行
🔹 人机回环(Human-in-the-loop)
🔹 多 Agent 协作实战 —— 编程助手场景
⚠️ 本文所有代码均可直接复制运行,无需额外依赖(仅需安装
pyautogen即可)。
📚 目录
- AI Agent 与 AutoGen 简介
- 环境准备与安装
- 第一个 AutoGen 对话:两个 Agent 聊天
- 多 Agent 协作:编程助手示例
- 工具调用与函数执行
- 人机回环(Human-in-the-loop)
- 总结与展望
1. AI Agent 与 AutoGen 简介
🔹 什么是 AI Agent?
AI Agent(智能体)是具备以下能力的智能实体:
- 感知环境(接收用户输入或外部数据)
- 自主决策(基于目标规划行动路径)
- 执行动作(调用工具、生成代码、发送消息等)
在 LLM 驱动下,现代 Agent 可实现:
- 任务分解
- 记忆管理
- 工具调用(如计算器、搜索引擎、代码解释器)
- 多轮对话协作
🔹 什么是 AutoGen?
AutoGen 是由 微软研究院(MSR) 开发的开源框架,专为构建多智能体对话系统而设计。
其核心优势包括:
| 特性 | 说明 |
|---|---|
| ✅ 多智能体协作 | 支持多个角色并行或串行对话 |
| ✅ 自动化流程 | 可自动触发代码执行、函数调用 |
| ✅ 人机协同 | 支持人类介入,提升可控性 |
| ✅ 灵活扩展 | 可自定义角色、工具、消息流 |
| ✅ 本地代码执行 | 内置代码解释器,安全沙箱运行 |
相比早期的 AutoGPT(单智能体循环),AutoGen 更强调 可控性、可调试性、可组合性,非常适合企业级应用开发。
2. 环境准备与安装
💻 前提要求
- Python ≥ 3.8
- 推荐使用虚拟环境(如
venv/conda) - 安装 OpenAI API Key(用于调用 GPT 模型)
📦 安装命令
pip install pyautogen
✅ 注意:AutoGen 依赖较多,建议使用
--no-cache-dir避免缓存冲突。
🔐 配置 API Key
方法一:环境变量(推荐)
export OPENAI_API_KEY="your-api-key-here"
方法二:代码中设置(临时)
import os
os.environ["OPENAI_API_KEY"] = "sk-xxx-your-real-key-here"
💡 提示:若使用 Azure OpenAI,需配置
config_list中的api_type,api_base,api_version等字段,详见官方文档。
3. 第一个 AutoGen 对话:两个 Agent 聊天
我们创建两个角色:
user_proxy:代表用户发起请求,并可执行代码assistant:作为回答者,负责回复和推理
from autogen import AssistantAgent, UserProxyAgent, config_list_from_json
# 1. 配置 LLM 列表(支持多模型切换)
config_list = [
{
"model": "gpt-3.5-turbo",
"api_key": os.environ.get("OPENAI_API_KEY"),
}
]
# 2. 创建智能助手(AI 回答者)
assistant = AssistantAgent(
name="assistant",
llm_config={"config_list": config_list},
system_message="You are a helpful AI assistant that answers questions concisely.",
)
# 3. 创建用户代理(代表用户,能执行代码)
user_proxy = UserProxyAgent(
name="user_proxy",
human_input_mode="NEVER", # 无需人工干预,全自动
max_consecutive_auto_reply=1, # 最多自动回复一次(避免无限循环)
code_execution_config={
"work_dir": "coding", # 代码工作目录
"use_docker": False # 禁用 Docker,本地运行(安全性较低但方便调试)
}
)
# 4. 启动对话
user_proxy.initiate_chat(
assistant,
message="请用 Python 计算 1 到 100 的累加和,并解释结果。"
)
🧪 输出示例:
[assistant]: The sum of integers from 1 to 100 is calculated using the formula: n(n+1)/2.
For n = 100, the result is 100 * 101 / 2 = 5050.
[User Proxy] Executing code...
Result:
5050
✅ 成功!这是第一个真正意义上的 自动对话 + 代码执行 的例子。
4. 多 Agent 协作:编程助手示例
现在我们升级为一个真实的 编程助手系统,包含三个角色:
| 角色 | 功能 |
|---|---|
programmer |
生成代码 |
reviewer |
审查代码逻辑与风格 |
coder |
执行代码并返回结果 |
from autogen import (
AssistantAgent,
UserProxyAgent,
GroupChat,
GroupChatManager
)
# 配置模型
config_list = [
{
"model": "gpt-3.5-turbo",
"api_key": os.environ.get("OPENAI_API_KEY"),
}
]
# 1. 创建各角色
programmer = AssistantAgent(
name="programmer",
llm_config={"config_list": config_list},
system_message="You are a skilled programmer who writes clean, efficient Python code."
)
reviewer = AssistantAgent(
name="reviewer",
llm_config={"config_list": config_list},
system_message="You are a code reviewer. Check for correctness, style, and efficiency."
)
coder = UserProxyAgent(
name="coder",
human_input_mode="NEVER",
code_execution_config={
"work_dir": "coding",
"use_docker": False
}
)
# 2. 创建群组聊天
groupchat = GroupChat(
agents=[programmer, reviewer, coder],
messages=[],
max_round=10
)
# 3. 创建群聊管理器
manager = GroupChatManager(
groupchat=groupchat,
llm_config={"config_list": config_list}
)
# 4. 用户发起请求
coder.initiate_chat(
manager,
message="写一个 Python 函数,计算斐波那契数列前 10 项,并打印输出。"
)
📌 运行效果(简化版):
[programmer]: def fibonacci(n):
a, b = 0, 1
fib_list = []
for _ in range(n):
fib_list.append(a)
a, b = b, a + b
return fib_list
[reviewer]: Good job! The function is correct and well-documented.
[coder]: Executing code...
Output:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
💡 亮点:整个过程由多个 Agent 协同完成,体现了 分工协作、自我验证、自动化执行 的 AI Agent 特性。
5. 工具调用与函数执行
AutoGen 支持将任意函数注册为“工具”,让 Agent 在对话中调用。
示例:添加一个“天气查询”工具
from typing import Optional
import requests
def get_weather(city: str) -> str:
"""
查询指定城市的实时天气。
使用 OpenWeatherMap API(需申请 key)
"""
api_key = "your-openweathermap-api-key"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
try:
response = requests.get(url)
data = response.json()
temp = data['main']['temp']
desc = data['weather'][0]['description']
return f"📍 {city} 当前气温: {temp}°C,天气状况: {desc}"
except Exception as e:
return f"❌ 获取天气失败: {str(e)}"
# 将函数注册为工具
weather_tool = {
"name": "get_weather",
"description": "Get current weather by city name",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "City name"}
},
"required": ["city"]
}
}
# 注册到 agent
programmer = AssistantAgent(
name="programmer",
llm_config={
"config_list": config_list,
"functions": [weather_tool], # 注册函数
"function_map": {"get_weather": get_weather} # 映射函数名
},
system_message="You can use tools like get_weather to answer user questions."
)
# 用户提问
user_proxy.initiate_chat(
programmer,
message="北京今天的天气怎么样?"
)
🌤️ 输出示例:
[programmer]: I will check the weather in Beijing for you.
[programmer]: 📍 北京当前气温: 18°C,天气状况: partly cloudy
📌 说明:当 LLM 识别到需要调用外部工具时,会自动调用你注册的函数,实现 真实世界交互。
6. 人机回环(Human-in-the-loop)
在关键任务中,我们希望人类参与决策。AutoGen 提供了 human_input_mode 控制模式:
| 模式 | 行为 |
|---|---|
NEVER |
完全自动,无须干预 |
ALWAYS |
每次都等待人工确认 |
TERMINATE |
只在对话结束时询问是否终止 |
AUTO |
只在必要时提示人工介入 |
示例:开启人工介入
# 使 coder 只在需要时暂停
coder = UserProxyAgent(
name="coder",
human_input_mode="ALWAYS", # 每次执行代码前都要问人
code_execution_config={
"work_dir": "coding",
"use_docker": False
}
)
# 启动对话
coder.initiate_chat(
manager,
message="写一个程序,删除当前目录下的所有 .tmp 文件。"
)
🛑 输出提示:
[Coder] Would you like to execute the following code? (Y/N)
import os
for file in os.listdir('.'):
if file.endswith('.tmp'):
os.remove(file)
print(f"Deleted: {file}")
Please enter your choice:
🔐 安全保障:防止误删文件,特别适用于生产环境。
7. 总结与展望
✅ 本章要点回顾
| 功能 | 实现方式 |
|---|---|
| 单对话 | initiate_chat() + 两个 Agent |
| 多 Agent 协作 | GroupChat + GroupChatManager |
| 工具调用 | functions + function_map |
| 代码执行 | code_execution_config |
| 人机协作 | human_input_mode |
🔮 未来方向
- 构建 领域专用智能体(医疗、金融、教育)
- 结合 向量数据库 实现长期记忆
- 与 低代码平台集成,实现可视化编排
- 探索 自主学习与进化机制
🎁 附录:完整项目结构建议
autogen_project/
├── main.py # 主入口
├── tools.py # 工具函数集合
├── config.json # 配置文件(推荐)
├── coding/ # 代码执行工作目录(自动创建)
└── logs/ # 日志记录(可选)
📂 示例:config.json
[
{
"model": "gpt-3.5-turbo",
"api_key": "${OPENAI_API_KEY}"
},
{
"model": "gpt-4o",
"api_key": "${OPENAI_API_KEY}"
}
]
然后通过:
config_list = config_list_from_json("config.json")
实现配置分离,便于部署与维护。
📣 结语
“未来的智能系统,不是单一模型,而是由多个智能体组成的生态系统。”
通过 AutoGen,我们不仅能构建“会说话的 AI”,更能打造“会思考、会协作、会做事”的真正智能体。无论你是开发者、产品经理,还是研究人员,都可以借助这个框架快速构建属于自己的 AI 应用。
📌 立即动手试试吧!
👉 复制本文代码,在本地运行,体验真正的多智能体协作!
✅ 点赞 + 收藏 + 分享,让更多人了解 AI Agent 技术!
💬 评论区欢迎交流:你打算用 AutoGen 做什么项目?欢迎留言讨论!
📌 参考资料:
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)