提示(Prompt)是我们与LLM沟通的语言。自然语言文本和模型采样参数两者构成了提示工程的重要部分。
模型采样参数
Temperature
通过引入温度T>0,可以将Softmax函数
$p_{i}=\frac{e^{z_{i}}}{\sum_{j = 1}^{k}e^{z_{j}}}$
改写为:
$p_i^{(T)} = \frac{e^{z_i / T}}{\sum_{j=1}^k e^{z_j / T}}$
当低温度(0<T<0.3)时,模型的分布更陡峭,高概率项被放大,适合准确任务;中温度(0.3<T<0.7)时,输出更加平衡;高温度(0.7<T<2)时,输出更加具有创意性。
开源模型的T往往会给出推荐值。
Top-k
Top-k的原理是将所有Token按概率从高到低排序,取排名前k个token组成临时候选集,随后进行归一化,再从中采样。
当Top-K=1时,采样方法退化为贪心采样。
零样本、单样本与少样本提示
零样本提示(Zero-shot Prompting) 指的是不给模型任何示例,直接让它根据指令完成任务。模型的效果取决于它在海量数据上预训练的学习能力。
单样本提示(One-shot Prompting) 给模型提供一个完整的任务示例,向它展示任务格式和期望输入风格。
少样本提示(Few-shot Prompting) 提供多个示例,让模型对任务细节、边界有更准确的理解。
指令调优(Instruction Tuning)
使用大量 “指令-回答” 格式的数据对预训练模型进行进一步的训练。
基础提示技巧
- 角色扮演(Role-playing):赋予模型一个特定角色,引导它的回答风格、语气、知识范围。
- 上下文示例(In-context Example):通过在提示中提供清晰的输入输出示例,教会模型处理请求。
[!NOTE]
In-context Example(上下文示例) 是一个更广义的术语,指在 prompt 中提供的任何示例、参考或背景信息,用于帮助模型理解任务。它可以是:
- 输入输出对(few-shot)
- 单一样本(one-shot)
- 零样本但带说明(zero-shot with instruction)
- 领域知识片段
- 格式模板
少样本提示(Few-shot Prompting) 是 In-context Learning 的一种具体技术,特指在 prompt 中提供 多个(通常 2-10 个)完整的输入输出示例对,让模型通过类比学习来推断任务模式。
思维链(Chain of thought, CoT)
对于多步骤逻辑,直接让模型思考复杂问题容易出错,因此引导模型一步步思考,显示展示其推理过程。