LLM--提示词Propmt的概念、作用及如何设计提示词

文章目录

  • 1. 什么是提示词?
  • 2. 提示词的作用
  • 3. 如何设计提示词?
    • 3.1. 提供详细的信息
    • 3.2. 指定角色
    • 3.3. 使用分隔符和特殊符号
    • 3.4. 提供示例
    • 3.5. 少量示例的思维链(COT)模型
    • 3.6. 思维树(TOT)模型
    • 3.7. 自洽性 COT 模型
    • 3.8 提供专业的数据
  • 4. 提示词原则
  • 5. 示例

有关如何写好提示词,请学习面向开发者的大模型手册 - LLM Cookbook,设计高效 Prompt 的两个关键原则:编写清晰、具体的指令给予模型充足思考时间

1. 什么是提示词?

一种用于指导人工智能(如聊天机器人或图像生成工具)生成特定内容的文字。

提示词的设计旨在以一种高效精确的方式向模型传达用户的意图或所需的任务类型,从而使模型能够根据这些提示生成相应的文本、图像或其他形式的回应。

如同生活中的交流,说话本身并不难,但高效的表达自己的想法确实有点门道。,正确和有效的提示词可以极大地提升 AI 交互的效果

从底层逻辑上讲,提示词的作用主要包含三方面:清晰地表达需求引导 AI 模型思考提供专业数据,围绕着这三个方面能拓展出许多作用

2. 提示词的作用

提示词是 AI 交互中的关键元素,它们不仅影响着 AI 的响应方式,也是实现有效沟通和达成用户目标的重要工具。了解并恰当使用提示词,可以显著提升与 AI 模型的互动效果,使得这些高级技术更加贴合用户的实际需求

  • 引导对话方向:提示词帮助指明对话的方向和主题,确保 AI 能够理解用户的具体需求。
  • 提高响应质量:精确和具体的提示词能够提高 AI 响应的相关性和准确性,减少误解和无效回答。
  • 增强用户体验:通过提供清晰的提示词,用户可以获得更快速、更满意的回答,从而提升整体的交互体验。
  • 激发 AI 的创造力和深度思考:创意性和探索性的提示词可以激发 AI 进行更深入的思考和创新,生成更有趣和丰富的内容。
  • 实现特定任务和目标:指令性和问题解决型的提示词可以帮助用户实现具体的任务或获得解决特定问题的方案。
  • 调整语言风格和输出格式:通过调整提示词的风格和格式,用户可以指导 AI 以不同的方式表达,满足不同场景的需求。
  • 设定个性化风格:情感性提示词有助于生成更有情感共鸣的回答,增加交流的人性化和温暖。
  • 适应多样化需求:不同类型的提示词使 AI 能够适应更广泛的查询和需求,提供多元化的服务。

3. 如何设计提示词?

提示词的设计原则如下:

3.1. 提供详细的信息

按照 5W1H(What/When/Where/Who/Why/How)模型提问,这不仅能从根本上提高你的提示词设计能力,也能培养你的表达习惯

  • What:具体是什么?下一步是什么?还有什么?
  • When:哪个时间点?什么时候开始/介绍?历时多久?
  • Who:你是谁?你要扮演什么角色?谁需要你的帮助?谁关心这个需求?
  • Where:具体在哪里?将要去哪里?
  • Why:为什么会出现这个问题?你为什么求助我?
  • How:怎么解决?预期效果怎样?多少?

3.2. 指定角色

指定角色本就是在表达我们的特定需求,因为各种角色有他自己的属性、风格和能力

3.3. 使用分隔符和特殊符号

对于结构复杂的提示词,分隔符和特殊符号的使用能帮助 AI 模型准确的识别你的需求

目前经常用到的特殊符号主要有:**#/*/<>/—/‘’/“”**等

示例

#背景#:`正在阅读一篇文章,由多种语言组成,为了更好地理解,我需要将部分语言翻译成英文。`
#角色#:`希望您是一位能将任何语言翻译成英文的翻译。`
#动作#:`无论我输入多少内容,您都只需要将我输入的 " “ 内的提示翻译成英文。`

在这里插入图片描述

#角色#:`你是一个NLP专家`
#动作#:`无论我输入多少内容,您都只需要将我输入的“”内的文件进行人名、地名、组织的提取,并严格按照输出格式进行输出`
#输出格式#: `
{"人名":"张三#李四",
"地名":"苗栗县#广州",
"组织名":"国民党#党校"
}
`
#输入#:`国民党主席朱立伦6日中常会宣布推动党务组织,包括将黄复兴党部转型为退伍军人服务工作委员会,与原有地方党部组织功能整并,引起外界关注。对此,国民党副主席连胜文今日强调并非裁撤,属于2.0的概念,组织改革是为了进步,调整需要时间,国民党中央也会持续跟大家沟通。连胜文今天前往苗栗县陪同县议员余文忠登记参选苗栗市长,对于国民党内推动组织改革。连胜文说,他首先要澄清,黄复兴党部并没有裁撤,只是根据现实社会需求做一些调整,主要目的也希望能够将有限资源做最好运用,以最精简人力做最大服务`

在这里插入图片描述

3.4. 提供示例

示例的运用更清晰的表达你的需求,它不仅包含了你想要的输出格式、内容,还能引导Chat GPT 按照你的逻辑思考,而示例的重点不在于其复杂性,更重要的是其背后的逻辑。

3.5. 少量示例的思维链(COT)模型

对于复杂且深入的问题,如果直接让 Chat GPT 给出答案,结果一般都会差强人意,所以就需要我们运营少量示例辅助的 COT 模型,引导 AI 逐步的思考

3.6. 思维树(TOT)模型

COT 思维链模型虽然能引导 AI 模型逐步的思考,并最终得到我们想要的答案,但对于需要探索或预判的复杂任务来说,传统或简单的提示技巧是不够的。ToT 围绕着一棵思维树展开,思维由连贯的语言序列表示,这个序列就是解决问题的中间步骤。使用这种方法,语言模型能够自己对严谨推理过程的中间思维进行评估,而每个中间过程都保留最有的选项,最终结果会从这些最优子选项的排列组合中挑选出来。

3.7. 自洽性 COT 模型

自洽性(Self-consistency)是对 CoT 的一个补充,它不仅仅生成一个思路链,而是生成多个思路链,然后取多数答案作为最终答案。这种想法是通过少样本 CoT 采样多个不同的推理路径,并使用生成结果选择最一致的答案。这有助于提高 AI 模型在处理算术和常识推理任务中的准确性。(简而言之,一题多解,选择最优解

3.8 提供专业的数据

Chat GPT 非常擅长处理逻辑性的问题,能辅助你思考和文本创作,但它并不擅长回答一些事实性的问题,比如你问它一些具体的历史事件。尽管它可能回答的有模有样的,但真实性糟糕透了,这就是因为它缺乏准确的数据。

为了改善它的准确性,你非常有必要输入跟问题相关的专业数据,这可以通过附件上传、文本输入,也可以通过打造 GPTs 实现,关键是你要有专业数据。

4. 提示词原则

有关如何写好提示词,请学习面向开发者的大模型手册 - LLM Cookbook,设计高效 Prompt 的两个关键原则:编写清晰、具体的指令给予模型充足思考时间

下面都是针对上面2个原则的一些细化。

  • 明确“好结果”的标准:
    • Prompt的性能上限与我们对“好结果”的理解程度成正比
    • 每一条指令的表述应当越精炼越好
    • 遵守奥卡姆剃刀法则【“简约之法则”】:简洁的往往是正确的,越是复杂,越容易犯错
  • 精准表达任务指令:使用官方、书面、礼貌、友善的语言撰写Prompt,力求语句流畅、意图清晰、表达精简,确保Prompt所描述的相关任务易读、易懂、易操作: Prompt设计的基本原则,是Prompt应当和大模型的高质量训练数据分布尽可能一致
    • 使用2-3句话向高中生解释提示工程的概念
    • 生成图像的prompt: 中国风,身穿机甲,赛博朋克,色彩丰富,高对比度,完美光影,虚幻引擎,浩瀚星空背景,CG渲染,超高分辨率,4k高清壁纸,电影特效,光线追踪,高清画质,细节刻画
  • 为否定句设置兜底策略: 尽量为每一个否定句都设置一个兜底策略
  • 指定模型所扮演的角色
    • 你是一位小红书爆款文案写作大师,请帮我写一份青岛旅游攻略
    • 你是一位专业的游戏原画大师,请帮我画一幅装着光的水晶瓶
  • 指定生成结果的格式
  • 增加强调词和强调符号: 模型可能会更关心靠前和靠后的指令,忽略中间的指令,将重要的需求放在前面,并在最后加以重复可以起到强调的作用
    • 如果每一条需求都很重要,则可以尝试使用text、「text」、“text”等特殊符号,或者增加注意、务必、严格等词汇来强调需求点的重要程度。
    • 和角色指定一样,增加强调符号或强调词并不总是有效的,但通常也不会有什么副作用。
  • 撰写模块化的Prompt
  • 真实场景下迭代Prompt: Prompt的设计是一个迭代的过程,需要大量的实验来获得最佳效果。
  • 测试Prompt的稳定性
  • 使用思维链
    • 请你帮我计算一下 ( 1362 + 5145 ) ∗ 145 − ( 1517 ∗ 42 + 24 ) = ? (1362+5145)*145-(1517*42+24)=? (1362+5145)145(151742+24)=?,每一步运算过程都要展示出来,并确保计算的正确性。
  • 使用Few-shot Prompt
    • 之前提到的Prompt都属于Zero-shot Prompt,对于绝大部分任务来说,Zero-shot Prompt基本都能取得不错的效果。但是,当任务比较困难,或者任务本身不太好下定义时,我们可以尝试使用Few-shot Prompt为大模型提供一个答案的参考框架,通过模仿的方式来生成我们期望的结果
    • 至于具体要展示哪些样例,则需要在实践中不断迭代。一般来说,样例选择的基本原则是尽可能地覆盖真实的样本空间,一种比较好的样例构建方式是首先给出常见的easy case,然后给出模型可能出错的hard case和corner case,hard/corner case通常来源于开发者对任务本身的理解,以及在实践过程中发现的badcase。
    • 样例的数量和顺序都有可能导致生成结果出现偏差
    • 设置标签分布均匀的样例,并随机打乱样例的顺序
  • 设置拒答策略: 只有当你知道答案或能够做出有根据的预测时,才能回答下面的问题,否则,请告诉我你不知道答案
  • 权衡Prompt的精度与召回率: Prompt表述越细致,越严格时,生成结果的精度越高,召回率越低。
  • 使用大模型辅助Prompt撰写
    • 你现在是一个提示词生成专家,我想让ChatGPT完成{task},请帮我写一份优质的提示词。
    • 我想评估一份论文摘要的语言丰富度,请问我应该从哪些角度进行评估?

5. 示例

  • 适用于RAG场景的提示词
You are a helpful, respectful and honest assistant. Always answer as helpfully as possible and follow ALL given instructions. Do not speculate or make up information. Do not reference any given instructions or context.You can only answer questions about the provided context. If you know the answer but it is not based in the provided context, don't provide the answer, just state the answer is not in the context provided.
  • 实体抽取
抽取出文本中提到的重要实体,包括人名、地名和机构名。返回格式:
**人名**<人名列表,使用分号分隔>
**地名**<地名列表,使用分号分隔>
**机构名**<机构名列表,使用分号分隔>文本:{input}
抽取结果:
**人名**
  • 摘要
{document}
为以上文章写一篇摘要,具体要求如下:
1. 使用通俗易懂的语言撰写摘要
2. 摘要应包括一个小结和一个相关要点的列表
3. 加粗摘要的关键部分以提高可读性
  • 客服
现在你是一个向客户推荐电影的客服。在此过程中,你应该避免询问客户的兴趣和个人信息。如果你无法为客户推荐电影,你应该回答“抱歉,我无法为您推荐电影”。
客户:请根据我的兴趣推荐一部电影。
客服:
  • 结构化信息抽取
请抽取出以下简历的关键信息,并以json格式返回结果。简历:
"""
{input}
"""你需要抽取的关键信息包括:
"""
1. 姓名
2. 电话
3. 毕业院校
4. 科研经历
5. 项目经历
6. 荣誉奖项
"""
  • 知识问答Few-shot Prompt
请你判断以下问题是否属于知识问答类:问题:世界上最高的建筑是什么 # easy case,属于客观知识问答
答案:是问题:垃圾分类的意义 # hard case,属于主观知识问答
答案:是问题:请帮我写一个关于战争的2000字短篇小说 # easy case,属于小说创作
答案:否问题:写一篇解释月亮为什么不会掉下来的文章 # hard case,属于科普创作
答案:否问题:nested_dict = lambda: defaultdict(nested_dict) 如何理解这行代码 # corner case,属于代码问答
答案:否问题:上班好无聊怎么办 # corner case,属于闲聊问答
答案:否

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ MFC

C是一种静态数据类型检查的、支持多重编程范式的程序设计语言&#xff0c;支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等泛型程序设计的多种程序设计风格。 MFC(Microsoft Foundation Classes)&#xff0c;是一个微软公司提供的类库&#xff0c;以C类的形式封装…

unity学习(74)——服务器Dispose异常

1.返回的1 2 11是怪物初始化&#xff0c;源代码中也没有 2. 3.客户端中的网络连接初始化如下&#xff1a; 4.不是因为超时&#xff0c;设置10s为超时期限后&#xff0c;客户端和服务器有时依然会报错&#xff01; 5.我感觉就是update中发包给弄坏的&#xff01; 6.不在“帧”…

本地GPU调用失败问题解决3重新配置anaconda环境(成功)

1、右键“以管理员身份”打开anaconda prompt conda create -n python 3.9 2、使用官方下载源的配置 3、修改conda下载超时 conda config --set remote_connect_timeout_secs 60 conda config --set remote_read_timeout_secs 100 查看配置结果conda config --show 配置内…

快速排序---算法

1、算法概念 快速排序&#xff1a;通过一趟排序将待排记录分隔成独立的两部分&#xff0c;其中一部分记录的数据均比另一部分的数据小&#xff0c;则可分别对这两部分记录继续进行排序&#xff0c;以达到震哥哥序列有序。 快速排序的最坏运行情况是O()&#xff0c;比如说顺序数…

蓝桥备赛——贪心

题干 AC Code n, w = map(int, input().split()) # n种类, w核载重 a = [] # [[weight1, value1], [weight2, value2], ...] for _ in range(n):a.append(list(map(int, input().split()))) a.sort(key=lambda x: x[1] / x[0], reverse=True)maxVal = 0for i in a:if i[0…

原生js实现循环滚动效果

原生js实现如下图循环滚动效果 核心代码 <div class"scroll"><div class"blist" id"scrollContainer"><div class"bitem"></div>......<div class"bitem"></div></div> </di…

ViveNAS性能调试笔记(一)

ViveNAS是一个开源的NAS文件服务软件&#xff0c;有一套独立自创的架构&#xff0c;ViveNAS希望能做到下面的目标&#xff1a; - 能支持混合使用高性能的介质(NVMe SSD)和低性能介质&#xff08;HDD&#xff0c;甚至磁带&#xff09;。做到性能、成本动态均衡。因此ViveNAS使用…

数据结构八大常见的排序

数据结构八大常见的排序 常见排序算法分类1.插入排序2.希尔排序(缩小增量排序)3.选择排序4.堆排序5.冒泡排序6.快速排序7.归并排序归并排序非递归的实现8.计数排序 常见排序算法分类 1.插入排序 基本思想&#xff1a;把待排序的数组按大小逐个插入到一个已经排好序的有序序列中…

民航电子数据库:CAEMigrator迁移数据库时总是卡死

目录 一、场景二、异常情况三、排查四、应急方案 一、场景 1、对接民航电子数据库 2、将mysql数据库迁移到cae数据库 3、使用CAEMigrator迁移工具进行数据库迁移时&#xff0c;该工具会卡死&#xff08;不清楚是否是部署cae服务的服务器资源导致&#xff09; 二、异常情况 …

大数据技术之 Apache Doris(一)

第 1 章 Doris 简介 1.1 Doris 概述 Apache Doris 由百度大数据部研发&#xff08;之前叫百度 Palo&#xff0c;2018 年贡献到 Apache 社区后&#xff0c;更名为 Doris &#xff09;&#xff0c;在百度内部&#xff0c;有超过 200 个产品线在使用&#xff0c;部署机器超过 10…

GenICam-GenApi简介

EMVA 1288标准之GemICam-GenApi学习与解读 背景介绍 当前相机不仅用于传输图像&#xff0c;还打包了越来越多的功能。这就导致相机的编程接口越来越复杂。 GenICam的目标是为所有类型的相机提供一个通用的编程接口&#xff0c;无论相机使用何种接口技术&#xff0c;或者实现…

Can‘t connect to server on ‘localhost‘ (10061)

问题&#xff1a;电脑关机重启后&#xff0c;连接不上mysql了&#xff0c;报错信息如下&#xff1a;2002 - Cant connect to server on localhost (10061)解决办法&#xff1a;很大的原因是mysql服务没有启动&#xff0c;需要你重启一下mysql&#xff1a; 以管理员的身份运行cm…

一条SQL在MySQL中的执行过程

图解&#xff1a; 第⼀步&#xff1a;连接器 过程 1. 建⽴连接&#xff1a;与客户端进⾏ TCP 三次握⼿建⽴连接&#xff1b; 2. 校验密码&#xff1a;校验客户端的⽤户名和密码&#xff0c;如果⽤户名或密码不对&#xff0c;则会报错&#xff1b;3. 权限判断&#xff1a…

Vitepress部署到GitHub Pages,工作流

效果&#xff1a; 第一步&#xff1a; 部署 VitePress 站点 | VitePress 执行 npm run docs:build&#xff0c;npm run docs:preview&#xff0c;生成dist文件 第二步&#xff1a; 手动创建.gitignore文件&#xff1a; node_modules .DS_Store dist-ssr cache .cache .temp *…

算法(滑动窗口四)

1.串联所有单词的子串 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如&#xff0c;如果 words ["ab","cd","ef"]&#xff…

【数字IC/FPGA】手撕代码:模3检测器(判断输入序列能否被3整除)

今天我们来手撕一个常见的笔试题&#xff0c;使用的方法是三段式Moore状态机。 题目描述&#xff1a; 输入端口是串行的1bit数据&#xff0c;每个时钟周期进来一位新数据后&#xff0c;实时检查当前序列是否能整除3&#xff0c;若能则输出1&#xff0c;否则输出0。 例如&#…

前端小白的学习之路(webpack)

提示&#xff1a;webpack简介&#xff0c;nvm,npm配置环境,常用命令&#xff0c;基本web项目构建 目录 webpack 1.配置环境 1)node.js node常用命令 2)nvm nvm常用命令&#xff1a; 3)npm npm常用命令 2.构建简易web项目 1)创建目录 2)安装webpack依赖 3)配置 webpac…

设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。

设计一个动物声音“模拟器”&#xff0c;希望模拟器可以模拟许多动物的叫声。要求如下&#xff1a; &#xff08;1&#xff09;编写接口Animal Animal接口有2个抽象方法cry()和getAnimaName()&#xff0c;即要求实现该接口的各种具体动物类给出自己的叫声和种类名称。 &…

初始Java篇(JavaSE基础语法)(5)(类和对象(上))

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 目录 面向对象的初步认知 面向对象与面向过程的区别 类的定义和使用 类的定义格式 类的实例化 this引用 什么是this引用&#xff1f; this引用…

编译 amd gpu 核心态驱动 rocm kmd linux kernel

AMD 开源了专门的 ROCm 的kmd Linux Kernel&#xff0c; 1,下载源代码 git clone --recursive https://github.com/ROCm/ROCK-Kernel-Driver.gitcd ROCK-Kernel-Driver/git checkout rocm-6.0.22,配置kernel cp -v /boot/config-$(uname -r) .config make menuconfig Graph…