

🚀 高级应用
概述
到目前为止,我们已经看到了许多提示/提示工程方法。现在,我们将讨论一些关于提示的高级应用程序,通过互联网或其他外部来源搜索信息来解决复杂的推理任务。
🟡 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构建的。
- 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. ↩
- 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. ↩
🟡 具有推理和行动能力的LLMs
ReAct1(reason, act)是一种使用自然语言推理解决复杂任务的语言模型范例。ReAct旨在用于允许LLM执行某些操作的任务。例如,在MRKL系统中,LLM可以与外部API交互以检索信息。当提出问题时,LLM可以选择执行操作以检索信息,然后根据检索到的信息回答问题。
ReAct系统可以被视为具有推理和行动能力的MRKL系统,。
请查看以下图像。顶部框中的问题来自HotPotQA2,这是一个需要复杂推理的问答数据集。 ReAct能够首先通过推理问题(Thought 1),然后执行一个动作(Act 1)来向Google发送查询来回答问题。然后它收到了一个观察(Obs 1),并继续进行这个思想,行动,观察循环,直到达到结论(Act 3)。

ReAct System (Yao et al.)
具有强化学习知识的读者可能会认为,这个过程类似于经典的RL循环:状态,行动,奖励,状态,…。ReAct在其论文中对此进行了一些规范化。
结论
谷歌在ReAct的实验中使用了PaLM3 LLM。与标准提示(仅问题)、CoT和其他配置进行比较表明,ReAct在复杂推理任务方面的表现是有希望的。谷歌还对涵盖事实提取和验证的Fever数据集4进行了研究。

ReAct Results (Yao et al.)
- Yao, S., Zhao, J., Yu, D., Du, N., Shafran, I., Narasimhan, K., & Cao, Y. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. ↩
- Yang, Z., Qi, P., Zhang, S., Bengio, Y., Cohen, W. W., Salakhutdinov, R., & Manning, C. D. (2018). HotpotQA: A Dataset for Diverse, Explainable Multi-hop Question Answering. ↩
- Chowdhery, A., Narang, S., Devlin, J., Bosma, M., Mishra, G., Roberts, A., Barham, P., Chung, H. W., Sutton, C., Gehrmann, S., Schuh, P., Shi, K., Tsvyashchenko, S., Maynez, J., Rao, A., Barnes, P., Tay, Y., Shazeer, N., Prabhakaran, V., … Fiedel, N. (2022). PaLM: Scaling Language Modeling with Pathways. ↩
- Thorne, J., Vlachos, A., Christodoulopoulos, C., & Mittal, A. (2018). FEVER: a large-scale dataset for Fact Extraction and VERification. ↩
🟡 代码推理
程序辅助语言模型(Program-aided Language Models, PAL)1 是另一个MRKL系统的例子。给定一个问题,PAL能够编写代码解决这个问题。它将代码发送到编程运行时以获得结果。PAL的中间推理是代码,而CoT的是自然语言。

PAL 示例 (Gao et al.)
需要注意的是,PAL实际上交织了自然语言(NL)和代码。上面的图片中,蓝色的是PAL生成的自然语言推理。虽然图中没有显示,PAL实际上在每行自然语言推理前生成’#’,以便编程运行时将其解释为注释。
示例
让我们看一个PAL解决数学问题的例子。我使用了一个三样本的提示,这是这个提示1的简化版本。
我将使用langchain
,这是一个用于链接LLM功能的Python包。首先,需要安装一些程序:
!pip install langchain==0.0.26
!pip install openai
from langchain.llms import OpenAI
import os
os.environ[“OPENAI_API_KEY”] = “sk-YOUR_KEY_HERE”
然后,我们可以创建一个GPT-3 davinci-002实例(当使用此对象时会进行API调用):
llm = OpenAI(model_name=’text-davinci-002′, temperature=0)
这是提示:
MATH_PROMPT = ”’
Q: There were nine computers in the server room. Five more computers were installed each day, from monday to thursday. How many computers are now in the server room?
# solution in Python:
“””There were nine computers in the server room. Five more computers were installed each day, from monday to thursday. How many computers are now in the server room?”””
computers_initial = 9
computers_per_day = 5
num_days = 4 # 4 days between monday and thursday
computers_added = computers_per_day * num_days
computers_total = computers_initial + computers_added
result = computers_total
return result
Q: Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does he have now?
# solution in Python:
“””Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does he have now?”””
toys_initial = 5
mom_toys = 2
dad_toys = 2
total_received = mom_toys + dad_toys
total_toys = toys_initial + total_received
result = total_toys
Q: Jason had 20 lollipops. He gave Denny some lollipops. Now Jason has 12 lollipops. How many lollipops did Jason give to Denny?
# solution in Python:
“””Jason had 20 lollipops. He gave Denny some lollipops. Now Jason has 12 lollipops. How many lollipops did Jason give to Denny?”””
jason_lollipops_initial = 20
jason_lollipops_after = 12
denny_lollipops = jason_lollipops_initial – jason_lollipops_after
result = denny_lollipops
Q: {question}
# solution in Python:
”’
现在我们可以将组合好的提示传递给GPT-3。
llm_out = llm(MATH_PROMPT.format(question=question))
print(llm_out)
输出是:
“””Emma took a 60 minute plane ride to seattle. She then took a 2 hour train ride to portland, and then a 30 minute bus ride to vancouver. How long did it take her to get to vancouver?”””
plane_ride = 60
train_ride = 2 * 60 # 2 hours in minutes
bus_ride = 30
total_time = plane_ride + train_ride + bus_ride
result = total_time
最后,我们可以将这段代码传递给 Python 运行时以获得答案:
exec(llm_out)
print(result)
输出是 210,这是正确的答案。
可以在Jupyter 笔记本查看这个例子。
更多
也可以看看 PAL’s colab example.
- Gao, L., Madaan, A., Zhou, S., Alon, U., Liu, P., Yang, Y., Callan, J., & Neubig, G. (2022). PAL: Program-aided Language Models. ↩
欢迎免费使用GPT对话,感受ChatGPT的魅力!AI爱好者 – 最具实力的中文AI交流社区平台 (aiahz.com)
长按扫描二维码进群领资源
