背景:LLM → \to → Agent
ChatGPT为代表的大语言模型就不用过多的介绍了,ChatGPT很强大,但是也有做不到的东西。例如:
- 实时查询问题:实时的天气,地理位置,最新新闻报道,现实世界正在发生和刚结束的信息等
- 不能产生动作:你只能获得语言的回复,而不能让它执行动作。当然也有类似的工作(Reac、AutoGPT)
- 无法访问专有信息源。模型无法访问专有信息,例如公司数据库中的客户名册或在线游戏的状态。
- 缺乏推理能力。某些推理超出了神经方法的能力范围,需要专门的推理过程。我们在上面看到了算术推理的经典例子。 GPT-3 和 Jurassic-1 在 2 位加法上表现良好,令人印象深刻,但在 4 位加法上自信地给出了无意义的答案。随着训练时间的增加、更好的数据和更大的模型,LLM 的性能将会提高,但不会达到 20 世纪 70 年代 HP 计算器的鲁棒性。而数学推理只是冰山一角。
- 微调成本问题。微调和服务多个大型模型是不切实际的。我们也无法针对训练中未涵盖的新任务进一步调整经过多任务训练的 LLM ;由于灾难性遗忘,添加新任务需要对整个任务集进行重新训练。考虑到训练此类模型的成本,这显然是不可行的。
那么Agent又是什么?
agent用来调用外部 API 来获取模型权重中缺失的额外信息(通常在预训练后很难更改),包括当前信息、代码执行能力、对专有信息源的访问等。
四大板块:Planing、Memory、Tools、Action
API-Bank
Tools调用API的工作流程:
- 判断是否需要API调用。
- 确定要调用的正确 API:如果不够好,LLM需要迭代修改 API 输入(例如,确定搜索引擎 API 的搜索关键字)。
- 基于API结果的响应:如果结果不满意,模型可以选择细化并再次调用。
从三个层面评估代理的工具使用能力:
- 评估调用API的能力。给定 API 的描述,模型需要确定是否调用给定的 API、正确调用它并正确响应 API 返回。
- 检查检索 API 的能力。模型需要搜索可能解决用户需求的API,并通过阅读文档来学习如何使用它们。
- 评估除了检索和调用之外规划 API 的能力。考虑到不明确的用户请求(例如安排小组会议、预订旅行的航班/酒店/餐厅),该模型可能必须进行多个 API 调用来解决它。
生成式Agent
生成Agent的设计将 LLM 与记忆、规划和反射机制相结合,使代理能够根据过去的经验进行行为,并与其他代理进行交互。
-
记忆流(Memory stream):是一个长期记忆模块(外部数据库),记录了代理在自然语言中的经验的完整列表。
- 每个元素都是一个观察结果,一个由代理直接提供的事件。 - 代理间通信可以触发新的自然语言语句。
-
检索模型:根据相关性、新近度和重要性,呈现上下文以告知代理的行为。
-
新近度Recency:最近发生的事件得分较高
-
重要性Importance:区分平凡记忆和核心记忆。直接问LLM。
-
相关性Relevance:基于它与当前情况/查询的相关程度。
-
-
反射机制Reflection mechanism:随着时间的推移将记忆合成更高层次的推论,并指导智能体未来的行为。它们是对过去事件的更高层次的总结(<-注意,这与上面的自我反思有点不同)
- 提示 LLM 提供 100 个最新观察结果,并根据一组观察结果/陈述生成 3 个最显着的高级问题。然后请LM回答这些问题。
-
规划和反应:将反思和环境信息转化为行动
- 规划本质上是为了
优化当前与时间的可信度
。
- 规划本质上是为了
-
提示模板: {Intro of an agent X}. Here is X’s plan today in broad strokes: 1)
Relationships between agents and observations of one agent by another are all taken into consideration for planning and reacting. -
规划和反应时都会考虑主体之间的关系以及一个主体对另一个主体的观察。
-
环境信息以树形结构呈现。