什么是agent
在一般语境下,Agent通常被理解为代理。
在LLM语境下(LLM-based Agent),Agent可以理解为某种能自主理解、规划决策、执行复杂任务的智能体。
Agent的核心功能,类似人类“做事情”的过程,可以归纳为三个步骤的循环:
感知(Perception)、规划(Planning)和行动(Action)。
实际上,我们并不在乎Agent的具体形态,只要它能够完成我们交给它的任务即可称之为Agent。
现状和未来
- AI Agent狂潮,始于2023年3月AutoGPT框架项目的诞生。该项目以大语言模型为驱动,通过自动任务分解与智能工具调用,为AI Agent的发展注入了新活力
- 各大厂商争先恐后入局卷GPTs,字节、阿里、腾讯、华为等科技大厂相继推出Agent项目
- 有人说,互联网时代人们把传统行业重新实现了一遍,移动互联网时代又重新做一遍,AI时代可能用Agent把过去重新实现一遍
- Agent是大模型的下一个赛道,一起卷agent吧
agent 基本架构
这是一种典型的agent架构,以LLM为核心,包含了记忆、规划、行动和工具四个模块。
agent 开发模式
普通模式
用于执行标准化任务,通常任务的流程比较固定。
开发者需要提供任务的输入输出,以及任务的执行流程,因为任务的流程比较固定,所以开发者可以直接编写任务的执行流程。
比如:
- 将大象装进冰箱
打开冰箱 => 放进大象 => 关上冰箱 - 文本生成图片
扩写文本 => 调用生图模型 => 返回图片
RAG模式
检索增强生成 (RAG) 是一种使用来自私有或专有数据源的信息来辅助文本生成的技术。
RAG模式下,Agent可以通过检索到的数据或知识来填补LLM的不足,从而生成更加准确的结果。
相当于给LLM外挂了一个数据库,可以通过数据库来辅助生成结果。
后面我会举例使用RAG模式实现chatPDF的例子。
RAG的挑战和局限:
- RAG 依赖于外部知识。如果检索到的信息不正确,RAG 就会生成不准确的结果。
- RAG 的检索部分涉及在大型知识库或网络上进行搜索,这从计算量方面来看,不仅费用高昂,而且速度慢,尽管相比于微调,速度还是快一些,费用也要低一些。
- 要将检索和生成部分无缝集成到一起,这需要进行精心设计和优化,而设计和优化可能会在训练和部署方面造成潜在难题。
Refletion
Reflection 可以类比于学生(Generator)写作业,老师(Reflector)来批改建议,学生根据批改建议来修改,如此反复。
Reflection在Agent中的应用,可以理解为Agent在执行任务的过程中,会不断的反思自己的行为,从而提高准确率。
把大象放进冰箱问题
- 打开冰箱 => (检查冰箱是否打开)
- 放进大象 => (检查大象是否放好)
- 关上冰箱 => (检查冰箱是否关好)
推荐阅读:增强版 - Reflexion
Planing
用于处理复杂任务,解决用户非固定问题
制作一个游戏
写一篇今年广东高考作文
可以参考👶BabyAGI 通过运行一个无限循环的脚本来实现任务的执行和优化。
它按照以下步骤进行工作:
- 从任务列表中获取第一个任务。
- 将任务发送给执行代理,执行代理利用开放式人工智能的 API 完成任务。
- 根据上下文丰富结果,并将结果存储在 Pinecone 中。
- 创建新的任务,并根据整体目标重新设置任务列表的优先级。
Baby AGI 不断循环执行以上步骤,以实现任务的自动化执行和优化。
Multi-agent
多智能体在最近也很出圈,比如「斯坦福小镇」、MetaGPT、清华 ChatDev 等项目,都展示了多角色智能体在群体智能涌现方面的潜力。
多智能体可以协作完成任务,也可以相互竞争,从而提高任务的效率和准确率。
比如MetaGPT,在项目中这样介绍自己的:首家AI软件公司,致力于自然语言编程。
MetaGPT接收一行需求作为输入,并输出用户故事、竞争分析、需求、数据结构、API、文件等。
在公司内部,MetaGPT包括产品经理、架构师、项目经理和工程师。它提供了一个完整的软件公司流程,包括精心协调的标准操作流程。
我用MetaGPT开发了一款贪吃蛇游戏,效果惊人。只花了不到1元人民币和2分钟时间,就开发出了一款贪吃蛇游戏。
只需需要配置openai_key,然后一条命令就达到如下效果
(很多开源agent都需要配置openai_key,推荐使用Fomepay付款,真的超级方便)
1 | python software_company.py "create a snake game" |
总结
我认为Agent不局限于某一种模式,而是可以根据任务的不同,选择不同的模式来实现。
每一种开发模式都对应着一种 prompt 技术和 workflow ,后面我会尝试更深入研究这些技术,希望能够帮助大家更好的开发Agent。
参考
https://developer.nvidia.com/blog/introduction-to-llm-agents/
https://www.elastic.co/cn/what-is/retrieval-augmented-generation
https://blog.langchain.dev/reflection-agents/?ref=dailydev
https://github.com/geekan/MetaGPT