参考 https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/
这篇文章《Prompt Engineering》由Lilian Weng撰写,主要探讨了如何通过设计提示语(prompt)来引导大语言模型(LLM)以获得期望的结果。文章内容涵盖了多个与提示工程相关的技术和方法,下面是主要内容的总结:
1. 基本提示方法
- Zero-shot(零样本):直接向模型提供任务文本,要求其返回结果。
- Few-shot(少样本):提供一组高质量的示例,帮助模型更好地理解任务,从而提高模型的表现。
2. 示例选择技巧
- 选择与测试样本语义相似的示例,以增强模型的理解。
- 使用图形化的方法,如基于嵌入空间的k-NN聚类或图基方法,来选择多样且具有代表性的示例。
3. 示例排序技巧
- 为避免偏差(如多数标签偏倚、近期偏倚等),可以随机排序示例。
- 增加模型大小或更多示例并不总能减少示例顺序的变异性,因此排序对不同模型的影响可能有所不同。
4. 指令提示(Instruction Prompting)
- 通过提供明确的任务说明而不是简单的示例,模型可以更好地理解任务要求。
- 如InstructGPT等模型通过高质量的(任务说明,输入,输出)元组来进行微调,使模型更容易理解人类意图。
5. 链式思考(Chain-of-Thought, CoT)
- CoT提示生成逐步推理的过程,帮助模型进行复杂的推理任务。简单任务对CoT的依赖较小,而复杂任务则能更显著受益于CoT提示。
6. 自一致性采样(Self-consistency sampling)
- 通过多次采样并选择最合适的输出,利用多数投票的方式来增加推理的准确性。
7. 自动提示设计(Automatic Prompt Design)
- 自动化设计提示方法,通过优化提示来增加输出的概率。例如使用AutoPrompt、Prefix-Tuning等方法,可以通过梯度下降等优化方法调整提示。
8. 增强语言模型(Augmented Language Models)
- 引入外部工具(如程序语言、API调用、检索系统等)来增强语言模型的能力,拓宽其处理范围。
9. 工具增强语言模型(Tool Augmented Language Models, TALM)
- 通过API调用等工具,使得模型能够处理更复杂的任务。比如,Toolformer模型通过自监督学习让模型学会如何调用外部工具。
10. 提示词模板
# AI角色定位
你是一位[角色,例如资深架构师,数学科学家], 需要完成以下任务:
# 任务说明
[在这里清晰描述任务,例如:对文本进行情感分类 / 将段落总结成要点 / 解答数学题 / 生成 SQL 查询]
# 示例(Few-shot)
以下是示例,请学习它们的输入与输出格式:
示例 1:
输入:
[示例输入 1]
输出:
[示例输出 1]
示例 2:
输入:
[示例输入 2]
输出:
[示例输出 2]
示例 3:
输入:
[示例输入 3]
输出:
[示例输出 3]
# 限制(Constraints)
- 使用清晰、准确的语言。
- 不要添加示例中没有的信息。
- 不要输出解释或推理过程(除非任务要求)。
- 输出必须严格遵守“输出格式”部分的结构。
- 不得包含未请求的多余内容。
- 如果输入包含歧义,请标注“无法判断”或返回指定 fallback。
# 输出格式(Output Format)
请按以下格式输出:
{
"result": "<你的最终输出>",
"confidence": "<0-100 的置信度估计(可选)>"
}