AutoGen 是一个开源的 多智能体(Multi-Agent) 框架,由 Microsoft 开发。它旨在简化构建 大语言模型(LLM) 应用的过程,特别是那些需要 多个智能体协作、人机交互 或 工具调用 的复杂任务。
什么是 AutoGen?
AutoGen 的核心理念是“对话驱动的协作”。它将复杂的任务分解为一系列对话,通过不同的智能体(Agent)之间的交流来解决问题。它不仅支持 LLM 之间的对话,还支持 LLM 调用外部工具(如 Python 代码执行、搜索 API、数据库等)来获取信息。
核心特点:
- 多智能体协作:支持多个 AI 智能体(如不同性格的助手)在群聊中协作完成任务。
- 工具调用(Tool Calling):可以让模型自动调用外部工具(如 Python 代码执行、搜索引擎、数据库查询)来获取实时数据。
- 人机交互:支持人类用户(Human)介入智能体的对话,做出决策或提供额外信息。
- 内存与知识检索:支持将对话历史(内存)存入向量数据库,并在需要时检索相关信息。
详细介绍
以下是 AutoGen 框架的主要模块和工作机制:
1. 核心模块
- AssistantAgent(助理智能体):
- 角色:主要负责解决问题和执行任务。
- 特点:通常由 LLM(如 GPT-4)驱动,负责思考、计划和回答。
- UserProxyAgent(用户代理):
- 角色:模拟人类用户的行为。
- 特点:负责提供需求、评估 Assistant 的回答,并决定是否继续执行。
- Tool(工具):
- 角色:外部函数或服务。
- 特点:可以是 Python 函数、REST API、数据库查询或搜索引擎。例如,用户可以定义一个
search_web(query)函数作为工具供 Agent 调用。
- GroupChat(群聊):
- 角色:智能体之间交流的媒介。
- 特点:负责管理消息传递,确保对话顺序和参与者之间的协作。
2. 工作流程
AutoGen 的工作流程通常遵循以下步骤:
- 任务分配:AssistantAgent 接收任务,判断是否需要外部工具。
- 工具调用:如果需要,AssistantAgent 通过
register_for_llm将工具注册给 LLM。模型会生成一个 JSON 格式的函数调用请求(Tool Call)。 - 执行结果返回:AutoGen 解析工具调用请求,执行实际函数(如调用搜索 API),并将结果返回给 AssistantAgent。
- 决策与响应:AssistantAgent 接收结果,继续思考或将最终答案返回给用户。
3. 代码示例
以下是一个简单的 AutoGen 示例,演示了如何创建智能体并让它们进行对话:
from autogen import AssistantAgent, UserProxyAgent, config_list_from_json
# 加载 LLM 配置
config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST")
# 创建智能体
assistant = AssistantAgent(name="Assistant", system_message="You are a helpful AI assistant.", llm_config={"config_list": config_list})
user_proxy = UserProxyAgent(name="User", system_message="You are a user proxy agent.")
# 进行对话
assistant.initiate_chat(user_proxy, message="你好,请帮我写一段Python代码,实现两个数相加。")
运行后,AssistantAgent 会生成代码,UserProxyAgent 负责接收并验证结果。
相关链接
以下是获取 AutoGen 资源的官方链接:
适用场景
AutoGen 非常适合以下应用:
- 复杂的业务流程:如 “租房合同签署” 需要搜索信息、生成合同、校对签名等多步骤协作。
- 技术研发:让 AI 自己搜索最新的科研文献或 Stack Overflow 答案并编写代码。
- 客服系统:AI 先尝试解决问题,如果解决不了则调用外部工单系统或转接人工客服。
- 教育教学:虚拟教师与学生互动,实时调用搜索引擎获取最新的学术资料。
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!