type
status
date
slug
summary
tags
category
icon
password
URL
Rating
本系列介绍由 LLM 驱动的 AI Agents 的相关技术和工具:
- 基于大语言模型的AI Agents—Part 1:介绍 AI Agent 的一般框架,背景知识和斯坦福的虚拟小镇论文。
- 基于大语言模型的AI Agents—Part 2(本文):介绍3个热门的 Agent 框架:AutoGPT、GPT-Engineer 和 MetaGPT。
- 基于大语言模型的AI Agents—Part 3:介绍另外几个热门的 Agent 框架:agents、AutoAgents 和 ChatDev(通过agents之间的多轮交互完成任务)。
本次分享的视频链接见文章末尾。
AI Agent 回顾
代理(Agent)指能自主感知环境并采取行动实现目标的智能体。基于大语言模型(LLM)的 AI Agent 利用 LLM 进行记忆检索、决策推理和行动顺序选择等,把Agent的智能程度提升到了新的高度。LLM驱动的Agent具体是怎么做的呢?接下来的系列分享会介绍 AI Agent 当前最新的技术进展。
一个精简的Agent决策流程:
Agent:P(感知)→ P(规划)→ A(行动)
感知(Perception)是指Agent从环境中收集信息并从中提取相关知识的能力。
规划(Planning)是指Agent为了某一目标而作出的决策过程。
行动(Action)是指基于环境和规划做出的动作。
其中,Policy是Agent做出Action的核心决策,而行动又通过观察(Observation)成为进一步Perception的前提和基础,形成自主地闭环学习过程。
接下来介绍3个热门的Agent框架:AutoGPT、GPT-Engineer 和 MetaGPT。
<ins/>
AutoGPT
AutoGPT 定位类似个人助理,帮助用户完成指定的任务,如调研某个课题。AutoGPT比较强调对外部工具的使用,如搜索引擎、页面浏览等。
以下是 AutoGPT 使用的 system prompt,其中
{{...}}
为用户输入:官方视频:
GPT-Engineer
GPT-Engineer 旨在根据自然语言中指定的任务创建一个完整的代码仓库。GPT-Engineer 被指导去构建的一系列较小的组件,并在需要时要求用户输入以澄清问题。
以下是GPT-Engineer的一个任务澄清的样例对话。用户的输入在
{{user input text}}
中。在澄清之后,Agent 进入了代码编写模式。看官方视频,所有文件的内容是一次性生成的。System message:
对话样例:
官方视频:
MetaGPT
MetaGPT 现在可以生成2000行左右代码的项目,未来目标是万行甚至更长。
结构
- Roles
- Actions
- Environment
- Memory
- Tools
- LLM Providers
Multi-Agents 软件公司
创建公司和雇员:
实现时,循环依次调用各个角色的
.run()
函数。记忆(Memory)
Message:
记忆中记录的原始单元,主要记录动作执行后产生的结果。相当于斯坦福Generative Agents中的Observation:
Memory:
Long-Term Memory:
每个角色执行动作后,就会产生新的记忆Message。
Environment
角色(Roles)
角色
Role
定义:每个角色的
.run()
中的流程:当某个角色有多个可选动作时(
len(self._actions)>1
),使用以下的prompt让LLM来选择该执行哪个动作,其中 {history}
包含前面所有动作的输出结果,{states}
就是可选的动作列表:ProductManager
Action WritePRD
使用的 prompt 模板:
Action WritePRD
的一个真实 prompt:
对应的真实输出:
Architect
Action WriteDesign
使用的 prompt 模板:
Action WriteDesign
的一个真实 prompt:
对应的真实输出:
ProjectManager
Action WriteTasks
使用的 prompt 模板:
Action WriteTasks
的一个真实 prompt:
对应的真实输出:
Engineer
Action WriteCode
使用的 prompt 模板:
和之前的一般实现不同,Engineer
有很多单独的代码,做了很多独特的事。Engineer
每次调用 WriteCode
只生成一个文件的代码,按文件列表的顺序逐个生成所有文件的代码。之前的 context
只使用了角色 watch 的动作的结果,而Engineer
传入 WriteCode
的 context
包含前面所有动作的输出结果,以及当前已生成的代码文件。所以这里的 context
特别长,如:
以下是输出的 ocr.py 文件:
总结
ㅤ | AutoGPT | GPT-Engineer | Generative Agents | MetaGPT |
场景 | 个人小助理 | 职业/项目场景 | 生活场景 | 职业/项目场景 |
Agents数量 | 单 | 单 | 多 | 多 |
环境(Environment) | - | - | 其他Agents + 外部世界 | 其他Agents |
与用户交互量 | 无 | 少 | 少 | 无 |
记忆(Memory) | 短期 | 短期 | 短期 + 长期 | 短期为主 |
Agents的动作执行顺序 | - | - | 并行 | 串行 |
动作空间 | 小 | - | 大 | 小 |
输入和输出格式 | 偏结构化 | 偏结构化 | 偏自然语言 | 偏结构化 |
动作轮次 | 少 | - | 多 | 少 |
对反思与规划的要求 | 高 | 低 | 高 | 低;goal 和 plan 基本都事先定好 |
Agents之间如何交互 | - | - | 对话 | 获取其他agent执行动作所产生的结果 |
<ins/>
分享视频
References
- 作者:Breezedeus
- 链接:https://www.breezedeus.com/article/ai-agent-part2
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章