本文是 GPT4 提问技巧系列的第四篇,全部系列文章:
在我们的生活中,当面临复杂问题时,通常需要花费一些时间来深思熟虑。正如一位作家在撰写一篇文章时需要时间来组织思路和打磨措辞,或者一位棋手在对弈时需要时间来分析局势和制定策略一样,深思熟虑是一种必要的过程。人工智能也有类似的需求,确切地说,GPT 也需要一些时间来为我们提供更深入、更精确的答案。
您可能会疑惑:“机器怎么会需要时间来思考?”这是一个很好的问题。事实上,给GPT-4模型“思考”的时间,并不是字面意义上的让它思考,而是给它更多的机会来搜索、分析和优化它的回答。这与给一位作家时间来组织思路和打磨措辞,或者给一位棋手时间来分析局势和制定策略是类似的。在这些情况下,时间成为了提升结果质量的关键因素。
接下来通过示例,我们一起来看下如何通过提示词,让 GPT-4 模型有更多的“思考时间”。
先思考正确方案,再评估
假设我们要使用 GPT 模型来评估学生解决数学问题的答案,最直接的方法是简单地询问模型学生的解答是否正确。然而,这种方法可能导致模型快速作出判断,而没有深入分析。
下面我们在 Playground 上做一个简单的实验。对于很简单的一元方程和二元方程,如果直接让 GPT-3.5 判断回答是否正确,都会判断错误。
为了让 GPT-3.5 能给出正确的判断,我们可以改下我们的提示词,引导 AI 先给出自己的解决方案,把自己的方案和学生的进行比较,从而判断学生的回答是否正确。可以加一个系统提示词如下:
首先给出你自己的解决方案,然后将您的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。
注意在你给出自己的解决方案之前,不要决定学生的解决方案是否正确。
这样 GPT-3.5 也能给出一个正确的判断,如下图:
随着模型变化升级,不一定能稳定复现这里的一些错误回答。不过这不影响我们这里想表达的意图,就是尽可能让模型先自己“思考”,不要急于做出判断。
给模型更多时间思考,和我们前面GPT4 提问技巧三:复杂任务拆分的策略有点类似,本质上是通过更精细的提示和问题分解来引导模型进行深入的分析。值得注意的是,这种策略需要我们对问题有深入的理解,并能够有效地指导模型的思考过程。
隐藏推理过程
在很多时候,我们不希望对用户展示模型的推理过程,只想让模型给出最终结果。例如,在前面的例子中,我们希望 AI 帮助我们判断学生的解题是否正确,但是不希望让 AI 直接告诉学生正确的解题。这时候如果要求模型不输出中间的推理过程,最后的回答质量也会受到影响。
这里一个更好的做法是使用“内心独白”,内心独白的做法是指示模型将输出中要对用户隐藏的部分放入结构化格式中,在向用户呈现输出之前,过滤这些需要对用户隐藏的部分。针对前面的帮学生找出题解是否正确的问题上,我们可以提供如下 prompt:
你是一名数学导师,如果学生犯了错误,请以不透露答案的方式向学生提供提示。如果学生没有犯错误,只需给他们一个鼓励的评论。请按照以下步骤回答,输出为一个 json,其中只包括每个步骤的结果。
步骤1 – 首先给出自己的问题解决方法和正确的答案。注意不要依赖学生的解决方案,因为它可能是不正确的。将此步骤的所有输出保存在 json 的ai_method 字段。
第 2 步 – 将您的答案与学生的解答进行比较,并评估学生的解决方案是否正确。将此步骤的所有输出保存在 json 的ai_compare 字段。
第 3 步 – 如果学生犯了错误,请确定您可以在不泄露答案的情况下给学生什么提示。如果学生回答正确,可以说一些鼓励的评论。将此步骤的所有输出保存在 json 的 hint 字段。
具体可以看下面的效果:
这里格式化输出,GPT-3.5 的效果不是很好,GPT-4 会好很多,不过还是有一定概率给出错误的格式化输出。一旦我们拿到了格式化输出,就可以在应用中解析需要的字段,隐藏推理过程了。
模型“思考”升级
在写这篇文章的时候,我其实也在思考,随着模型的迭代升级,AI 会不会不用经过专门 prompt 调优,也能很好的思考,给出一个超出预期的答案。于是用 GPT-4 尝试了几个例子,发现即使没有让他先给出自己的方案,也能给出正确结果,下面是两个例子:
随着技术的进步,新的 GPT 模型在处理复杂问题时,也应该能够更好地模拟“思考”的过程。这些模型在没有明确的提示下,也能够采取更深入的分析,更全面的搜索,以及更精细的优化。这就好像它们已经学会了如何给自己“思考”的时间,以产生更高质量的回答。
然而,这并不意味着我们不再需要给模型明确的指导。事实上,明确的指导仍然是一个非常有用的工具,可以帮助我们更好地控制模型的行为,引导模型产生我们期望的回答。尤其是在处理一些非常复杂或者需要特定领域知识的问题时,明确的指导可以帮助模型更准确地理解我们的需求,更有效地找到正确的答案。
总的来说,随着AI技术的发展,我们可以期待模型在“思考”能力上的进步。但同时,我们也需要继续学习和探索如何更好地与这些模型交互,如何更有效地利用它们的能力。在这个过程中,给模型“思考”的时间,仍然是一个非常重要的策略。