随着ChatGPT的横空出世,prompt提示工程突然就成了一个时髦的技能,prompt的核心是制定科学有效的提示,以便于我们可以从大语言模型中得到更精确的输出。简单说,就是如何从任何人工智能模型中获得更好的输出结果。
做到这一点需要两个关键原则:“清晰度”和“让大模型思考”。
原则一:越清晰越好
第一个原则强调向模型提供清晰明确的指令,为了做到这一点,OpenAI建议采用四种策略:
#1.对文本输入使用分隔符
使用清晰而具体的指令是非常重要的,这个策略在提示中包含文本片段时特别有用。
例如,如果您将这一段文本输入到ChatGPT以获得摘要,文本本身应通过使用任何分隔符与提示的其他部分分开。
假如在上图的案例中未正确分隔文本,则 ChatGPT 可能会感到困惑。
#2.请求结构化输出
为了使模型输出更准确,要求做具体的结构化输出可能会有帮助。常见的结构可以是JSON或HTML。
当构建应用程序或生成特定提示时,将模型输出标准化可以极大地提高数据处理的效率,特别是如果您打算将这些数据存储在数据库中供将来使用。
考虑一个例子,您请求模型生成一本书的详细信息。您可以直接发出请求,或者使用更明确的格式指定所需的输出。
如上所示,可以观察到解析第二个输出比解析第一个输出要容易得多。
我的个人建议是使用JSON比较好。
#3.检查一些特定条件
类似地,为了防止模型的输出结果错误,我们可以要求模型在执行任务之前检查是否满足某些条件,如果不满足,则输出默认响应,这是避免意外错误或结果的完美方法。
想象一下,您希望ChatGPT将给定文本中的任何一组指令重写为一个编号的指令列表。
如果输入文本中不包含任何指令怎么办?
比如,在这个具体的例子中,我们将指示ChatGPT在给定文本中没有指令时返回特定输出。
让我们将其付诸实践。我们向模型提供了两段文本:第一段是关于如何制作咖啡的指令,第二段没有指令。
由于提示中包含检查是否有指令的部分,ChatGPT能够轻松检测到这一点。否则,可能会导致一些错误的输出。
这种标准化可以我们构建的应用程序免受未知错误的影响。
#4.少量示例提示
我们的最后一个策略是所谓的少样本提示法(few-shot prompting)。它包括在要求ChatGPT执行实际任务之前,提供成功执行该任务的示例。
为什么要这样做呢?
我们可以使用预先准备好的示例让ChatGPT按照特定的风格或语气进行回答。例如,假设在构建一个聊天机器人时,您希望它以某种特定的风格回答用户的问题。为了向模型展示期望的风格,您可以首先提供一些示例。
让我们用一个非常简单的例子来说明如何实现这一点。假设我希望ChatGPT模仿一个孩子和祖父母之间的对话风格。
通过这个例子,大模型能够以类似的语气回答问题。
原则二:让模型思考
第二个原则是给予模型思考的时间,这在模型提供不正确的答案或出现推理错误时至关重要。
我们可以要求大模型按照推理步骤来生成结果,迫使模型计算这些中间步骤。
实质上,就是给予它更多思考的时间。
#1. 指定执行任务的中间步骤
指导模型的一个简单方法是提供一个生成正确答案所需的中间步骤列表。
就像我们对任何实习生都会做的那样!
例如,假设我们首先对英文文本进行总结,然后将其翻译成法语,最后得到一份使用的术语列表。如果我们直接要求进行这个多步骤任务,ChatGPT在计算解决方案的时间很短,并且无法达到预期的效果。
然而,通过简单地指定中间步骤,我们却可以获得所需的术语。
在这种情况下,要求结构化输出也会有所帮助!
有时并不需要列出所有的中间任务,只需要要求ChatGPT逐步推理即可。
#2. 指示模型制定自己的解决方案。
我们的最后一种策略涉及向模型征询其答案。这要求模型明确计算手头任务的中间阶段。这怎么理解呢?
假设我们正在创建一个应用程序,让ChatGPT在纠正数学问题方面提供帮助。因此,我们需要模型评估学生呈现的解决方案的正确性。
在下面的图例里,我们将看到数学问题和学生的解决方案。在这种情况下,最终结果是正确的,但背后的逻辑却不正确。如果我们直接将问题提交给ChatGPT,它会认为学生的解决方案是正确的,因为它主要关注最终答案。
为了解决这个问题,我们可以要求模型首先找出自己的解决方案,然后将其解决方案与学生的解决方案进行比较。
通过适当的提示,ChatGPT将正确判断学生的解决方案是错误的。
总结
总结起来,提示工程是最大化像ChatGPT这样的AI模型性能的重要工具。随着我们进入由AI驱动的时代,精通提示工程将成为一项宝贵的技能。
总体而言,我们已经看到了六种策略,可以在构建应用程序时最大限度地发挥ChatGPT的优势。
- 使用分隔符来分隔额外的输入。
- 请求结构化输出以确保一致性。
- 检查输入条件以处理异常值。
- 利用少样本提示来增强功能。
- 指定任务步骤以给予推理时间。
- 强制推理中间步骤以提高准确性。
最后,我想强调一下,一个好的提示是释放AI全部潜力的关键!