一句话大幅提升GPT的回答正确率

时间:2024-10-27 09:10:16

大家使用GPT的时候,难免会发现,有时候他回复的内容是有些错误的。

首先GPT 这类产品,它是一个统计语言模型,本质上是基于过去看到过的所有数据,用统计学意义上的预测结果进行下一步的输出。

这也就是为什么你在使用 GPT 的时候,它的答案是一个字一个字地出来,而不是直接给你的原因,因为答案是一个字一个字算出来的。

当它拿到的数据里有逻辑,它就会通过统计学的方法将这些逻辑找出来,并将这些逻辑呈现给你,让你感觉到它的回答很有逻辑。 在计算的过程中,模型会进行很多假设运算。比如解决某个问题是从A 到B再到 C,中间有很多假设。

它第一次算出来的答案错误的原因,只是因为它在中间跳过了一些步骤(B)。而让模型一步步地思考,则有助于其按照完整的逻辑链(A>B>C)去运算,而不会跳过某些假设,最后算出正确的答案。所以, [Let“s think step by step] 就是强制 ChatGPT 一步步推理,这样就会提高正确答案的概率。

举个例子,简单的鸡免同笼问题,正常提问GPT的回复他是错误的:

我:鸡免同笼,上有40个头,下有100 只足,鸡免各有多少只?

GPT: 让我们使用代数来解决这个问题。假设鸡的数量为x,免的数量为y。
根据题目中的信息,我们可以得到两个方程:
1.鸡免的总数量: x +y= 100
2.鸡免的总头数: 2x + 4y = 40
我们可以使用这两个方程来解决这个问题。首先,我们通过第一个方程得到一个关于x的表达式:
x=100-y
将x的值代入第二个方程中:
2(100 -y)+ 4y= 40
化简这个方程:
200 - 2y + 4y = 40
200 + 2y = 40
2y = 40-200
2y =-160
y=-80
这个解是不合理的,因为兔子的数量不能为负数。因此,我们可以得出结论: 这个问题没有解,或者题目中存在错误。请检查题目的条件和数据是否正确。

在未尾加上prompt: Let's think step by step

我:例:鸡免同笼,上有40个头,下有100 只足。鸡免各有多少只?Lets think step by step,请用中文回复。

GPT:好的,让我们逐步思考这个问题
首先,我们可以假设鸡的数量为x,兔的数量为y。
根据题目中的信息,我们知道上面有40个头,也就是说鸡和免的数量加起来是40,因此我们可以得到第一个方程:
1. 鸡+兔=40(x+y=40)
另外,题目还告诉我们下面有100只足,也就是说鸡的脚加上免的脚的总数是100,因为鸡有2只脚,免有4只脚,所以可以得到第二个方程:
2.2*鸡的数量+4*免的数量=100(2x+ 4y = 100)
现在我们有了一个方程组,可以通过解方程组来求解鸡和兔的数量.我们可以使用第一个方程求解出一个变量,例如将x表示为y的函数
x= 40-y
然后将x的值代入第二个方程!
2*(40-y)+ 4y= 100
化简这个方程:
80 - 2y + 4y = 100
2y = 20
y=10
现在我们知道免的数量是10只,将这个值代入第一个方程可以求出鸡的数量:
x+ 10 = 40
x=30
所以,答案是鸡有30只,兔有10只。

升级版prompt: Let's work this out in a step by step way to be sure we have the rightanswer.

我:鸡免同笼,上有40个头,下有100 只足,鸡免各有多少只?Let's work this outin a step bystep way to be sure we have the right answer请用中文回复。

GPT: 好的,我们逐步解决这个问题,确保我们得到正确的答幸.
假设鸡的数量为x,兔的数量为y。
根据题目中的信息,我们知道上面有40个头,所以鸡和免的数量之和是40,我们可以得到方程:
1.鸡+兔=40(x+y= 40)
另外,题目还告诉我们下面有100只足,因为鸡有2只脚,兔有4只脚,所以可以得到方程!2.2*鸡的数量+4*免的数量=100(2x + 4y = 100)现在我们有一个方程组,我们可以通过解方程组来求解鸡和免的数量我们可以使用第一个方程将x表示为y的函数:
x= 40-y
然后将x的值代入第二个方程
2*(40-y)+ 4y = 100
化简这个方程:
80 - 2y + 4y = 100
2y = 20
y=10
现在我们知道免的数量是10只,将这个值代入第一个方程可以求出鸡的数量!
x+10 =40
x=30
所以,答案是鸡有30只,免有10只。

有了这两句prompt,能大大提升GPT的回答正确率.