本系列文章跟随《MetaGPT多智能体课程》(https://github.com/datawhalechina/hugging-multi-agent),深入理解并实践多智能体系统的开发。
本文为该课程的第二章(智能体综述及多智能体框架介绍)笔记)。
0. 温故而知新 - 再看 AI Agent 是什么
前面文章已经介绍过我理解的 AI Agent 的概念。
- 智能体就是像人一样,能理解现实中的事务,有记忆,会思考,会总结,会学习,像人一样会规划,会决策,会使用各种工具来完成某项任务。
- 多智能体,就像一个团队,大了说像我们现在生活的社会,每个智能体有自己的职能和领域,人与人之间通过协作,能完成更加复杂和庞大的目标。
再看这张经典的图:
现在看来,中间的Agent应该换为LLM更为合适,而整张图才能叫做Agent。也就是说:Agent是上图中所有能力的集合,以LLM为大脑,来决定完成任务所需的步骤,规划执行该使用哪些工具,该得到什么结果。再辅以记忆能力,让整个过程像人一样能够自主决策,自主行动以自主达到目的。
1. 一个AI Agent实例介绍 - BabyAGI
项目地址:https://github.com/yoheinakajima/babyagi/blob/main/README.md
其运行流程如下:
(1)从任务列表中提取第一个任务
(2)将任务发送到执行代理(Execution Agent),该Agent使用LLM根据上下文完成任务。
(3)丰富结果并将其存储在向量数据库中
(4)创建新任务,并根据上一任务的目标和结果重新确定任务列表的优先级。
(5)重复以上步骤
其中涉及四个Agent,其中前三个Agent都利用了大模型的能力来进行任务规划和总结:
- Execution Agent 接收目标和任务,调用大模型 LLM来生成任务结果。
- Task Creation Agent 使用大模型LLM 根据目标和前一个任务的结果创建新任务。它的输入是:目标,前一个任务的结果,任务描述和当前任务列表。
- Prioritization Agent 使用大模型LLM对任务列表进行重新排序。它接受一个参数:当前任务的 ID
- Context Agent 使用向量存储和检索任务结果以获取上下文。
运行起来后的过程可以参考这篇文章:babyagi: 人工智能任务管理系统
2. 多智能体框架比较
对市面上多智能体框架了解的不多,目前为止,只用过 MetaGPT、AutoGPT,听过AutoGen。想了解更多的,可以参考这篇文章 基于大语言模型的AI Agents—Part 3,里面总结比较了常见的多智能体框架:
这里我只对MetaGPT和AutoGPT的使用感受做下比较和说明,自己的感受,个人观点,欢迎批评指正。
- AutoGPT更多的是依赖大模型去进行规划和行动,个人感觉有点过于依赖大模型的能力了。而目前而言,大模型的能力还远没有达到能自主规划和决策行动的地步,这使得AutoGPT的执行结果非常地不可控,很难达到自己想要的效果。并且其是单智能体,能完成的工作相对比较简单。接口也不太好用。
- MetaGPT更多的是依赖事先定义好的SOP(标准作业流程),这使得任务的执行过程变得相对可控,最大限度的保证任务的正确执行。并且可以是多智能体,能执行的任务相对复杂。接口封装也比较清晰。尤其是Team、Role和Action三个抽象,真的将Agent抽象为人。总结起来,MetaGPT的工作流程就像:SOP是制订了一条标准化的流水线,然后Role是分布在流水线各个位置的打工人,大家各司其职,合作共赢。
3. 警告?
Agent因为涉及到多个步骤,而且大模型的能力并没有我们想象地那么强,如果不加限制,很容易陷入死循环… 这将是你财富的直接损失… 所以一定要谨慎。正如 BabyAGI里的警告: