当前位置: 首页 > news >正文

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,属于闲聊问答
答案:否

相关文章:

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

文章目录 1. 什么是提示词&#xff1f;2. 提示词的作用3. 如何设计提示词&#xff1f;3.1. 提供详细的信息3.2. 指定角色3.3. 使用分隔符和特殊符号3.4. 提供示例3.5. 少量示例的思维链&#xff08;COT&#xff09;模型3.6. 思维树&#xff08;TOT&#xff09;模型3.7. 自洽性 …...

59 使用 uqrcodejs 生成二维码

前言 这是一个最近的一个来自于朋友的需求, 然后做了一个 基于 uqrcodejs 来生成 二维码的一个 demo package.json 中增加以依赖 "uqrcodejs": "^4.0.7", 测试用例 <template><div class"hello"><canvas id"qrcode&qu…...

Leetcode 3097. Shortest Subarray With OR at Least K II

Leetcode 3097. Shortest Subarray With OR at Least K II 1. 解题思路2. 代码实现 题目链接&#xff1a;3097. Shortest Subarray With OR at Least K II 1. 解题思路 这一题是题目3095的一个进阶版本&#xff0c;但也就是增加了序列的复杂度而已&#xff0c;要求我们能够在…...

算法系列--递归,回溯,剪枝的综合应用(2)

&#x1f495;"对相爱的人来说&#xff0c;对方的心意&#xff0c;才是最好的房子。"&#x1f495; 作者&#xff1a;Lvzi 文章主要内容&#xff1a;算法系列–递归,回溯,剪枝的综合应用(2) 大家好,今天为大家带来的是算法系列--递归,回溯,剪枝的综合应用(2) 一.括号…...

Docker搭建LNMP环境实战(09):安装mariadb

1、编写mariadb部署配置文件 在文件夹&#xff1a;/mnt/hgfs/dockers/test_site/compose下创建文件&#xff1a;test_site_mariadb.yml&#xff0c;内容如下&#xff1a; version: "3.5" services:test_site_mariadb:container_name: test_site_mariadbimage: mari…...

基于Python的微博舆论分析,微博评论情感分析可视化系统,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

Flutter iOS上架指南

本文探讨了使用Flutter开发的iOS应用能否上架&#xff0c;以及上架的具体流程。苹果提供了App Store作为正式上架渠道&#xff0c;同时也有TestFlight供开发者进行内测。合规并通过审核后&#xff0c;Flutter应用可以顺利上架。但上架过程可能存在一些挑战&#xff0c;因此可能…...

实操:driver.js 实现产品导览、亮点、上下文帮助

官网 https://driverjs.com/ 依赖 <script src"https://cdn.jsdelivr.net/npm/driver.js1.0.1/dist/driver.js.iife.js"></script> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/driver.js1.0.1/dist/driver.css"/…...

【JavaWeb】Day29.SpringBootWeb请求响应——请求(二)

请求响应 4.数组集合参数 数组集合参数的使用场景&#xff1a;在HTML的表单中&#xff0c;有一个表单项是支持多选的(复选框)&#xff0c;可以提交选择的多个值。 4.1 数组 数组参数&#xff1a;请求参数名与形参数组名称相同且请求参数为多个&#xff0c;定义数组类型形参即…...

asf是什么格式的文件?用手机怎么打开?

由于手机操作系统和硬件的限制&#xff0c;大部分手机并不直接支持asf文件的播放。因此&#xff0c;如果你想在手机上打开asf文件&#xff0c;你可能需要先将文件转换为手机支持的格式&#xff0c;如MP4。可以通过使用一些视频转换软件来实现&#xff0c;比如野葱视频转换器。 …...

picGo图床搭建gitee和smms(建议使用)

picGoGitee 这个需要下载gitee插件, 因为官方频繁的检索文件类型, 有时候也会失效 如果没有特殊要求平时存个学习的要看图中文字的重要的图片建议就是smms, 免费也够用! 图片存本地不方便, 各种APP中来回传还会失帧损失画质, 所以你值得往下看 picGosmms 建议使用这个, sm…...

LeetCode | 数组 | 二分查找 | 35.搜索插入位置【C++】

题目链接 题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出…...

Linux 给网卡配置ip

ip addr | grep eth9 ifconfig eth9 10.0.0.2 netmask 255.255.255.0 up...

【C语言】翻译环境与运行环境

一、前言 在我们学习C语言的时候&#xff0c;第一个接触的程序就是&#xff1a;在屏幕上打印” hello word! “&#xff0c;可当时的我们却未去深入的理解与感悟&#xff0c;一个程序代码是如何运行的&#xff1b;而这一期的博客&#xff0c;则是带着我们&#xff0c;通过C代码…...

ubuntu20.04执行sudo apt-get update失败的解决方法

参考&#xff1a;执行sudo apt-get update失败的解决方案 1、换源型错误 &#xff08;1&#xff09;编辑/etc/apt/sources.list文件 在命令行中输入&#xff1a; sudo vim /etc/apt/sources.list 或者 sudo gedit /etc/apt/sources.list 推荐使用后者 &#xff08;2&#xf…...

接口调用成功后端却一直返回404

vuespringboot 我在vue.config.js中配置了向后端的反向代理 然后使用了axios向后端发送post请求 可以看到可以接收到前端传来的值 但是前端控制台却报了 “xhr.js:245POST http://localhost:7777/api/login 404 (Not Found)” 最后询问我那智慧的堂哥... ... 解决办法是把C…...

【Vmware】 debian 12 安装教程

1.前提说明 VMware 17.5.1 (自行安装)&#xff0c;参考Debian 12maven 3.8.7git 2.39.2jdk 1.8 / 11 / 17 1.1.Debian 下载 访问(https://www.debian.org/download) 下载 Debian 这是 Debian 12&#xff0c;代号为 bookworm&#xff0c;网络安装&#xff0c;用于 64 位 PC&a…...

YooAssets 使用相关

## 使用 YooAssets 动态加载原生文件时候 > 原生文件&#xff1a;txt&#xff1b;json&#xff1b;等需要直接保存文件内string字符的文件 需要将打包方式设置成为&#xff0c;PackRawFile 并且加载时候使用 API &#xff1a; YooAssets.LoadRawFileSync()YooAssets.LoadRa…...

精准扶贫管理系统|基于Springboot的精准扶贫管理系统设计与实现(源码+数据库+文档)

精准扶贫管理系统目录 目录 基于Springboot的精准扶贫管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员模块的实现 &#xff08;1&#xff09;用户信息管理 &#xff08;2&#xff09;贫困户信息管理 &#xff08;3&#xff09;新闻类型管理 &a…...

Flutter与iOS和Android原生页面交互

一、Flutter 与原生页面交互的重要性和应用场景 Flutter 是一个由 Google 开发的开源框架&#xff0c;用于创建跨平台的移动、Web 和桌面应用程序。Flutter 允许开发者使用一套代码库为 Android 和 iOS 等平台构建美观、高性能的应用程序。然而&#xff0c;尽管 Flutter 提供了…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

Easy Excel

Easy Excel 一、依赖引入二、基本使用1. 定义实体类&#xff08;导入/导出共用&#xff09;2. 写 Excel3. 读 Excel 三、常用注解说明&#xff08;完整列表&#xff09;四、进阶&#xff1a;自定义转换器&#xff08;Converter&#xff09; 其它自定义转换器没生效 Easy Excel在…...