提示工程指南(三):提示的基本结构与少量(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):

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

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

相关推荐
tap.AI2 分钟前
RAG系列(一) 架构基础与原理
人工智能·架构
北邮刘老师15 分钟前
【智能体互联协议解析】北邮ACPs协议和代码与智能体互联AIP标准的关系
人工智能·大模型·智能体·智能体互联网
亚马逊云开发者26 分钟前
使用Amazon Q Developer CLI快速构建市场分析智能体
人工智能
Coding茶水间31 分钟前
基于深度学习的非机动车头盔检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·机器学习·计算机视觉
Rose sait42 分钟前
【环境配置】Linux配置虚拟环境pytorch
linux·人工智能·python
福客AI智能客服1 小时前
从被动响应到主动赋能:家具行业客服机器人的革新路径
大数据·人工智能
司南OpenCompass1 小时前
衡量AI真实科研能力!司南科学智能评测上线
人工智能·多模态模型·大模型评测·司南评测
罗宇超MS1 小时前
如何看待企业自建AI知识库?
人工智能·alm
土星云SaturnCloud1 小时前
液冷“内卷”:在局部优化与系统重构之间,寻找第三条路
服务器·人工智能·ai·计算机外设