了解了轻量级的OpenAI Swam、重量级的LangGraph、易用又不失强大的CrewAI后,今天一起来看出自名门的AutoGen。AutoGen是微软公司推出的用于构建多智能体对话式系统的高级框架,用来创建多个AI Agent协作以解决问题的LLM应用。本文内容:

  • **五分钟读懂AutoGen
    **

  • AutoGen实现多智能体Demo

  • AutoGen小结

微软在全新的AutoGen v0.4版本中进行了重新设计开发,提供了一个事件驱动、可扩展的分布式多智能体开发与运行框架,该版本目前处于开发中,后续我们将用独立文章为大家预览新版本。

1

五分钟读懂AutoGen

AutoGen可以帮你快速构建一个多Agent通过对话进行有机协作的小型生态系统。在这个系统中,多个Agent借助对话来实现分工、分享与启发,最后完成输入的任务或问题。说人话就是:

多个Agent边聊天边工作,配合完成复杂任务。

需要注意的是,在AutoGen中,人类也可以特殊的身份成为团队的一员。当然,这个成员的特殊能力就是可以“不够智能”:需要人类给出回应,而非让LLM回应。

**【概念理解】
**

如何“聊着聊着”就把问题解决了呢?看下面的例子:

这个双Agent系统中,我们让“儿子”与“父亲”聊天,答案自然就包含在了对话之中(AutoGen会总结最终结果)。

这是一个复杂点的多Agent场景

三个Agent的团队完成一个调查报告的协作过程:一个负责搜索整理,一个负责审查反思,一个负责制作最终报告。

【工具使用】

会用工具是Agent的基本特征(不能只聊天不干活),在AutoGen中,有两种常见的工具:

  • **函数工具(包括API调用)
    **

  • 代码工具:就是让Agent当码农,并在本地或者docker执行

一个借助代码工具来完成任务的例子:

注意这里的代码编写和代码执行是由不同的Agent负责,这也是AutoGen在使用工具上不同于其他框架的地方:工具的提出与执行是由不同的Agent来完成。

【聊天模式】

聊天也要有秩序,所以最后来了解AutoGen目前版本中的三种基础聊天模式:

1. 双人模式

两个智能体相互聊天的模式:

2. 连续聊天模式

举一个例子,比如玩一个大家抽签比大小的游戏,主持人让每个人依次抽签,最后再让裁判来判决结果:

简单的说,就是一个Agent连续与多个Agent聊天,且每次聊天的结果会带入到下一个聊天中,最后完成任务。

**3. 群聊模式
**

当有一堆Agent在一起聊天时,问题来了,谁是下一个发言者?AutoGen提供了多种决策机制,比如**轮流、随机、人工决定、以及默认的由LLM来决定,**另外还允许定制自己的决策算法(比如有人说脏话就禁言:))。

群聊模式中,需要一个团队管理者,来负责协调与决策下一个发言者。

以上是AutoGen的基础聊天模式,初此之外,AutoGen还提供了嵌套聊天的模式:就是把一个多Agent系统“打包”成一个Agent,用到另一个更大的系统中。

这里揭示了AutoGen与CrewAI的一点区别:AutoGen多个Agent的协作相对更灵活,但也多了一些随机性(高度依赖LLM决策);CrewAI默认采用顺序任务编排,牺牲了灵活性,但多了些确定性。

2

AutoGen实现多智能体Demo

现在我们来实现之前的多智能体Demo:

这个层级模式刚好匹配AutoGen的群聊模式,这里直接给出核心代码:

.....``from autogen import ConversableAgent,GroupChat,GroupChatManager,AssistantAgent,UserProxyAgent   web_searcher = ConversableAgent(       name="web_searcher",       system_message="你是一个搜索助手,会根据输入的关键词进行网络搜索. ",       llm_config={"config_list": [{"model": "gpt-4o-mini"}]},   )   web_searcher.register_for_llm(name="web_search_tool", description="网络搜索工具")(web_search_tool)      emailer = ConversableAgent(       name="emailer",       system_message="你是一个邮件助手,会根据输入的收件人、主题和正文发送邮件. ",       llm_config={"config_list": [{"model": "gpt-4o-mini"}]},   )   emailer.register_for_llm(name="email_tool", description="邮件发送工具")(email_tool)      user_proxy = ConversableAgent(       name="user_proxy",       system_message="你是一个善于回答问题的AI助手,并会执行python代码或进行工具调用。如果没有具体的输入任务,请直接回复DONE",       llm_config={"config_list": [{"model": "gpt-4o-mini"}]},       human_input_mode="NEVER",   )   user_proxy.register_for_execution(name="web_search_tool")(web_search_tool)   user_proxy.register_for_execution(name="email_tool")(email_tool)      group_chat = GroupChat(       agents=[web_searcher,emailer,user_proxy],       messages=[],       max_round=6   )      group_chat_manager = GroupChatManager(       groupchat=group_chat,       system_message="你是一个智能的团队管理者,会根据输入任务与历史消息决定下一步的任务,并选择合适的团队成员来完成。",       llm_config={"config_list": [{"model": "gpt-4o-mini"}]},       is_termination_msg=lambda msg: 'DONE' in msg.get("content"),   )

这里省略了两个工具模拟函数(web_search_tool,email_tool)。其他解释如下:

  • 创建web_searcher与emailer两个Agent,并注册tools,这是AutoGen中工具使用的机制

  • 创建一个user_proxy的Agent。这是一个不同于其他框架的模式,这个Agent将代表人类提出任务与要求,同时工具的执行(代码与函数)需要这个独立的Agent来完成

  • 创建团队与团队管理者,这部分有点类似CrewAI

  • 注意这里用来结束聊天的小技巧:借助is_termination_msg这个参数

一切准备就绪,我们来分配任务:

chat_result = user_proxy.initiate_chat(group_chat_manager,  
 message="搜索今天黑神话悟空的最新消息,发到我邮箱aa@bb.com")

观察运行的输出:

注意看Next Speaker的选择,是由chat_manager根据任务进展的自动选择:

  • 先选择web_searcher搜索网络(实际执行:user_proxy)

  • **然后选择emailer发送邮件(实际执行:user_proxy)
    **

  • 最后chat_manager判断任务已经结束,终止群聊

3

AutoGen小结

尽管AutoGen也是面向多智能体系统设计的开放框架,但相对基于角色扮演的CrewAI更复杂些。当然,从功能角度也更加强大(不考虑CrewAI新的Flows特性),毕竟CrewAI目前的多智能体协作还只支持顺序与层次两种方式。

【优点】

  • 大厂出品,更有技术保障

  • 天然面向多智能体系统而设计

  • 基于对话的协作,更自然与直观

  • 较强的功能与扩展性,适应多种领域任务

  • 支持多种灵活的对话模式、任务分解模式

  • 有较为完善的人类参与的协作机制

  • 提供了AutoGen Studio低代码平台

  • 文档与社区较完善

【缺点】

AutoGen在设计上与CrewAI一样都属于高度依赖于LLM自身来实现多智能体协作的框架,因此存在类似的问题:

  • 复杂流程自定义编排的能力不足(期待正在开发的0.4版本)

  • Agent之间的对话协作可能产生黑盒子效应,较大的不确定性

  • 使用非OpenAI API兼容的本地LLM略麻烦

  • 工具判断与执行的分离不太符合习惯

整体上对AutoGen的使用建议是,更适合如下场景与条件:

  • 有较好的LLM开发技术基础

  • 典型的多Agent应用场景,不建议在如RAG这样的需求中使用

  • 非常适合有人类参与协作监督的场景,比如团队创作、软件编程等

AI大模型学习路线

如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!

扫描下方csdn官方合作二维码获取哦!

在这里插入图片描述

这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!

请添加图片描述
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

100套AI大模型商业化落地方案

请添加图片描述

大模型全套视频教程

请添加图片描述

200本大模型PDF书籍

请添加图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

LLM面试题合集

请添加图片描述

大模型产品经理资源合集

请添加图片描述

大模型项目实战合集

请添加图片描述

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐