MRKL系统 (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
插入计算器应用程序中。 这个简单的想法可以很容易地扩展到各种符号计算工具。
考虑以下其他应用示例:
苹果公司股票现在的价格是多少?
当前价格为DATABASE[SELECT price FROM stock WHERE company = "Apple" AND time = "now"]。
纽约的天气怎么样?
天气是WEATHER_API[New York]。
我使用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) LLM。
请参见 此示例 MRKL系统,该系统是使用LangChain构建的。
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). ↩
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. ↩