如何向GPT进阶提问?

方军 柯洲 谭星星 开智学堂

作者:方军 柯洲 谭星星 来源:《成为提问工程师》

有些公司会聘请长期的外部顾问。外部顾问往往是某个领域的资深专家,能够为我们提供高水平的解答。但更重要的是,他在担任顾问期间会持续了解我们,与我们讨论遇到的具体问题,并给出针对性的建议。

很显然,当我们有问题时,向他提问的效果通常比请教其他专家要好得多。这种聘请长期外部顾问的做法是在与人交流时的一种进阶做法。类似地,在与 GPT 交流时,我们同样也要掌握一些进阶的做法。

要想真正从 GPT 中获益,每个人都应当掌握与 GPT 交流的进阶提问方式。

在 ChatGPT 的网页版中,我们可以开启多个对话。如果我们有意识地让一个对话仅讨论一个主题,下次再遇到类似问题就继续到之前的对话下面接着问,会发现它的回答要好得多。

这个效果就相当于在与一个了解我们的顾问交流。这背后的逻辑也很简单,我们在这个对话中发起新的提问时,之前的问答将被作为上下文以某种方式提交给背后的模型,因此它的回复看起来就更懂我们了。

实际上,应用开发者在进行 GPT 模型的开发时,需要考虑的一个要点就是如何将用户和模型已经完成的对话概括成摘要,作为用户提出新问题时的上下文,让模型能够始终保持对该话题的关注,从而更好地理解用户的新问题并给出回答。通常而言,记忆力更好的聊天机器人会显得更聪明。

一些进阶做法能让我们在提问时得到更好的解答。试举例:

少样本提示(few shot prompt)。例如,我们希望 GPT 能够帮我们判断,微信中发出某句话的人的情绪是正面、中性还是负面,我们可以预先给出几个例子,说明如何判断微信中的表情。

在微信对话中,抿嘴笑脸的表情通常不应当被解读为正面情绪;龇牙笑脸通常为正面情绪;偷笑笑脸通常为中性情绪,而非负面情绪。当我们这样做了之后,GPT 将能对微信聊天中的对话进行更好的情绪判断。

01 进阶提问技巧:少样本提示

在提示语中列出数个“问题—答案”样例,让 GPT 能从样例中学习并按照示例回答问题。

这种在提示语中提供一些示例的做法称为少样本提示,与之对应的是零样本提示(zero shot prompt),即在提示语中没有任何示例。

大量研究和实践都证明,即便模型之前并不了解这项任务,通过对上下文中的少量样本进行学习,它也能学会并完成类似任务。少样本提示能够大幅度提高 GPT 回答的准确性。

少样本提示是最为常用的技巧之一。在提示语中,我们可以提供一个或数个示例,从而让 GPT 的回答能够非常好地遵从示例。

例如,我们请 GPT 给出 10 个不常见的表示颜色的词语,我们可以先给出数个例子:“给出十个常见颜色词的替代词。比如天蓝色 -azure,紫色 -violet。”GPT 的确能根据示例信息理解我们的需求,并给出符合要求的回答:“白色 -ivory,红色 -crimson,绿色 -emerald……”。

02 进阶提问技巧:调整提示语重复提问

从各个角度调整提示语,包括但不限于更换词语或说法、优化表述、调整语句顺序等,让回答能够符合自己的期待。

调整提示语重复提问。就一个问题向 GPT 提问时,我们不是问一次或两次,而是需要变换方式问几十次。按我们人类交流的常识来看,反复问略有变化的同一问题会招致厌烦,但 GPT 不会感到厌烦。

我们可以从各个角度调整提示语,包括但不限于更换词语或说法、优化表述、调整语句顺序等,让回答能够符合自己的期待。我们可以用各种方式向 GPT 问同一问题,直到获得令我们满意的答案为止。

不少人认为,提示工程就是编写出一些提示语或收集一些提示语模板,让自己能够用这些提示语得到想要的答案。

实际上,提示工程至少是指,我们可以像工程师一样工作,从各个角度调整提示语、反复试验,对比什么样的调整导致了什么样的结果变化,最终找到符合自己需求的提示语。

通常,利用程序脚本和 API,提示工程师会一次运行数量众多的略有变化的提示语,分析并确定哪个提示语可以让我们得到更好的答案。

其实,每个人都可以在日常使用中通过“调整提示语,重复提问”这一技巧来更好地使用 GPT。例如,为了撰写本书,我有时需要用较为通俗的语句来介绍各种技术,我会用到以下提示语来看看 GPT 的建议:“请用通俗的话重写。”

我们可以反复尝试各种可能的提示语,看看它的回复发生了什么变化:“请用通俗易懂的中文重写”“请用通俗易懂的中文讲解”“请通俗易懂地讲解”“请通俗易懂地讲解,使之适用于忙碌的上班族/中学生,可举例”。

在我做的若干实验中,我发现,给定一段关于深度学习的英文论文片段,“重写”和“讲解”这两种提示语会导向不同的回复。

这很容易解释,“重写”会让 GPT 尽量跟随原文,而“讲解”会让它更为自由。“可举例”是提示它在解读原文之后,用案例再讲解一遍。“忙碌的上班族”和“中学生”虽然都是提示它做到尽量通俗,但“中学生”的提示效果优于前者,得到的回答更易于普通人理解,示例更通俗易懂。

但更进一步改为“小学生”后,我发现就所选的论文片段而言,GPT 无法举出它认为合适的例子,这反而让知识讲解变得不清晰了。从这些例子中可以看出,调整提示语和反复地提问,能够帮我们获得更好的结果。

拆解任务,分步提问。接着上面的例子,我们再来说一个关于进阶技巧的例子。例如,我现在要处理的是一段英文论文的片段,目的是对其进行通俗的解读。我把 GPT 的处理过程分成了两个步骤:第一步,让它严格地进行英译中翻译;第二步,让它按照某种要求重写。

03 进阶提问技巧:拆解任务,分步提问

我们并不是试图用一次问答让 GPT 完成任务,而是自己预先拆分步骤、分次提问,让 GPT 一次完成一项任务,最终获得想要的结果。

我的做法是拆解任务,分步提问,以获得最终想要的结果。这种做法并不是试图用一次问答让 GPT 完成任务,而是自己预先拆分步骤、分次提问,让 GPT 一次只完成一项特定任务。

当然,采用聊天机器人问答这种形式来完成这项任务时,我们可以介入其中,调整中间结果,从而让最终结果变得更好。我们可以调整它给出的翻译表述,然后将调整过的翻译作为下一步任务的输入内容。

到了最后一步,如果要采用它的结果,我们通常还需要将文本与原文进行比对,确保内容无错漏,如有必要则还要进行一些调整。

虽然现在人们对 GPT 的期待值非常高,但是在工作场景中进行实际应用时,我们会发现它很难通过一问一答就直接给到我们想要的结果。

除非使用者对结果的好坏并不在意,否则 GPT 基本不可能一次就达到目标,我们总是在重复提问、多次提问中逐渐得到想要的回答。拆解任务,分步提问是我们用好它的技巧之一。

04 进阶提问能激发 GPT 的隐藏能力

像所有的工具一样,GPT 也要掌握使用方法,才能发挥其能力。

进阶地提问就好像是沿着 GPT 的原理与设计,找到面板上的某个开关,释放出它的隐藏能力。

收集有效的提示语,撰写详尽的、结构化的提示语,进行少样本提问,反复调整提示语并测试结果以及拆解任务、分步提问都是常见的进阶提问技巧。■

文章摘自:方军/柯洲/谭星星《成为提问工程师》,人民邮电出版社。