跳到主要内容

🟡 LLMs使用工具

MRKL系统1 (Modular Reasoning, Knowledge and Language, pronounced "miracle") 是一种神经符号结构,结合了LLMs(神经计算)和像计算器(符号计算)这样的外部工具,用于解决复杂问题。

MRKL系统由一组模块(例如计算器、天气API、数据库等)和一个路由器组成,决定如何将自然语言查询“路由”到适当的模块。

一个简单的MRKL系统示例是一个可以使用计算器应用程序的LLM。这是一个单模块系统,其中LLM是路由器。当被问到100*100是多少?时,LLM可以选择从提示中提取数字,然后告诉MRKL系统使用计算器应用程序计算结果。这可能如下所示:

100*100是多少?

CALCULATOR [100*100]

MRKL系统将看到单词CALCULATOR,并将100*100插入计算器应用程序中。这个简单的想法可以很容易地扩展到各种符号计算工具。

考虑以下其他应用示例:

  • 一个聊天机器人,能够从用户的文本中提取信息,形成SQL查询,回答有关金融数据库的问题。

苹果公司股票现在的价格是多少?

当前价格为DATABASE[SELECT price FROM stock WHERE company = "Apple" AND time = "now"]。
  • 一个聊天机器人,能够从提示中提取信息,使用天气API检索信息回答有关天气的问题。

纽约的天气怎么样?

天气是WEATHER_API[New York]。
  • 或者更复杂的依赖多个数据源的任务,例如下面这个例子:
示例MRKL系统(AI21)

示例

我使用Dust.tt复现了原始论文中的一个示例MRKL系统,链接在这里。该系统可以读取数学问题(例如20乘以5^6等于多少?),提取数字和运算符号,并将其格式化为计算器应用(例如 20 * 5^6)。然后它将重新格式化的方程式发送给Google的计算器应用程序,并返回结果。请注意,原始论文对路由器(LLM)进行了提示调整,但是我在这个例子中没有进行提示调整。让我们来看看这是如何工作的:

首先,我在Dust的数据集选项卡中制作了一个简单的数据集。

然后,我切换到Specification选项卡,并使用data块加载了数据集。

接下来,我创建了一个llm块,用于提取数字和运算符号。请注意,在提示中,我告诉它我们将使用Google的计算器。我使用的模型(GPT-3)可能已经预先训练了一些关于Google计算器的知识。

然后,我创建了一个code块,其中运行一些简单的JavaScript代码来删除补全结果(completion)中的空格。

最后,我创建了一个search块,将重新格式化的方程式发送给Google的计算器。

下面我们可以看到最终的结果,全部都是正确的!

请随意尝试并进行实验,这是演练场(playground)的链接.

备注

MRKL由AI21开发,最初使用了他们的J-1 (Jurassic 1)2 LLM。

更多内容

请参见 此示例 MRKL系统,该系统是使用LangChain构建的。


  1. Karpas, E., Abend, O., Belinkov, Y., Lenz, B., Lieber, O., Ratner, N., Shoham, Y., Bata, H., Levine, Y., Leyton-Brown, K., Muhlgay, D., Rozen, N., Schwartz, E., Shachaf, G., Shalev-Shwartz, S., Shashua, A., & Tenenholtz, M. (2022). MRKL Systems: A modular, neuro-symbolic architecture that combines large language models, external knowledge sources and discrete reasoning.
  2. Lieber, O., Sharir, O., Lentz, B., & Shoham, Y. (2021). Jurassic-1: Technical Details and Evaluation, White paper, AI21 Labs, 2021. URL: Https://Uploads-Ssl. Webflow. Com/60fd4503684b466578c0d307/61138924626a6981ee09caf6_jurassic_ Tech_paper. Pdf.