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

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

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

相关推荐
阿坡RPA3 小时前
手搓MCP客户端&服务端:从零到实战极速了解MCP是什么?
人工智能·aigc
用户27784491049933 小时前
借助DeepSeek智能生成测试用例:从提示词到Excel表格的全流程实践
人工智能·python
机器之心3 小时前
刚刚,DeepSeek公布推理时Scaling新论文,R2要来了?
人工智能
算AI6 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
simplify206 小时前
【译】Anthropic:推理模型的思维链并非总是忠实
llm·deepseek
几米哥6 小时前
从思考到行动:AutoGLM沉思如何让AI真正"动"起来
llm·aigc·chatglm (智谱)
凯子坚持 c6 小时前
基于飞桨框架3.0本地DeepSeek-R1蒸馏版部署实战
人工智能·paddlepaddle
你觉得2057 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
8K超高清7 小时前
中国8K摄像机:科技赋能文化传承新图景
大数据·人工智能·科技·物联网·智能硬件
hyshhhh7 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉