AutoGen 多智能体协作框架实战:GroupChatManager 使用详解
本文介绍 AutoGen 框架中 GroupChat 和 GroupChatManager 的使用。通过构建用户代理、编码助理和产品经理助理,实现多角色协同工作。示例演示了从新闻抓取到文案生成的完整流程,包括环境配置、Agent 初始化、群聊会话发起及执行细节。重点讲解了系统消息设定、代码执行配置及多轮对话管理,为复杂任务的多智能体编排提供实践参考。

本文介绍 AutoGen 框架中 GroupChat 和 GroupChatManager 的使用。通过构建用户代理、编码助理和产品经理助理,实现多角色协同工作。示例演示了从新闻抓取到文案生成的完整流程,包括环境配置、Agent 初始化、群聊会话发起及执行细节。重点讲解了系统消息设定、代码执行配置及多轮对话管理,为复杂任务的多智能体编排提供实践参考。

在之前的入门教程中,我们了解了 AutoGen 框架中 AssistantAgent 和 UserProxyAgent 之间的基础对话协作模式。这种单对单的交互适合简单的问答或代码生成任务。然而,在实际的复杂应用场景中,单一角色往往难以胜任需要多步骤、多领域知识协同的任务。
本文将深入探讨 AutoGen 中的 GroupChat(群聊)和 GroupChatManager(群聊管理器)功能。通过构建包含不同角色的代理群体(如管理员、程序员、产品经理),我们可以模拟真实的团队协作流程,让 AI 自动完成从需求分析到代码实现再到文档生成的完整工作流。
在使用 GroupChat 功能前,请确保已安装 AutoGen 库及其依赖。由于 AutoGen 处于快速迭代期,建议参考官方文档获取最新 API 说明。
pip install pyautogen~=0.1.0 -q -U
AutoGen 支持多种大语言模型后端。我们需要定义一个配置文件列表来指定模型参数。
import autogen
# 配置 LLM 参数
config_list = [
{
'model': 'gpt-3.5-turbo',
'api_key': 'YOUR_API_KEY_HERE' # 请替换为实际有效的 API Key
}
]
llm_config={
"seed": 42, # 设置随机种子以保证结果可复现
"config_list": config_list,
"temperature": 0.7 # 控制生成的创造性
}
在群聊场景中,每个 Agent 都应有明确的职责。我们将构建以下三个角色:
这是与外部世界交互的入口。关键配置在于 work_dir 和 human_input_mode。
user_proxy = autogen.UserProxyAgent(
name="User_proxy",
system_message="A human admin.", # 系统提示词设定为人类管理员
code_execution_config={
"last_n_messages": 2, # 上下文窗口大小
"work_dir": "groupchat" # 代码执行的工作目录
},
human_input_mode="NEVER" # 设置为 NEVER 表示全自动运行,无需人工确认
)
注意:work_dir 用于存储代码执行产生的文件,务必确保该目录存在且权限正确。
定义具体的业务角色,通过 system_message 约束其行为。
# 编码助理
coder = autogen.AssistantAgent(
name="Coder",
llm_config=llm_config,
system_message="You are a coding expert. Write clean and efficient code."
)
# 产品助理
pm = autogen.AssistantAgent(
name="Product_manager",
system_message="Creative in product ideas. Focus on content quality and user experience.",
llm_config=llm_config
)
GroupChat 是管理多个 Agent 对话的核心容器,而 GroupChatManager 则是群聊的调度者。
# 创建群聊对象
# agents: 参与群聊的所有代理
# messages: 初始消息历史
# max_round: 最大对话轮次,防止无限循环
groupchat = autogen.GroupChat(
agents=[user_proxy, coder, pm],
messages=[],
max_round=12
)
# 创建群聊管理器
manager = autogen.GroupChatManager(
groupchat=groupchat,
llm_config=llm_config
)
在此架构中,manager 充当会议主持人,决定下一个发言者是谁。这比直接让 UserProxy 与单个 Assistant 对话更灵活,能够根据上下文动态分配任务给最合适的角色。
为了演示群聊能力,我们设定一个具体任务:查询 Yahoo 财经新闻,抓取内容,并由 PM 助理生成一篇博客文章。
不同于单聊,这里将 manager 作为第一个参数传入。
user_proxy.initiate_chat(
manager,
message="Query finance news on yahoo.com, random pick one, scrap the article content, and form a post for writing a blog"
)
当会话启动后,系统内部会经历以下流转过程:
requests, beautifulsoup4 等库)。在实际运行中,Coder 可能会生成如下代码片段来获取新闻:
import requests
from bs4 import BeautifulSoup
import random
def fetch_news():
url = "https://finance.yahoo.com/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 此处仅为示意,实际需根据网页结构选择正确的标签
articles = soup.find_all('div', class_='news-item')
if articles:
return random.choice(articles).text
return "No news found"
print(fetch_news())
GroupChat 支持不同的发言人选择方法,可通过 speaker_selection_method 参数配置:
'auto': 默认模式,由 LLM 根据上下文判断谁应该发言。'manual': 需要人工干预选择。'round_robin': 轮流发言。groupchat = autogen.GroupChat(
agents=[...],
speaker_selection_method='auto'
)
在多轮对话中,LLM 可能产生幻觉或代码报错。建议采取以下措施:
max_round,避免死循环。由于 UserProxy 具备代码执行能力,在生产环境中使用时需注意:
通过本文的实践,我们掌握了 AutoGen 中 GroupChat 和 GroupChatManager 的核心用法。相比单 Agent 模式,多智能体协作能够更清晰地划分职责,提高复杂任务的完成质量。
掌握这一模式,将为构建企业级 AI 应用打下坚实基础。后续可进一步探索基于 LangChain 或其他框架的集成方案,以应对更复杂的业务场景。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online