2025-11-03 读 AutoGen 论文
发布于 2025年11月03日 • 1 分钟 • 88 字
Table of contents
最近微软把AutoGen和Semantic Kernel 整合到一个框架了,叫做 Agent Framework。这两个框架,之前一个负责多智能体协作,一个负责写胶水代码,提供流程框架和中间件。
最近看了看AutoGen的论文,主要为了搞清楚它的智能体是如何协作运行的。下面介绍一下原理。
1. 什么是AutoGen?
简单来说,AutoGen就是一个让多个AI智能体能够互相聊天、合作的框架。
1.1 核心需求
AutoGen的设计目标是构建一个多智能体对话框架,具有通用抽象和有效实现,同时具备满足不同应用需求的灵活性。该框架需要考虑两个关键问题:
1.在多智能体协作中,单个智能体如何实现可用、可复用、定制化和高效?
2.如何开发一个能够适应多种智能体对话模式的统一接口?
1.2 技术可行性
AutoGen的提出基于三个关键的技术可行性因素。
首先,大语言模型具备整合反馈信息的能力,这些反馈可以来源于人类或者其他智能体。
其次,智能体能够提供或者接收推理、观察、评价和验证。
最后,在对话过程中,参与者能够提供分析和评价性反馈。基于这三点可以让多智能体协作。
2. 核心概念
2.1 可定制化智能体(Customizable and conversable agents)
AutoGen的核心概念是可定制化和可对话的智能体。Customizable and conversable agents具备两个关键特性:可定制性意味着可以根据需求选择不同的能力;可对话性则指智能体能够接收、反应和响应消息。
2.2 对话编程范式(Conversation programming)
AutoGen提出了一种以智能体间对话为中心的编程范式,这种范式能够简化开发流程,提高效率。对话编程需要考虑两个核心要素:
1.定义具有特定能力和角色的可对话智能体集合
2.通过以对话为中心的计算和控制来编程智能体间的交互行为
3. 智能体能力体系
3.1 三大能力来源
AutoGen的智能体能力由三大来源驱动:大型语言模型、人类和工具。
3.1.1 大型语言模型能力
基于LLM的智能体能够利用高级大型语言模型的多种能力,包括角色扮演、隐性状态推断和在对话历史条件下取得进展的能力。在接口层面,系统还提供结果缓存、错误处理、消息模板等功能。
3.1.2 人类参与能力
AutoGen通过人类支持的智能体在智能体对话中引入人类参与。通过配置可以设置参与的程度和模式。人类支持的智能体在对话过程中根据代理配置征求人类输入。
3.1.3 工具执行能力
工具支持的智能体可以执行各种工具,例如执行代码或者函数,扩展了智能体的功能边界。
3.2 智能体分类体系
AutoGen建立了完整的智能体分类体系:
- ConversableAgent:最高层级的智能体抽象,可以使用LLM、人类和工具
- AssistantAgent:ConversableAgent的子类,专门用于AI助手功能
- UserProxyAgent:ConversableAgent的子类,用于征求人类输入和执行工具
- GroupChatManager:用于管理群组对话的专门组件
4. 对话编程机制
4.1 编程模式
对话编程范式需要考虑两个关键维度:
1.计算(Computation):多智能体对话中智能体为计算响应所采取的行动
2.控制流(Control Flow):计算发生的条件
4.2 自动回复机制
AutoGen的核心创新在于实现了统一接口和自动回复机制,使聊天自动化成为可能。该机制包括send、receive和generate_reply三个核心功能。一旦对话开始,系统可以自动运行,无需额外控制。
智能体自动回复机制是AutoGen的核心特性:
- 一旦某智能体收到来自另一智能体的消息,便自动调用generate_reply并将回复发回给对方,除非满足终止条件
- AutoGen内置了基于LLM推理、代码或函数执行、人工输入的回复函数
- 系统支持注册自定义回复函数,以定制智能体的行为模式
- 例如,在回复发送方之前先与另一智能体对话
- 在该机制下,只要回复函数注册完毕且对话初始化完成,对话流便自然产生
- 智能体对话无需任何额外控制平面即可自然推进
4.3 控制机制
AutoGen通过编程和自然语言的融合实现控制,支持动态对话流,既支持预定义流程,也支持动态对话流。
5. 总结
AutoGen 支持多个 AI 智能体通过对话协作完成任务。它不仅支持智能体之间的交互,还允许人类在关键环节介入,形成“人机协同”的工作流。
AutoGen的重点在于多智能体之间的交互,它最大的优势在于提供通信框架。
- 定义不同的具有不同能力和角色的agents
- 通过以对话为中心的计算和控制来编程智能体之间的交互行为