Stanford大学公开课 - 提示词工程指南

CS146S: The Modern Software Developer
https://themodernsoftware.dev/

提示词工程指南

提示词工程是一门较新的学科,旨在开发并优化提示词,以便在各类应用场景与研究课题中高效使用语言模型(LM)。掌握提示词工程技能,有助于更好地理解大语言模型(LLM)的能力与局限。

研究人员运用提示词工程,提升大语言模型在各类常见及复杂任务上的表现,例如问答、算术推理等。开发人员则借助提示词工程,设计可靠且高效的提示技术,实现大语言模型与其他工具的对接。

提示词工程并非仅设计与编写提示词,它涵盖了一系列用于与大语言模型交互、基于大语言模型进行开发的技能与方法。掌握这一技能,对对接、构建大语言模型,以及理解其能力至关重要。你可以通过提示词工程提升大语言模型的安全性,还能打造全新功能,例如为大语言模型融入领域知识与外部工具。

鉴于业界对基于大语言模型进行开发的高度关注,我们推出了这份全新的提示词工程指南。其中收录了提示词工程领域的最新论文、进阶提示技术、学习教程、针对特定模型的提示指南、讲座、参考文献、大语言模型新能力,以及相关工具。

简介

提示词工程是一门相对新兴的学科,致力于开发和优化提示词,以便高效地应用和基于大语言模型(LLMs)构建各类应用与使用场景。

提示词工程相关技能有助于更好地理解大语言模型的能力与局限性。研究人员利用提示词工程提升大语言模型的安全性,以及在问答、算术推理等众多常见且复杂任务上的性能。开发人员则通过提示词工程设计稳定高效的提示技术,实现大语言模型与其他工具的交互。

本全面指南涵盖提示词工程的理论与实践内容,以及如何运用最优提示词技术与大语言模型交互并进行相关开发。

除非另有说明,所有示例均通过 OpenAI Playgroundgpt-3.5-turbo 模型上测试,模型采用默认配置,即 temperature=1top_p=1。这些提示词同样适用于其他与 gpt-3.5-turbo 能力相近的模型,但模型输出结果可能存在差异。

大语言模型(LLM)参数设置

在设计与测试提示词时,你通常会通过 API 与大语言模型交互。你可以配置若干参数,以获得不同的提示词效果。调整这些设置对提升回复的可靠性与理想程度至关重要,往往需要一定的实验才能找到适合你场景的最佳参数。以下是使用不同大语言模型服务时常见的参数设置:

温度(Temperature)
简单来说,temperature 数值越低,结果越具确定性,模型总会选择概率最高的下一个词元。提高温度会增加随机性,鼓励生成更多样、更有创意的输出。本质上是提升了其他可能词元的权重。
在实际应用中,事实类问答等任务适合用较低温度,以获得更准确、简洁的回答;诗歌创作或其他创意类任务则适合提高温度。

Top P(核采样)
这是一种与温度配合使用的采样技术,也叫核采样,可以控制模型的确定性。

  • 想要精确、事实准确的答案,就调低 Top P;
  • 想要更多样化的回复,就调高 Top P。
    使用 Top P 意味着模型只考虑累计概率达到 top_p 的词元。因此,较低的 top_p 会让模型只选最确定的词,较高的 top_p 则会让模型考虑更多可能性(包括概率较低的词),从而生成更多样的结果。

通用建议:只调整温度或 Top P 其中一个,不要同时调整。

最大长度(Max Length)
你可以通过调整 max length 控制模型生成的词元数量。设定最大长度有助于避免过长或无关的回复,并控制成本。

停止序列(Stop Sequences)
stop sequence 是一段会让模型停止生成词元的字符串。设置停止序列是控制回复长度与结构的另一种方式。例如,你可以把“11”设为停止序列,让模型生成不超过 10 条的列表。

频率惩罚(Frequency Penalty)
frequency penalty 会根据某个词元在提示词与回复中已出现的次数,按比例对其施加惩罚。频率惩罚越高,单词重复出现的概率越低。该设置通过对高频出现的词元加重惩罚,减少回复中的重复现象。

存在惩罚(Presence Penalty)
presence penalty 同样对重复词元施加惩罚,但与频率惩罚不同:所有重复词元受到的惩罚相同——出现 2 次和出现 10 次的词惩罚力度一样。该设置用于防止模型频繁重复短语。

  • 想要多样化、创意性文本,可提高存在惩罚;
  • 想要模型保持专注,可降低存在惩罚。

与温度和 Top P 类似,通用建议:只调整频率惩罚或存在惩罚其中一个,不要同时调整。

在开始基础示例前,请记住:你得到的结果可能会因所用大语言模型的版本不同而有所差异。

提示词基础

向大语言模型发送提示词

简单的提示词就能实现很多功能,但结果质量取决于你提供的信息多少以及提示词设计得是否精良。一个提示词可以包含指令问题,还能加入上下文输入内容示例等细节。用好这些元素能更有效地引导模型,提升输出质量。

我们先看一个最简单的提示词示例:

提示词

1
The sky is

输出:

1
blue.

如果你在使用 OpenAI Playground 或其他大语言模型调试平台,可以按照下面截图的方式输入提示词:

下面是 OpenAI Playground 入门教程: