提示工程概述
提示工程是设计高质量提示的过程,引导大型语言模型(LLM)生成准确输出。提示工程涉及调整提示以找到最佳配置、优化提示长度,并评估提示在任务方面的写作风格和结构。LLM 将序列文本作为输入,根据其训练数据预测下一个 token 应该是什么,并通过反复进行这项工作来生成文本。
LLM 输出配置
除了提示词之外,还需要调整 LLM 的各种配置,例如输出长度、抽样控制(温度、Top-K 和 Top-P)等。这些配置选项用于控制模型的输出,并需要根据具体任务进行优化。
- 输出长度:生成更多 token 需要更多计算,导致更高的能耗、更慢的响应时间和更高的成本。
- 抽样控制:
- 温度:控制标记选择中的随机程度。较低的温度适用于预期更确定性响应的提示,而较高的温度则可能导致更多样化或出乎意料的结果。
- Top-K 和 Top-P:限制预测的下一个词仅来自具有最高预测概率的词,控制生成文本的随机性和多样性。
提示技巧
- 通用提示 / 零样本提示:仅提供任务描述以及一些供 LLM 开始工作的文本。
- One-shot & Few-shot 提示:向模型提供示例,帮助模型理解你的要求,并生成特定的输出结构或模式。
- 系统、情境和角色提示:
- 系统提示:定义了模型的基本能力和整体目的。
- 上下文提示:提供与当前对话或任务相关的具体细节或背景信息。
- 角色提示:为语言模型赋予特定的角色或身份。
最佳实践
- 提供例子:最重要的最佳实践是在提示中提供(单次/少量)示例,充当强大的教学工具。
- 简洁设计:尝试使用描述动作的动词,并保持提示简洁、清晰且易于理解和模型理解。
- 使用说明而非限制:请明确所需输出的具体要求,并优先排序指令,明确说明希望模型执行的操作。
- 在提示中使用变量:控制最大令牌长度,并使用变量来重用提示并使其更具动态性。
- 尝试输入格式和写作风格的实验:不同的模型、配置、格式、词语选择和提交方式可能会产生不同的结果,因此需要不断实验。
- 适应模型更新:尝试更新后的模型版本,并调整提示词以更好地利用新模型特性。
- 尝试输出格式:对于非创意任务,建议将输出以 JSON 或 XML 等结构化格式返回。
自动提示工程
自动提示工程(APE)是一种自动化编写提示词的方法,减轻了人工输入的需求,并增强了模型在各项任务中的性能。
代码提示
- 编写代码的提示:LLM 可以帮助您使用任何选择的编程语言编写代码。
- 解释代码的提示:LLM 可以帮助您阅读和理解他人编写的代码。
- 翻译代码的提示:LLM 可以帮助您将代码从一种语言翻译到另一种语言。
- 用于调试和审查代码的提示:LLM 可以帮助您调试和审查代码,找出错误并提出改进建议。
多模态提示
多模态提示是指使用多种输入格式(例如文本、图像、音频)来指导 LLM,而不是仅仅依赖文本。
记录各种提示尝试
将你的提示尝试以完整细节记录下来,以便随着时间的推移,你可以了解哪些做得好,哪些做得不好,并根据结果不断优化你的提示。
总结
提示工程是一个迭代的过程,需要不断实验、分析和优化。通过理解 LLM 的工作原理、掌握各种提示技巧和最佳实践,你可以有效地引导 LLM 生成准确、相关和有用的输出。