提示工程指南(三):提示的基本结构与少量(few-shot)提示技巧

上一篇博客已经讲解了zero-shot和few-shot提示,在few-shot提示中,需要给模型一些与所问问题相关的示例,那么什么样的示例能够最大化的激发模型的能力呢?

few-shot提示技巧

当选择示例的时候,可以参考如下技巧:

  • Liu et al., 2021:在选择示例之前,可以将示例和测试实例在嵌入空间中进行K-NN聚类,然后选择处于同一类的示例。

  • Su et al. (2022):为了选择多样化且有代表性的示例集

    1. 首先,根据嵌入(例如通过SBERT或其他嵌入模型)的余弦相似度构建有向图 <math xmlns="http://www.w3.org/1998/Math/MathML"> G = ( V , E ) G=(V, E) </math>G=(V,E),其中每个节点指向其 <math xmlns="http://www.w3.org/1998/Math/MathML"> k k </math>k个最近邻居;
    2. 从一组选定的样本 <math xmlns="http://www.w3.org/1998/Math/MathML"> L = ∅ \mathcal{L}=\emptyset </math>L=∅和一组剩余样本 <math xmlns="http://www.w3.org/1998/Math/MathML"> U \mathcal{U} </math>U开始。每个样本 <math xmlns="http://www.w3.org/1998/Math/MathML"> u ∈ U u \in \mathcal{U} </math>u∈U通过以下公式评分:

    <math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> score ( u ) = ∑ v ∈ { v ∣ ( u , v ) ∈ E , v ∈ U } s ( v ) where s ( v ) = ρ − ∣ { ℓ ∈ L ∣ ( v , ℓ ) ∈ E } ∣ , ρ > 1 \text{score}(u) = \sum_{v \in \{v \mid (u, v) \in E, v\in \mathcal{U}\}} s(v)\quad\text{where }s(v)=\rho^{- \vert \{\ell \in \mathcal{L} \vert (v, \ell)\in E \}\vert},\quad\rho > 1 </math>score(u)=v∈{v∣(u,v)∈E,v∈U}∑s(v)where s(v)=ρ−∣{ℓ∈L∣(v,ℓ)∈E}∣,ρ>1

    这样的评分机制鼓励选择多样化的样本,如果 <math xmlns="http://www.w3.org/1998/Math/MathML"> v v </math>v的许多邻居被选中,则 <math xmlns="http://www.w3.org/1998/Math/MathML"> s ( v ) s(v) </math>s(v)较低。

  • Rubin et al. (2022):提出通过对比学习选择训练嵌入。给定每对训练样本 <math xmlns="http://www.w3.org/1998/Math/MathML"> ( x , y ) (x, y) </math>(x,y),一个示例 <math xmlns="http://www.w3.org/1998/Math/MathML"> e i e_i </math>ei(格式化的输入-输出对)的质量可以通过语言模型分配的条件概率来衡量: <math xmlns="http://www.w3.org/1998/Math/MathML"> score ( e i ) = P LM ( y ∣ e i , x ) \text{score}(e_i) = P_\text{LM}(y \mid e_i, x) </math>score(ei)=PLM(y∣ei,x)。我们可以识别其他示例的top- <math xmlns="http://www.w3.org/1998/Math/MathML"> k k </math>k和bottom- <math xmlns="http://www.w3.org/1998/Math/MathML"> k k </math>k分数作为每对训练样本的正选和负选候选集,并使用这些进行对比学习。

  • Diao et al. (2023):建议找到在多次采样试验中具有高分歧或熵的示例。然后为这些示例打标签,并用于少次提示。

  • 选择示例时应采用多样化的示例选择方案,尽可能使用测试样本的相关信息,并将示例随机排序,以避免多数标签偏见和最近性偏见。

  • Lu et al. 2022:增加模型大小或包含更多的训练示例并不能减少不同排列的上下文示例所导致的模型输出差异。相同的顺序可能对一个模型效果很好,但对另一个模型效果很差。

提示词的结构

事实上,所有的提示词可以总览为固定的结构,每一个提示词都可涵盖为以下元素:

  • 指令 - 你希望模型执行的特定任务或指令
  • 上下文 - 可以引导模型给出更好响应的外部信息或额外上下文
  • 输入数据 - 我们希望找到回应的输入或问题
  • 输出指示 - 输出的类型或格式。

以上一篇中的prompt为例:

markdown 复制代码
任务:情感分析
示例1:这段文字真是太棒了,我非常喜欢! - 积极
示例2:我不太喜欢这个,感觉很一般。 - 消极
示例3:这本书的内容很客观,提供了很多事实信息。 - 中性

现在,请对以下文本进行情感分析,模型需要对每个输入文本给出一个情感标签,即判断文本是积极的、消极的还是中性的:
1. 我真的对这个产品感到失望,它没有达到我的期望。
2. 这是我看过的最好的电影之一,强烈推荐给大家!
3. 报告详细介绍了市场的现状,很中立。
  1. 指令(Instruction):

    • 任务:情感分析 这个指令明确告诉模型需要执行的任务是情感分析,即识别文本中的情感倾向。
  2. 上下文(Context):

    示例1:这段文字真是太棒了,我非常喜欢! - 积极
    示例2:我不太喜欢这个,感觉很一般。 - 消极
    示例3:这本书的内容很客观,提供了很多事实信息。 - 中性

这些示例提供了情感分析的上下文,展示了不同类型的文本和它们对应的情感标签。这些上下文信息帮助模型理解如何根据文本内容判断情感倾向。

  1. 输入数据(Input Data):

    我真的对这个产品感到失望,它没有达到我的期望。
    这是我看过的最好的电影之一,强烈推荐给大家!
    报告详细介绍了市场的现状,很中立。

这些是模型需要分析的具体文本输入。模型需要根据之前的指令和上下文来对这些输入数据进行分类。

  1. 输出指示(Output Indication):

    模型需要对每个输入文本给出一个情感标签,即判断文本是积极的、消极的还是中性的。

这个输出指示告诉模型我们期望的输出类型是分类标签。

相关推荐
情绪总是阴雨天~41 分钟前
OpenClaw 核心机制深度讲解:开源个人 AI 智能体全解析
人工智能·开源
星越华夏7 小时前
计算机视觉:YOLOv12安装环境
人工智能·yolo·计算机视觉
Yolanda948 小时前
【人工智能】《从零搭建AI问答助手项目(九):Prompt优化》
人工智能·prompt
wj3055853788 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
小和尚同志8 小时前
深入使用 skill-creator:结合真实生产级实践
人工智能·aigc
DevSecOps选型指南8 小时前
安全419专访悬镜安全 | 穿越周期在 AI 浪潮中定义数字供应链安全新范式
人工智能
沪漂阿龙8 小时前
面试题详解:GraphRAG 全面解析——知识图谱增强 RAG、Local Search、Global Search、社区摘要、工程落地与评估指标一次讲透
人工智能·知识图谱
WangN28 小时前
Unitree RL Lab 学习笔记【通识】
人工智能·机器学习
haina20198 小时前
海纳AI亮相《科创中国》,解码招聘“智”变之路
人工智能·ai面试·ai招聘
阿星AI工作室9 小时前
刘润年中大课笔记:一句话说清AI落地之战的本质
大数据·人工智能·创业创新·商业