从单 Agent 到多智能体协同:微软 AutoGen 框架深度拆解,Studio 工具助你快速落地 AI 应用
本文介绍了微软推出的AutoGen框架,这是一个支持多智能体协同工作的编程工具,旨在简化大模型应用开发。AutoGen通过模拟人类分工协作模式,突破单智能体的限制,提高任务处理效率,适用于复杂开发环境。框架核心功能包括创建定制化Agent、管理多Agent对话环境以及群聊管理,并提供了可视化工具AutoGen Studio以简化应用开发。文章还通过代码示例展示了单Agent对话、双Agent交互和
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】
清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷】
文章目录
- GPT多模态大模型与AI Agent智能体系列一百七十九
- 第7章/AutoGenSimpleChat.py
- 第7章/AutoGenMultiAgent.py
- 创建一个名为'Student_Agent'的学生Agent实例
- 这个代理扮演一个渴望学习的学生角色
- 'llm_config'参数包含了用于大模型推理的配置列表
- 创建一个名为'Teacher_Agent'的教师Agent实例
- 这个代理扮演一个数学老师的角色
- 由'student_agent'发起一个对话,接收方为'teacher_agent'
- 'message'参数是学生提出的问题
- 'summary_method'参数指定了对话摘要的生成方法
- 'max_turns'参数限制了对话的最大轮数
- 总结
GPT多模态大模型与AI Agent智能体系列一百七十九
从单 Agent 到多智能体协同:微软 AutoGen 框架深度拆解,Studio 工具助你快速落地 AI 应用
7.2.4 AutoGen
AutoGen是微软公司发布的一个编程框架,旨在简化大模型应用的开发过程。这个框架的核心在于支持多个Agent之间的互动合作,以解决复杂的任务。每个Agent都可以被定制,以扮演不同的角色,例如程序员、公司高管或设计师等,甚至可以是这些角色的组合。通过这种方式,AutoGen使得大模型能够模拟人类间的对话和协作,从而高效地处理工作流。
AutoGen的设计理念在于促进不同Agent之间的交流和协作,以便于它们能够共同完成任务。这种多Agent系统允许各个组件专注于特定的子任务,并通过对话机制来协调行动,从而实现整体目标的优化。此外,AutoGen还提供了自动化的流程管理和优化工具,进一步提升了工作效率。除了AutoGen框架本身,微软还推出了AutoGen Studio,这是一个更为直观的工具,它为用户提供了一个可视化界面,用以定义、修改智能体参数,与智能体交互,添加技能,并管理会话。AutoGen Studio的应用场景非常广泛,包括但不限于自动化文档生成、多智能体协作的客户服务、数据分析和报告,以及个性化学习等。总而言之,AutoGen及其Studio版本为开发者提供了一套强大的工具集,以支持构建复杂且高效的基于代理的人工智能应用。
1.多智能体框架优势
和AutoGPT不同,AutoGen是一个多智能体框架,具有以下优势:
(1)模拟人类分工协同:Multi-Agent框架能模仿人类分工协作模式,有效解决复杂问题。
(2)突破单Agent限制:单Agent在处理长上下文时受限,而Multi-Agent框架通过功能拆分,避免超过上下文窗口限制。
(3)提高处理效率:单一Agent维护大量上下文可能导致处理效率降低,而Multi-Agent框架中每个Agent专注于特定任务或技能,理论上表现更佳。
(4)适应复杂开发环境:在开发应用过程中,多个开发团队需协同工作,Multi-Agent框架通过对应用功能拆分,提高开发效率和团队协作效果。
综上所述,多智能体框架因能更好模拟人类协作、突破单Agent限制及适应复杂开发环境等优势,受到业界广泛关注和研究。
2.AutoGen基本原理
AutoGen是一个相对简单的框架,通过创建、管理和对话环境设置,实现多Agent协作和任务解决,主要功能包括:
(1)创建Agent:AutoGen定义了Agent类,用于定义和实例化特定Agent。这些Agent具备基本对话能力,能根据接收消息生成回复。
(2)多Agent对话环境:通过GroupChat类管理多Agent参与的群聊环境,维护聊天记录、发言者选择/转换规则、下一个发言者和群聊终止时机。
(3)群聊管理:GroupChatManager作为Agent,实际管理群聊环境,确保顺畅对话和任务完成。
接下来针对单个Agent、两个Agent之间对话、群聊管理分别详细讲解。
1)单个Agent
AutoGen是一个开源的对话系统框架,用于构建和管理复杂的对话场景。在AutoGen中,Agent是对话系统的核心组成部分,它代表了一个可以进行交互的实体。AutoGen中的Agent设计旨在提供一种灵活且可扩展的方式来处理和生成对话。Agent的核心功能包括发送和接收消息、生成回复以及维护对话状态。在AutoGen框架中,Agent的构建遵循一定的层次结构,其中ConversableAgent类实现了Agent协议的基本方法,而AssistantAgent、UserProxyAgent和GroupChatAgent则在此基础上添加了特定的功能和行为模式。在AutoGen中,Agent的行为模式主要由以下几个方面决定:
(1)提示词:Agent的行为很大程度上取决于其使用的提示词(system_message)。提示词定义了Agent在接收到消息时应该如何响应。例如,一个Agent可能会根据提示词生成 Python代码,然后将代码发送给另一个Agent执行。
(2)工具:Agent可以注册工具函数,这些函数可以在Agent的对话过程中被调用。例如,一个Agent可以注册一个函数来查询数据库或执行网络请求。这些工具为Agent提供了执行特定任务的能力。
(3)回复逻辑:Agent的回复逻辑决定了它如何生成回复。这可以通过在generate_reply方法中添加自定义逻辑来实现。例如,一个Agent可以在生成回复之前查询知识库,以确保其回复的准确性和相关性。
在AutoGen中,Agent类的继承关系如下:
(1)Agent:这是所有AutoGen Agent的基类。它定义了Agent必须具备的基本属性和行为,如name、description、send、receive和generate_reply方法。
(2)LLMAgent:这是一个封装了大模型的Agent。它在Agent的基础上增加了与大模型交互所需的功能。
(3)ConversableAgent:这个类实现了Agent规定的各种方法,并且处理了对话消息的记录和摘要生成等功能。
(4)AssistantAgent、UserProxyAgent和GroupChatAgent:这些类在ConversableAgent的基础上添加了特定的system_message和description,提供了更具体的对话行为。
下面通过一个简单的AutoGen helloworld应用来理解,代码如下:
第7章/AutoGenSimpleChat.py
from autogen import ConversableAgent, UserProxyAgent, config_list_from_json
def main():
# 从环境变量或文件中加载LLM推理端点。
# 例如,如果您在当前工作目录下创建了一个名为OAI_CONFIG_LIST的文件,该文件将被用作配置文件。
config_list = config_list_from_json(env_or_file=“OAI_CONFIG_LIST”)
# 创建使用大模型的助理Assistant Agent
assistant = ConversableAgent(“agent”, llm_config={“config_list”: config_list})
# 创建代表用户参与对话的Agent
user_proxy = UserProxyAgent(“user”, code_execution_config=False)
# 让助理开始对话。当用户输入exit时,对话将结束。
assistant.initiate_chat(user_proxy, message=“今天我能为您做些什么?”)
if name == “main”:
main()
这段代码展示了如何使用AutoGen库创建一个简单的聊天应用。
2)两个Agent之间对话
在AutoGen框架中,创建两个Agent之间的对话是一个简单直接的过程。通过定义每个Agent的角色和它们的交互方式,可以构建出一个模拟的对话场景。下面提供一个示例,创建了一个学生Agent(Student_Agent)和一个教师Agent(Teacher_Agent),分别赋予了它们学习和教学的角色。学生Agent询问教师Agent关于三角不等式的定义,同时设置了对话的最大轮数为两轮,并指定了摘要方法为reflection_with_llm。这意味着在对话结束后,会生成一个基于大模型的反思性摘要,以总结对话的主要内容。整个对话的结果存储在chat_result变量中。代码如下:
第7章/AutoGenMultiAgent.py
import os
from autogen import ConversableAgent
创建一个名为’Student_Agent’的学生Agent实例
这个代理扮演一个渴望学习的学生角色
'llm_config’参数包含了用于大模型推理的配置列表
student_agent = ConversableAgent(
name=“Student_Agent”,
system_message=“你是一个愿意学习的学生。”,
llm_config={“config_list”: [{“model”: “gpt-4”, “api_key”: os.environ[“OPENAI_API_KEY”]}]}
)
创建一个名为’Teacher_Agent’的教师Agent实例
这个代理扮演一个数学老师的角色
teacher_agent = ConversableAgent(
name=“Teacher_Agent”,
system_message=“你是一个数学老师。”,
llm_config={“config_list”: [{“model”: “gpt-4”, “api_key”: os.environ[“OPENAI_API_KEY”]}]}
)
由’student_agent’发起一个对话,接收方为’teacher_agent’
'message’参数是学生提出的问题
'summary_method’参数指定了对话摘要的生成方法
'max_turns’参数限制了对话的最大轮数
chat_result = student_agent.initiate_chat(
teacher_agent,
message=“什么是三角不等式?”,
summary_method=“reflection_with_llm”,
max_turns=2,
)
通过这种方式,AutoGen提供了一个灵活的平台,允许开发者构建复杂的对话系统,无论是单个Agent还是多个Agent之间的交互。这种模块化的设计使得对话管理变得简单高效,同时也便于扩展和维护。
3)群聊管理
在AutoGen框架中,当涉及到两个以上的多Agent之间的对话时,可以使用GroupChatManager来管理和控制群聊的流程。GroupChatManager是ConversableAgent的一个子类,它负责选择发言的Agent,并将响应广播给聊天室内的其他Agent。GroupChatManager提供了多种选择下一个发言者的方法,包括自动选择、手动选择、随机选择、顺序发言,以及通过自定义函数来决定。为了更好地控制群聊中的发言顺序,GroupChat类提供了一个参数allowed_or_disallowed_speaker_transitions,允许开发者指定当某个Agent发言后,哪些Agent可以成为下一个发言者。这为构建复杂的对话拓扑提供了灵活性,例如层级化或扁平化的对话结构。此外,通过传入一个图形状的结构,可以精确地控制Agent之间的发言顺序,从而实现更加精细化的对话管理。这种设计使得AutoGen非常适合构建复杂的对话系统,无论是简单的两个Agent之间的对话,还是涉及多个Agent的群聊场景。
AutoGen框架支持在群聊中嵌套另一个群聊,这种嵌套对话(Nested Chats)的特性允许开发者将一个群聊封装成一个单一的Agent,以便在更复杂的工作流程中使用。这种设计提高了对话系统的灵活性和模块化程度。要实现嵌套对话,首先需要定义一个群聊,然后在这个群聊中注册一个嵌套的群聊。这可以通过设置一个触发器(Trigger)来实现,当满足特定条件时,即触发器表达式为真时,嵌套的群聊将被调用来处理问题,并将结果返回给主群聊。这种嵌套对话的机制使得AutoGen非常适合构建复杂的对话系统,它允许开发者将对话分解成更小、更易于管理的部分。通过这种方式,可以创建出高度动态和交互式的对话体验,同时保持了代码的清晰和组织性。
3.AutoGen Studio可视化Web工具
AutoGen和AutoGen Studio都是由微软研究团队开发的,用于创建和管理AI智能体。
AutoGen是一个更底层的工具,它提供了创建和管理AI智能体的框架,而AutoGen Studio则提供了一个更直观的用户界面,使得用户可以更容易地使用AutoGen框架来创建和管理AI智能体。AutoGen Studio主要特性包括:
(1)智能体和工作流定义修改:用户可以在界面上定义和修改智能体的参数,以及它们之间的通信方式。
(2)与智能体的互动:通过UI创建聊天会话,与指定的智能体交互。
(3)增加智能体技能:用户可以显式地为他们的智能体添加技能,以完成更多任务。
(4)发布会话:用户可以将他们的会话发布到本地画廊。是
接下来介绍下安装过程。AutoGen Studio需要Python 3.11及以上版本。AutoGen使用OpenAI的GPT-4大模型来执行任务,需要一个OpenAI Key,并在你系统里设置OpenAI密钥环境变量:OPENAI_API_KEY=your_openai_api_key。AutoGen Studio安装使用命令pip install autogenstudio即可,安装完成后,使用autogenstudio ui --port 8081命令启动AutoGen Studio,如果应用程序没有自动启动,请打开Web浏览器并转到以下URL:http://128.0.0.1:8081/。AutoGen Studio首页如图7-3所示。
图7-3 AutoGen Studio首页
AutoGen Studio的组成有:
(1)构建部分(Build):定义智能体属性和工作流。
(2)游乐场(Playground):与在构建部分定义的智能体工作流进行互动。
(3)画廊(Gallery):分享和重用工作流配置和会话。
为了验证设置是否正常工作,单击“New”按钮并选择可视化Agent工作流,创建了一个简单的AI Agent。以下是一个示例提示消息,点击右侧发送按钮就可以执行:
Plot a chart of NVDA and TESLA stock price for 2023. Save the result to a file named nvda_tesla.png
执行完成后的界面如图7-4所示。
图7-4 AutoGen Studio示例提示执行结果
Agent成功生成了请求的CSV文件,需要注意的一点是,在用于实时进度监控的用户界面中不支持流式响应。当Agent完成任务时,结果会同时显示。为了监控进度,可以打开终端,实时观察人工智能代理之间的消息交换,如图7-5所示。
图7-5 AutoGen Studio终端
AutoGen已被应用于多种场景,如数学问题解决、多代理编码、增强型检索聊天、动态群组聊天、ALF聊天和对话式国际象棋等,展现了其在简化和提升多智能体应用程序开发性能方面的潜力。
更多技术内容
更多技术内容可参见
清华《GPT多模态大模型与AI Agent智能体》书籍配套视频【陈敬雷】。
更多的技术交流和探讨也欢迎加我个人微信chenjinglei66。
总结
此文章有对应的配套新书教材和视频:
【配套新书教材】
《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)【陈敬雷编著】【清华大学出版社】
新书特色:《GPT多模态大模型与AI Agent智能体》(跟我一起学人工智能)是一本2025年清华大学出版社出版的图书,作者是陈敬雷,本书深入探讨了GPT多模态大模型与AI Agent智能体的技术原理及其在企业中的应用落地。
全书共8章,从大模型技术原理切入,逐步深入大模型训练及微调,还介绍了众多国内外主流大模型。LangChain技术、RAG检索增强生成、多模态大模型等均有深入讲解。对AI Agent智能体,从定义、原理到主流框架也都进行了深入讲解。在企业应用落地方面,本书提供了丰富的案例分析,如基于大模型的对话式推荐系统、多模态搜索、NL2SQL数据即席查询、智能客服对话机器人、多模态数字人,以及多模态具身智能等。这些案例不仅展示了大模型技术的实际应用,也为读者提供了宝贵的实践经验。
本书适合对大模型、多模态技术及AI Agent感兴趣的读者阅读,也特别适合作为高等院校本科生和研究生的教材或参考书。书中内容丰富、系统,既有理论知识的深入讲解,也有大量的实践案例和代码示例,能够帮助学生在掌握理论知识的同时,培养实际操作能力和解决问题的能力。通过阅读本书,读者将能够更好地理解大模型技术的前沿发展,并将其应用于实际工作中,推动人工智能技术的进步和创新。
【配套视频】
清华《GPT多模态大模型与AI Agent智能体》书籍配套视频【陈敬雷】
视频特色: 前沿技术深度解析,把握行业脉搏
实战驱动,掌握大模型开发全流程
智能涌现与 AGI 前瞻,抢占技术高地
上一篇:《GPT多模态大模型与AI Agent智能体》系列一》大模型技术原理 - 大模型技术的起源、思想
下一篇:DeepSeek大模型技术系列五》DeepSeek大模型基础设施全解析:支撑万亿参数模型的幕后英雄
更多推荐
所有评论(0)