LLM prompt提示工程调试方法经验技巧汇总

news2024/11/18 21:45:59

现在接到一个LLM模型任务,第一反应就是能不能通过精调prompt来实现,因为使用prompt不需要训练模型,只需输入指令就可以实现和LLM的交互。按照以往经验,不同的prompt对模型输出影响非常大,如果能构造一个好的prompt,往往可以达到事半功倍的效果。下面总结了目前我经常使用的一些构建prompt的技巧。

1. prompt要素

一个prompt主要有如下一些要素:

指令:想要模型执行特定任务的描述。
上下文:包含外部信息(如知识库)或额外的上下文信息。
输入数据:用户输入的内容或问题。
输出指示:指定输出的类型或格式。可以不指定,因为很多模型其实性能有限,不一定按照你指定的格式输出。

这里给出一篇prompt构造的参考文献:https://github.com/mattnigh/ChatGPT3-Free-Prompt-List
其遵循CRISPE提示框架:

Capacity and Role: What role (or roles) should ChatGPT act as?
Insight: Provides the behind the scenes insight, background, and context to your request.
Statement: What you are asking ChatGPT to do.
Personality: The style, personality, or manner you want ChatGPT to respond in.
Experiment: Asking ChatGPT to provide multiple examples to you.

给个例子:
在这里插入图片描述

2. 设计prompt通用技巧

2.1 关于prompt的调试经验

  1. 从简单的提示词开始,不断迭代和实验,比如添加上下文,或者将任务拆解
  2. 明确指令,一般需要将指令放在开头,并用清晰的分隔符区分(在调试过程发现,LLM对分隔符会有理解能力)
  3. 避免不精确,使用3到5句话就应该把任务说清楚
  4. 由易到难尝试使用prompt技术,如从zero-shot到few-shot甚至到最后的SFT

2.2 模型设置

目前一般的LLM都提供了和模型参数相关的一些接口,可以控制模型生成的多样性或者最大上下文长度。主要是调整以下的两个参数:

Temperature:范围是0-1,简单来说,temperature越小,模型输出越确定(准确)。temperature越大,返回结果更随机,也就是说这可能会带来更多样化或更具创造性的产出。在实际应用方面,对于质量保障(QA)等任务,我们可以设置更低的 temperature 值,以促使模型基于事实返回更真实和简洁的结果。 对于诗歌生成或其他创造性任务,你可以适当调高 temperature 参数值。

Top_p:使top_p(与 temperature一起称为核采样的技术),可以控制模型返回结果的真实性。如果你需要准确和事实的答案,就把参数值调低。如果你想要更多样化的答案,就把参数值调高一些。

一般建议是改变其中一个参数就行,不用两个都调整。

2.3 prompt技术

2.3.1 Zero shot

零样本prompt,说白了就是想让LLM完成某个任务但是却不给LLM参考的样例,直接让模型生成答案。这种方法往往比较简单,仅仅使用一两句话描述任务和问题即可。

2.3.2 Few shot

这个与Zero shot对应,Few shot 在构建提示词的时候会给模型一些参考的样例。个人认为Few shot是一种非常有效的提示方式,模型可以从你给出的样例中学习到特定的范式或者知识,让模型可以更好地输出你想要的回复。
当然,few shot也有一些局限性:

  1. 多数标签的偏见(majority label bias):few-shot例子中所提供的标签如果分布不平衡,则会严重影响到测试任务。这个非常好理解:是传统的不平衡学习(imbalanced learning)在prompt上的具体体现。
  2. 近期偏见(recency bias):模型倾向于为测试样本输出最近看到的few-shot样本。这个听上去有点像灾难遗忘,即模型更喜欢记住最近输入的样本信息。
  3. 公共token偏见(common token bias):模型倾向于考虑那些出现次数较多的token。这个也比较好理解。因为大模型本质上就是统计模型,当然倾向于出现次数多的那些词。

2.3.3 思维链COT

思维链技术意思是使用特定的步骤设定,引导模型输出和思考。研究表明,使用COT技术能明现提升模型对运算或复杂问题处理的能力。往往会加上一句 let’s think step by step。

一般会结合few shot使用,就是few shot的时候告诉模型,我在解决这一类问题的时候会先这么做,然后这么做,最后这么做,最后模型就会模仿你的思考方式来解决新的问题。[1]
在这里插入图片描述
当然你也可以zero shot,加一句魔法词let’s think step by step或其他你能想到的能引导模型分步骤思考和输出的prompt。[2]
在这里插入图片描述

2.3.4 自我一致性 self-consistency[3]

说白了就是单一一条思维链COT的结果可能还是有问题的,这里让模型按照思维链的方式多,生成几个结果,然后取多数出现的结果作为最终结果
在这里插入图片描述

2.3.5 生成知识提示[4]

简单来说,就是让模型先对问题生成一些相关的知识点,然后将这些知识作为另一个LLM的输入,最终生成答案。
在这里插入图片描述

2.3.6 提示学习

这部分内容就更高级了,因为涉及到模型的训练。
参考一篇综述[5],以LLM是否微调、prompt是否微调为标准,可以将prompt tuning分为以下5个方面:
在这里插入图片描述
Promptless fine-tuning: 不使用prompt、直接微调语言模型。
Tuning-free prompting: 无需微调的prompt。
Fixed-LM prompt tuning: 固定LM,微调prompt。这种最为常用。
Fixed-prompt LM tuning: 固定prompt,微调LM。
Prompt+LM fine-tuning: 两部分一起微调

Prefix-tuning[6]

由斯坦福大学的Percy Liang团队提出,其在LLM的输入层中加入可学习的prompt embedding,即在文段开头引入连续的前缀向量,固定住LLM的权重,专门只微调prompt部分参数。
在这里插入图片描述

P-tuning[7]

数据集往往是{prompt,input,output}的形式,思想是专门对于输入的prompt部分,将其转换成相应的token embedding去训练优化,最后的embedding通过训练迭代确定的,这相当于在连续空间中去学习一个prompt。
在这里插入图片描述

参考文献

[1]Wei, Jason, et al. “Chain of thought prompting elicits reasoning in large language models.” arXiv preprint arXiv:2201.11903 (2022).NeurIPS 2022. 2.

[2]Kojima, Takeshi, et al. “Large language models are zero-shot reasoners.” arXiv preprint arXiv:2205.11916 (2022).NeurIPS 2022.

[3]Wang, Xuezhi, et al. “Self-consistency improves chain of thought reasoning in language models.” arXiv preprint arXiv:2203.11171 (2022). ICLR 2023

[4]Liu, Jiacheng, et al. “Generated knowledge prompting for commonsense reasoning.” arXiv preprint arXiv:2110.08387 (2021). ACL2022

[5]Liu P, Yuan W, Fu J, et al. Pre-train, prompt, and predict: A systematic survey of prompting methods in natural language processing[J]. ACM Computing Surveys, 2023, 55(9): 1-35.

[6]Li X L, Liang P. Prefix-tuning: Optimizing continuous prompts for generation[J]. arXiv preprint arXiv:2101.00190, 2021.

[7]Liu X, Ji K, Fu Y, et al. P-tuning: Prompt tuning can be comparable to fine-tuning across scales and tasks[C]//Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers). 2022: 61-68.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1210787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业品电商,新的隐形冠军藏不住了?

【潮汐商业评论/原创】 “时代真的变了。”自打从淘宝买了一批配件后,工厂老板李瓦就经常感慨。 李瓦经营着一家专门生产机器零部件的工厂,日常经常要采购传送带、螺丝、螺母等材料,过去他主要通过线下的方式进货。但最近朋友圈里一段淘宝工…

2023.11.15 hive sql之函数标准,字符串,日期,数学函数

目录 一.函数分类标准 二.查看官方函数,与简单演示 三.3种类型函数演示 四.字符串函数 1.常见字符串函数 2.索引函数 解析函数 五.日期函数 1.获取当前时间 2.获取日期相关 3.周,季度等计算 4.时间戳 六.数学函数 一.函数分类标准 目前hive三大标准 UDF:&#xff08…

社区论坛小程序源码系统,功能齐全,页面简洁,前端+后端+完整部署教程

现如今,社区论坛已经成为人们交流思想,分享经验,获取信息的重要平台。近年来,小程序的出现更是改变了传统的网站建设方式,让用户体验更加便捷,高效。今天源码小编来和大家分享一款社区论坛小程序源码系统&a…

基于SSM的OA办公管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

exce常用

一、冻结 同时冻结行和列 打开一个Excel表格,点击选择需要冻结的行和列交接处对应的单元格(例如:需要同时冻结1、2行和A、B列,则选中行列交接对应的C3单元格)), 即下一行 和下一列的交接点。 …

使用grad-cam对ViT的输出进行可视化

使用grad-cam对ViT的输出进行可视化 文章目录 使用grad-cam对ViT的输出进行可视化前言原理使用代码Pytorch-grad-cam库的更多方法在MMpretrain中使用示例总结 前言 Vision Transformer (ViT) 作为现在CV中的主流backbone,它可以在图像分类任务上达到与卷积神经网络…

mysql数据库超过最大连接数

mysql 超过数据库最大连接数解决办法 1、报错信息 首先无论是navicat 执行sql还是 用idea启动多的服务都会有如下报错信息: 2、解决办法 2.1命令方式修改 这种方法是由其他资料提供的。这种修改方式是临时的,如果mysql服务重启设置就会还原&#xff…

弱类型和强类型自定义UDAF函数

目录 使用自带的avg函数弱类型自定义UDAF函数(AVG)强类型自定义UDAF函数(AVG) 弱类型:3.x过期 2.x有 强类型:3.x 2.x没有 使用自带的avg函数 import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, SparkSession}object UserDefine…

双极膜电渗析设备

#双极膜电渗析设备 双极膜(bipolar membrance,简称BPM)是一种新型的离子交换复合膜,它通常由阳离子交换层(N型膜)、界面亲水层(催化层)和阴离子交换膜(P型膜)…

【计算思维】少儿编程蓝桥杯青少组计算思维题考试真题及解析C

【科技素养】少儿编程蓝桥杯青少组计算思维题考试真题及解析 1.天平的左右两端分别放有一些砝码,如下图所示,右边的砝码不变,从左边最多拿走几个砝码,可以使天平左右两边平衡: A、1 B、2 C、3 D、4 2.把下面的图形…

sqli-labs(Less-3)

1. 通过构造id1’ 和id1’) 和id1’)–确定存在注入 可知原始url为 id(‘1’) 2.使用order by 语句猜字段数 http://127.0.0.1/sqlilabs/Less-3/?id1) order by 4 -- http://127.0.0.1/sqlilabs/Less-3/?id1) order by 3 --3. 使用联合查询union select http://127.0.0.1…

Window MongoDB安装

三种NOSQL的一种,Redis MongoDB ES 应用场景: 1.社交场景:使用Mongodb存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地点等功能 2.游戏场景:使用Mongodb存储游戏用户信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询,高效率存储和访问…

IDEA创建JavaFX项目

1、New -> Project 2、选择JavaFX 配置项目名,包名,lib包管理工具,JDK版本(注,JDK版本最低需要11) 3、选择lib包 根据自己需求选择 lib包介绍 BootstrapFX:BootstrapFX 是一个为 JavaFX 提…

怎样正确选择等保测评机构开展等保测评工作?

随着大家对网络安全的重视,越来越多的企业需要做等保测评了。很多小伙伴想知道怎样正确选择等保测评机构开展等保测评工作?这里就给大家简单说说。 怎样正确选择等保测评机构开展等保测评工作? 【回答】:正确选择等保测评机构开展…

Java魔法解密:HashMap底层机制大揭秘

文章目录 一、 源码深度解析1.1 窥探Java集合框架中的设计思想1.2 逐行解读HashMap的源代码1.2.1 类信息1.2.2 常量属性1.2.3 变量属性1.2.4 节点信息1.2.5 构造方法1.2.6 put方法1.2.6.1 putVal方法1.2.6.2 putTreeVal方法1.2.6.3 tieBreakOrder方法1.2.6.4 treeifyBin方法1.2…

【联邦学习+区块链】TORR: A Lightweight Blockchain for Decentralized Federated Learning

文章目录 I.CONTRIBUTIONII. ASSUMPTIONS AND THREAT MODELA. AssumptionsB. Threat Model III. SYSTEM DESIGNA. Design OverviewB. Block DesignC. InitializationD. Role SelectionE. Storage ProtocolF. Aggregation ProtocolG. Proof of ReliabilityH. Blockchain Consens…

Hive的安装部署

目录 1.修改hadoop相关参数2.Hive解压安装3.Hive元数据的三种部署方式3.1 元数据库之Derby3.2 元数据库之Mysql3.3 元数据之MetaStore Server 4.hive的两种访问方式4.1 命令行的方式4.2 HiveServer2模式 1.修改hadoop相关参数 1)修改core-site.xml [roothadoop102…

Android 12 intent-filter添加android:exported后任然报错解决方法

Android 12 或更高版本为目标平台,且包含使用intent-filter 过滤器的 activity、service或receiver,您必须为这些应用组件显式声明 android:exported 属性。 常规操作 查看AndroidManifest.xml文件,搜索intent-filter,然后添加好…

灰度图处理方法

做深度学习项目图像处理的时候常常涉及到灰度图处理,这里对自己处理灰度图的方式做一个记录,后续有更新的话会在此更新 一,多维数组可视化 将多维数组可视化为灰度图 img_gray Image.fromarray(img, modeL) # 实现array到image的转换,m…