Prompt教程-数学

数学
在整个课程中,我们看到了许多不同的提示方法,可以用于提高LLM的数学能力。最近的一种方法是MathPrompter,它将一些这些方法(CoT、PAL等)统一到了一种技术中。总体思想是将数学问题分解为代数术语,然后使用Python代码以不同的方式解决它。
MathPrompter有四个步骤。我们将使用以下示例问题来解释它们。该示例直接来自论文。
问题:在一家餐厅里,每份成人餐的价格是5美元,儿童免费。如果一组15个人来了,其中8个是儿童,这个组合的用餐费用是多少?
第一步:生成代数模板
第一步是为问题中的每个数字分配一个变量。这样做有助于将问题更容易地转化为抽象的数学问题,以及编程代码。
第二步:数学提示
这一步的目的是将问题表述为代数表达式和Python代码。该步骤有两个同时进行的提示,可以提供问题的多样化表示。
2a:代数表达式
我们可以使用少量样本提示,让LLM将数学问题表示为代数表达式。通过询问LLM生成答案格式(以"Answer ="开头)来实现这一点。
2b:Python代码
我们还可以要求LLM生成解决问题的Python代码。通过询问LLM生成一个Python函数来实现这一点。
答案生成
现在,我们可以使用之前生成的映射来自动填充变量。
映射:{A: 5, B: 15, C: 8}
代数形式:
答案 = 5 * 15 - 5 * 8
Python 函数:
def restaurant_cost(A=5, B=15, C=8):
return A * (B - C)
我们可以使用 Python 来评估这两个答案。
代数形式:
>>> eval("5 * 15 - 5 * 8")
35
Python 函数:
>>> restaurant_cost()
35
步骤 4:自洽性
最后,我们将利用自洽性重新运行上述过程多次(约 5 次),然后取多数答案。
总结
MathPrompter 在 MultiArith数据集上报告了 92.5% 的准确率。这种技术的成功是一个很好的例子,说明 你 作为一个提示工程师可以将本课程中学到的方法结合起来处理更大的问题。