1. 提示词与提示工程
什么是 Prompt 提示词?
相信阅读过 OpenAI 官方文档的同学都会发现,在文档中是找不到 question、answer 这类描述的,我们能看到的是 prompt 和 completion ,翻译过来就是提示和补全。也就是说,我们与大模型交流的过程,本质上是给大模型一个提示,让它进行补全,补全的内容就是大模型给我们输出的答案。而这里的提示,官方术语就是 prompt。
简单来理解大模型生成内容的过程,就是:我们先给出提示,大模型会根据提示,预测所有可能生成的内容,并逐个计算概率,最后取概率最高的结果进行输出。可以说,能否设计出好的提示词,是影响大模型生成质量的关键。
如何构造好的提示词?
想要设计出好的提示词,引导大模型生成更高质量的内容,还是有一定套路可以遵循的,大致可以参考如下的公式:
- Task(任务):明确说明需要大模型完成的目标,来有效指导输出。任务描述要尽可能清晰,避免模糊的表达。
- Context(上下文):为大模型提供足够多的上下文背景信息,让大模型能够充分理解语义语境,最大程度上避免歧义。
- Example(示例):给大模型一个或几个参考示例,大模型可以学到示例中的回复模式。
- Role(角色):定义大模型应该代入的角色,如技术专家、作家等等。指定角色可以在一定程度上提高回复的准确性,降低幻觉的概率。
- Format(格式):指定回复内容的格式,如纯文本、Markdown、json 等。
- Tone(语气):指导大模型匹配期望的写作风格,如正式、活泼、搞笑等等。
下面是一段参考的 Prompt,可以看出公式中各个部分的含义及作用:
# 角色
你是一位智能的AI聊天助手,正在与用户进行对话。# 任务
请根据你们之前的聊天历史上下文,和用户的最新提问,生成符合人设的回答。# 上下文
以下是你们之前的对话历史:用户:xxx
AI:xxx
......# 示例
以下是你们之间对话的参考示例:
用户:你好,今天天气怎么样?
AI:您好呀!非常高兴为您服务!北京今天天气很不错呢,温度在10~20摄氏度之间,非常适合户外活动哦~# 格式
要完全采用中文回答,回答的内容中可以包含纯文本和emoji表情,但是不要包含特殊字符。# 语气
回答的语气要轻松活泼,给用户如沐春风的感觉。
2. 常见的 Prompt Engineering 技术
所谓提示工程(Prompt Engineering)就是探讨如何设计出最佳的提示,用于指导语言模型帮助我们高效完成某项任务。
在 《Language Models are Few-Shot Learners》 这篇经典的论文中,总结出了三种常用的 Prompt Engineering 技术,分别是 Zero-Shot、One-Shot 和 Few-Shot:
这三种 Prompt Engineering 技术的关键区别在于,是否在 Prompt 中给出参考示例:
- Zero-Shot:无参考示例。
- One-Shot:只给出一项参考示例。
- Few-Shot:给出几项参考示例(根据经验值,通常为3~5条)。
这三种技术的最终效果对比如下:
从以上的结果中,我们可以得出几项关键结论:
- 从 GPT-3 模型开始,in-context learning 已经成为了一种主要的技术优化手段。相较于传统的 fine-tuning 微调来说,in-context learning 所需要消耗的成本更少,且也能达到较好的效果。
- 通常来说,在 Prompt 中给出几条参考示例,会提升模型生成的准确率,即 Few-Shot 比 Zero-Shot 的准确率更高。
- in-context learning 手段对于参数规模较大的模型更加有效,在小模型上可能作用有限。
综上所述,我们在设计 Prompt 时,如果条件允许,给出几条参考示例通常可以达到更好的效果。
3. 思维链 CoT
上面介绍了一些 Prompt 的编写技巧,和常用的 Prompt Engineering 技术。除此之外,还有一类场景,需要模型进行深度的思考,如科学分析、逻辑推理、阅读理解等等。这种需要进行深度思考和推理的场景,使用 CoT 技术往往能有性能上的提升。
思维链(Chain-of-Thought, CoT),其基本思想是通过提供详细的推理过程来引导模型生成更加合理和准确的回答。它通常会将问题分解成多个子问题,并为每个子问题提供一个或多个推理步骤。模型在接收到这样的prompt后,会尝试模仿这些推理步骤来解决问题。
CoT 技术是在论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》中被提出,文中展示了它相较于简单 Prompt 的性能提升,特别是在解决数学和逻辑推理问题时,有非常明显的优势:
CoT 技术主要具有以下几点优势:
- 分治思想:CoT 允许模型将多步问题分解为中间步骤,这意味着可以将额外计算资源分配
给需要更多推理步骤的问题。 - 可解释性:CoT 提供了对模型行为的可解释窗口,提示了它可能是如何得出特定答案的,并提供了调试推理路径错误之处的机会(尽管完全描述支持答案的模型计算仍然是一个未解决问题)。
- 适用多场景:在数学应用题、常识推理和符号操作等任务中都可以使用思维链推理(CoT Reasoning),并且在原则上适用于任何人类能够通过语言解决的任务。
- 适配大参数模型:在足够大规模现成语言模型中很容易引发 CoT Reasoning ,只需在少样本提示示例中包含一些连贯思路序列即可。
而 CoT 技术对于我们的启示是,针对一些复杂问题,即便是简单地在末尾追加一句 “Think step-by-step”,通常也能生成更好的结果:
而且,需要特别说明的是,诸如 GPT-o1 和 DeepSeek-R1 这类推理模型,它已经将 CoT 技术内置到了模型内部,这也是我们得以看到整个深度思考过程的重要原因。
4. 总结
本文中,我们首先介绍了 Prompt 提示词的相关概念,接着分享了一些如何写好 Prompt 的技巧,最后介绍了几种常见的 Prompt Engineering 技术手段,可以帮助大家快速入门提示工程。
我们与大模型的交互过程,本质上就是碳基和硅基这两类生物合作的过程。在当下这个阶段,大模型的智能程度还无法完全对齐人类,因此需要人类向大模型的方向多前进一步,以便于加深双方的理解,而这就是 Prompt Engineering 存在的价值。基于这个推论,也许在未来的一段时间内,我们需要编写的代码会越来越少,而需要编写的 Prompt 会越多,可能原本很多的 Code Hub 会变成 Prompt Hub。