
提示工程
一个好的提示工程由下面的几个部分组成,可能我们之前认为给大模型提示不就是描述清除就行么,底层逻辑是没问题的,不过需要有了下面这个模板能够帮我我们更好的描述任务,进而减低成本达成目的。
- 指令
任务本身。指令应该尽可能具体,避免留下太大的解释空间。
- 上下文
描述问题或任务背景的附加信息。它回答了“为什么提出这个指令”这样的问题。
- 格式
LLM 输出生成文本的格式。如果不指定格式,LLM 会自行决定格式,这在自动化系统中会造成麻烦。
- 受众
生成文本的目标对象。这也描述了输出的水平。在教育目的下,使用 ELI5(Explain like I’m 5,“向 5 岁的孩子解释”)通常很有帮助。
- 语气
LLM 在生成文本中应该使用的语气。如果你要给老板写一封正式的邮件,你肯定不想使用非正式的语气。
- 数据
与任务本身相关的主要数据。
下面介绍一些技巧
链式提示:分解问题

上面就是一个例子,我们通过多次调用模型,将最后的目标拆成几步,最终获得合适的输出。
思维链:先思考再回答

我们在提示词中提供了一些示例,展示了模型在生成响应之前应该进行的推理。这些推理过程被称为“思考”。这对于涉及较高复杂度的任务(如数学问题)帮助很大。添加这个推理步骤使模型能够在推理过程中充分利用更多的计算资源。相比于基于几个词元直接计算出完整的答案,在推理过程中每增加一个词元都能让 LLM 的输出更稳定。

虽然思维链是一种增强生成模型输出的好方法,但它需要在提示词中包含一个或多个推理示例,而用户可能无法获取这些示例。我们也可以不提供示例,而是直接要求生成模型进行推理(零样本思维链)。这种方法有多种形式,一种常见且有效的方法是使用“让我们逐步思考”(Let’s think step-by-step)
自洽性:采样输出
如果我们通过 temperature 和 top_p 等参数允许一定程度的创造性,多次使用相同的提示词,可能会得到不同的结果。此时,根据词元的随机选择,输出的质量可能会提高或降低。换句话说,全靠运气!
为了抵消这种随机性并提高生成模型的性能,研究人员引入了自洽性(self-consistency)的概念。这种方法会用相同的提示词向生成模型多次提问,并将占多数的结果作为最终答案 8。在此过程中,可以通过调整不同的 temperature 和 top_p 值来影响每个答案,以提高采样的多样性。

通过添加思维链提示来提升模型的推理能力,同时仅将答案用于投票过程,可以进一步改进这种方法。
然而,这种方法需要多次询问同一个问题,因此,尽管可以改进生成效果,但它会变得更慢。如果输出样本的数量为 n,这种方法的速度就会慢至 1/n。
思维树:探索中间步骤
维链和自洽性旨在实现更复杂的推理。通过从多个“思考过程”中采样,并使它们更加深入地思考,我们可以达到改进生成模型的输出的目标。
这些技术只是触及了当前用于模拟复杂推理的方法的表面。思维树(tree-of-thought,ToT)是对这些方法的一种改进,它可以对多个想法进行深入探索。

该方法的工作原理如下。当面对需要多个推理步骤的问题时,将其分解成多个部分通常会有所帮助。在每个步骤中,生成模型会被提示探索当前问题的不同解决方案。然后,它对最佳解决方案进行投票,并继续进行下一步。
当需要考虑多条路径,比如写故事或提出创意构想时,这种方法非常有帮助。这种方法的一个缺点是需要多次调用生成模型,这会显著降低应用程序的速度。幸运的是,已经有人成功地将思维树框架转化为一种简单的提示技术。
总而言之
我们也发现其实和LLM沟通是需要一些技巧的,和我们的工作中的沟通是一样的, 把背景描述清楚,把需求描述清楚才能让别人帮助自己。