API Bank
要解决两个问题:
1)目前的LLM在使用工具方面的效果如何?
2) LLM使用工具还存在哪些障碍?
理想的效果::通过访问全球工具存储库,LLM可以通过概述实现需求所需的所有步骤来帮助人们规划需求。随后,它将检索工具池中所需的工具,并通过可能的多轮 API 调用来满足人类的需求,从而变得真正有用且无所不知。
一般有两种方法来增强大模型:1)微调 2)上下文学习(这篇文章关注这个)
Tools调用API的工作流程:
- 判断是否需要API调用。
- 确定要调用的正确 API:如果不够好,LLM需要迭代修改 API 输入(例如,确定搜索引擎 API 的搜索关键字)。
- 基于API结果的响应:如果结果不满意,模型可以选择细化并再次调用。
从三个层面评估代理的工具使用能力:
- 评估调用API的能力。给定 API 的描述,模型需要确定是否调用给定的 API、正确调用它并正确响应 API 返回。
- 检查检索 API 的能力。模型需要搜索可能解决用户需求的API,并通过阅读文档来学习如何使用它们。
- 评估除了检索和调用之外规划 API 的能力。考虑到不明确的用户请求(例如安排小组会议、预订旅行的航班/酒店/餐厅),该模型可能必须进行多个 API 调用来解决它。
调用流程
API 调用: 在每个用户语句之后,模型需要确定是否需要 API 调用来访问外部服务,这需要能够了解其知识的边界或是否需要外部操作。这个判断会导致两种不同的选择:定期回复或者启动API调用流程。在定期回复期间,模型可以与人聊天或尝试弄清楚用户的需求并规划完成它们的过程。如果模型已经了解用户的需求并决定启动API调用过程,它将继续后续步骤。
找到合适的API: 为了解决模型的输入限制,模型一开始只给出了API搜索引擎的指令,没有任何具体的API介绍。每次特定 API 调用之前都需要进行 API 搜索。当执行API搜索时,模型应该将用户的需求总结为几个关键词。 API搜索引擎将查找API池,找到最佳匹配并返回相关文档以帮助模型了解如何使用它。检索到的API可能不是模型需要的,因此模型必须决定是修改关键字并重新搜索,还是放弃API调用并回复。
API调用后回复:完成API调用并获得返回结果后,模型需要根据结果采取行动。如果返回的结果符合预期,模型可以根据结果回复用户。如果API调用出现异常或者模型对结果不满意,模型可以根据返回的信息选择细化并再次调用,或者放弃API调用并回复。
系统设计
评估系统主要包含53个API、支撑数据库和ToolManager。完整的API列表附在附录A中。构建的系统包含了生活和工作中最常见的需求。其他类型的人工智能模型也以 API 的形式抽象出来,供法学硕士使用,这将扩展模型特定方面的功能。此外,还包括一些操作系统接口,以允许模型控制外部应用程序。
AI model
AI模型正如我们之前所说,系统中还涉及其他AI模型,例如ImageCaption、SpeechRecognition、Translate和DocumentQA。将它们视为API接口,LLM不需要了解它们的模型细节或端到端联合训练。他们只需要知道它们的目的和输入/输出格式,然后就可以使用这些人工智能模型来增强特定方面的能力。
API
我们构建了大约53个API,例如搜索引擎、日历查询、智能家居控制、酒店预订等。每个API包含三类API描述信息:功能描述、输入参数和输出参数。对于数据库相关的API,它们有一个参数可以用来指定要使用的数据库。
- 三级API调用Prompt:
- 输出例子:
- https://ar5iv.labs.arxiv.org/html/2304.08244_immersive_translate_auto_translate=1
MRKL
MRKL 系统由一组可扩展的模块(我们称之为“专家”)和一个路由器组成,该路由器将每个传入的自然语言输入路由到能够最好地响应输入的模块(该模块的输出可以是MRKL 系统,或路由到另一个模块)。这些模块可以是:
- 神经网络,包括通用的大型语言模型以及其他较小的专用语言模型。
- 符号,例如数学计算器、货币转换器或对数据库的API 调用
MRKL的优势:
- 安全回退:如果输入与任何现有专家模块不匹配,路由器会将输入直接发送到通用大型LLM。
- 强大的可扩展性:由于每位专家都经过独立培训,因此我们能够以低廉的成本添加新功能,同时保证它们不会损害现有功能的性能。唯一需要重新训练的组件是路由器,这是一项相对轻量级的任务。
- 可解释性:当路由器调用特定模块时,通常具有为 MRKL 系统输出提供基本原理的附带好处(1+1=2,因为计算器是这么说的”);现有语言模型严重缺乏此类解释。
- 最新信息:外部API的集成允许MRKL系统挂钩动态知识库,并正确回答静态模型无法回答的输入。
- 专有知识:访问专有数据库和其他信息源。
- 组合性:通过将复合多跳输入路由到不同的专家,我们能够自然地集成他们的响应并正确地处理复杂的输入。
- https://ar5iv.labs.arxiv.org/html/2205.00445_immersive_translate_auto_translate=1
斯坦福小镇
-
大名鼎鼎的斯坦福小镇项目:https://arxiv.org/abs/2304.03442
生成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. -
规划和反应时都会考虑主体之间的关系以及一个主体对另一个主体的观察。
-
环境信息以树形结构呈现。