Prompt Engineering Guide

embedded/2024/11/14 12:08:06/

文章目录

  • Prompt Engineering Guide
    • 提示工程简介
      • 基本概念
      • 包含要素
      • 要避免不明确的prompt技术
      • 关注做了什么,不要关注不做什么
      • 角色提示Role Prompting
    • 提示技术
      • CoT
      • 生成的知识作为预测的知识库判断的一部分
      • Prompting Chaining
      • ToT思维链
      • 检索增强RAG
      • Prompt策略分析
    • 提示应用
      • 所有Prompt性能策略对性能的影响
      • 提示函数
      • 其它内容

Prompt Engineering Guide

这是对于提示工程的学习笔记,所有的代码以及图片均来自https://www.promptingguide.ai/zh。这里仅记录自己暂时能用到的知识,强烈建议更多内容去该网站学习。
所有内容均不涉及商业活动,如有侵权,请联系我进行删除。

提示工程简介

基本概念

格式并非必须的,大抵有以下几种:

做法1:
<问题>?
<答案><问题>?
<答案><问题>?
<答案><问题>?
----------------------
做法2:
Q: <问题>?
A: <答案>Q: <问题>?
A: <答案>Q: <问题>?
A: <答案>Q: <问题>?
A:
----------------------
做法3:
This is awesome! // Positive
This is bad! // Negative
Wow that movie was rad! // Positive
What a horrible show! //

当然指令没有包含,这只是说输入指令和输出指令的格式。一个prompt最好包含下面说的4种要素,尤其是我们要涉及的数据与内容时。

包含要素

指令、上下文、输入数据、输出指令。但是并不要求所有都必须的。

不存在什么特定的词元(tokens)或关键词(tokens)能确定带来更好的结果。更重要的是要有一个具有良好格式和描述性的提示词。事实上,在提示中提供示例对于获得特定格式的期望输出非常有效。

提示:
提取以下文本中的地名。
所需格式:
地点:<逗号分隔的公司名称列表>
输入:“虽然这些发展对研究人员来说是令人鼓舞的,但仍有许多谜团。里斯本未知的香帕利莫德中心的神经免疫学家 Henrique Veiga-Fernandes 说:“我们经常在大脑和我们在周围看到的效果之间有一个黑匣子。”“如果我们想在治疗背景下使用它,我们实际上需要了解机制。””输出:
地点:里斯本,香帕利莫德中心

prompt_64">要避免不明确的prompt技术

不好的举例:

解释提示工程的概念。保持解释简短,只有几句话,不要过于描述。

好的举例:

使用 2-3 句话向高中学生解释提示工程的概念。

关注做了什么,不要关注不做什么

设计提示时的另一个常见技巧是避免说不要做什么,而应该说要做什么。这样(说要做什么)更加的具体,并且聚焦于(有利于模型生成良好回复的)细节上。

提示:
以下是向客户推荐电影的代理程序。不要询问兴趣。不要询问个人信息。
客户:请根据我的兴趣推荐电影。
代理:输出:
当然,我可以根据你的兴趣推荐电影。你想看什么类型的电影?你喜欢动作片、喜剧片、爱情片还是其他类型的电影?

这种输入其实不算一个好的输出,更好的方式是关注输出什么,并对特殊的情况进行预先设定。例如:

提示:
以下是向客户推荐电影的代理程序。代理负责从全球热门电影中推荐电影。它应该避免询问用户的偏好并避免询问个人信息。如果代理没有电影推荐,它应该回答“抱歉,今天找不到电影推荐。”。
```顾客:请根据我的兴趣推荐一部电影。
客服:输出:
抱歉,我没有关于你兴趣的任何信息。不过,这是目前全球热门的电影列表:[电影列表]。希望你能找到喜欢的电影!

角色提示Role Prompting

可以假定身份,假定答案的专业性等等。

提问:
The following is a conversation with an AI research assistant. The assistant answers should be easy to understand even by primary school students.Human: Hello, who are you?
AI: Greeting! I am an AI research assistant. How can I help you today?
Human: Can you tell me about the creation of black holes?
AI: 

提示技术

零样本、少样本都不适合我们的模型。

CoT

在实例中,使用CoT。在回答中,加入零样本CoT,效果会更好?
在这里插入图片描述

生成的知识作为预测的知识库判断的一部分

在这里插入图片描述

Prompting Chaining

之前的输出作为下一个输入的一部分:

提示1:

你是一个很有帮助的助手。你的任务是根据文档回答问题。第一步是从文档中提取与问题相关的引文,由####分隔。请使用<quotes></quotes>输出引文列表。如果没有找到相关引文,请回应“未找到相关引文!”。####
{{文档}}
####

输出1:

<quotes>
- Chain-of-thought (CoT) prompting[27]
- Generated knowledge prompting[37]
- Least-to-most prompting[38]
- Self-consistency decoding[39]
- Complexity-based prompting[41]
- Self-refine[42]
- Tree-of-thought prompting[43]
- Maieutic prompting[45]
- Directional-stimulus prompting[46]
- Textual inversion and embeddings[59]
- Using gradient descent to search for prompts[61][62][63][64]
- Prompt injection[65][66][67]
</quotes>

提示2:

根据从文档中提取的相关引文(由<quotes></quotes>分隔)和原始文档(由####分隔),请构建对问题的回答。请确保答案准确、语气友好且有帮助。####
{{文档}}
####<quotes>
- Chain-of-thought (CoT) prompting[27]
- Generated knowledge prompting[37]
- Least-to-most prompting[38]
- Self-consistency decoding[39]
- Complexity-based prompting[41]
- Self-refine[42]
- Tree-of-thought prompting[43]
- Maieutic prompting[45]
- Directional-stimulus prompting[46]
- Textual inversion and embeddings[59]
- Using gradient descent to search for prompts[61][62][63][64]
- Prompt injection[65][66][67]
</quotes>

输出2:

文档中提到的提示技术包括:1. Chain-of-thought (CoT) prompting[27]
2. Generated knowledge prompting[37]
3. Least-to-most prompting[38]
4. Self-consistency decoding[39]
5. Complexity-based prompting[41]
6. Self-refine[42]
7. Tree-of-thought prompting[43]
8. Maieutic prompting[45]
9. Directional-stimulus prompting[46]
10. Textual inversion and embeddings[59]
11. Using gradient descent to search for prompts[61][62][63][64]
12. Prompt injection[65][66][67]每一种技术都采用独特的策略来增强或明确与大型语言模型的互动,以产生期望的结果。

ToT思维链

在这里插入图片描述

ToT 完成算 24 的游戏任务要执行广度优先搜索(BFS),每步思维的候选项都要求 LM 给出能否得到 24 的评估:“sure/maybe/impossible”(一定能/可能/不可能) 。作者讲到:“目的是得到经过少量向前尝试就可以验证正确(sure)的局部解,基于‘太大/太小’的常识消除那些不可能(impossible)的局部解,其余的局部解作为‘maybe’保留。”每步思维都要抽样得到 3 个评估结果。整个过程如下图所示:

在这里插入图片描述

现在有思维树的提示方式,有论文支持

检索增强RAG

最初的RAG不太行了。现在长文本越来越长了。微软出了一个新的叫做GraphRAG,如果用的上可以再去查一查。

Prompt策略分析

不同的策略影响是非常大的。有进行的测试。

Short nameDescription
Baseline提供一个职位招聘信息并询问它是否适合毕业生。
CoT在查询之前给出几个准确分类的示例。
Zero-CoT要求模型一步步推理后再给出答案。
rawinst通过添加到用户消息中, 来给出有关其角色和任务的说明。
sysinst作为系统消息给出有关其角色和任务的说明。
bothinst将角色作为系统消息和任务作为用户消息拆分说明。
mock通过模拟讨论来给出任务说明,其中模型确认了它们。
reit通过重复强调关键要素来加强说明。
strict要求模型严格按照给定模板回答。
loose要求仅根据给定模板给出最终答案。
right要求模型得出正确的结论。
info提供额外的信息以解决常见的推理失败。
name为模型取一个我们在对话中称呼它的名称。
pos在查询之前向模型提供正面反馈。

提示应用

所有Prompt性能策略对性能的影响

PrecisionRecallF1Template Stickiness
Baseline61.270.665.679%
CoT72.685.178.487%
Zero-CoT75.588.381.465%
+rawinst8092.485.868%
+sysinst77.790.983.869%
+bothinst81.993.987.571%
+bothinst+mock83.395.188.874%
+bothinst+mock+reit83.895.589.375%
+bothinst+mock+reit+strict79.993.786.398%
+bothinst+mock+reit+loose80.594.887.195%
+bothinst+mock+reit+right8495.989.677%
+bothinst+mock+reit+right+info84.996.590.377%
+bothinst+mock+reit+right+info+name85.796.890.979%
+bothinst+mock+reit+right+info+name+pos86.99791.781%

Template stickiness” 指的是模型多频繁地按照所期望的格式作答。

提示函数

这个函数有一个独特的名称,当我们用输入文本调用这个名称时,它根据内部设定的规则产生结果。简而言之,我们构建了一个可重用的提示,它有一个易于与 GPT 交互的名称。这就像有一个方便的工具,让 GPT 代表我们执行特定的任务 - 我们只需提供输入,就可以得到所需的输出。

通过将提示封装成函数,您可以创建一系列函数来建立工作流程。每个函数代表一个特定的步骤或任务,当按特定顺序组合时,它们可以自动化复杂的流程或更高效地解决问题。这种方法使得与 GPT 的交互更加结构化和高效,最终增强了其功能,使其成为完成各种任务的强大工具。

效果:

你好,ChatGPT!希望你一切都好。我正在寻求你的帮助,想要解决一个特定的功能。我知道你有处理信息和执行各种任务的能力,这是基于提供的指示。为了帮助你更容易地理解我的请求,我将使用一个模板来描述函数、输入和对输入的处理方法。请在下面找到详细信息:function_name:[函数名称]
input:[输入]
rule:[关于如何处理输入的说明]我恳请你根据我提供的细节为这个函数提供输出。非常感谢你的帮助。谢谢!我将使用方括号内的相关信息替换函数所需执行的内容。这个详细的介绍应该能够帮助你更高效地理解我的请求并提供所需的输出。格式是function_name(input)。如果你理解了,请用一个词回答"好的"

然后在输入:

function_name: [trans_word]
input: ["文本"]
rule: [我希望你能扮演英文翻译员、拼写纠正员和改进员的角色。我将提供包含任何语言中"文本"的输入形式,你将检测语言,翻译并用英文纠正我的文本,并给出答案。]function_name: [expand_word]
input: ["文本"]
rule: [请充当一个聊天机器人、拼写纠正员和语言增强员。我将提供包含任何语言中的"文本"的输入形式,并输出原始语言。我希望你保持意思不变,但使其更具文学性。]function_name: [fix_english]
input: ["文本"]
rule: [请充当英文专家、拼写纠正员和语言增强员的角色。我将提供包含"文本"的输入形式,我希望你能改进文本的词汇和句子,使其更自然、更优雅。保持意思不变。]除非你不理解该函数,否则请不要说其他事情

接下来进行提问:

trans_word('婆罗摩火山处于享有“千岛之国”美称的印度尼西亚. 多岛之国印尼有4500座之多的火山, 世界著名的十大活火山有三座在这里.')
fix_english('Finally, you can run the function independently or chain them together.')
fix_english(expand_word(trans_word('婆罗摩火山处于享有“千岛之国”美称的印度尼西亚. 多岛之国印尼有4500座之多的火山, 世界著名的十大活火山有三座在这里.')))

输出的结果:

trans_word Output: Mount Bromo is located in Indonesia, known as the “Land of a Thousand Islands”. Indonesia, with its numerous islands, boasts over 4,500 volcanoes, including three of the world’s ten most famous active volcanoes.fix_english Output for ‘Finally, you can run the function independently or chain them together.’: Ultimately, you have the option to execute the function on its own or link multiple functions together in a sequence.fix_english Output for the expanded and translated input: Ultimately, you can choose to execute the function independently or combine them sequentially.

其它内容

还有挺多的内容的,但是暂时用不上了。如果想去的话,可以去https://www.promptingguide.ai/zh学习


http://www.ppmy.cn/embedded/137193.html

相关文章

STM32WB55RG开发(3)----生成 BLE 程序连接手机APP

STM32WB55RG开发----3.生成 BLE 程序连接手机APP 概述硬件准备视频教学样品申请源码下载参考程序选择芯片型号配置时钟源配置时钟树RTC时钟配置RF wakeup时钟配置查看开启STM32_WPAN条件配置HSEM配置IPCC配置RTC启动RF开启蓝牙设置工程信息工程文件设置结果演示 概述 本项目旨…

探索深度学习的本质

深度学习的本质是利用多层&#xff08;深层&#xff09;的神经网络结构来从数据中学习复杂的模式和特征。其主要特点是具有层次结构&#xff0c;能够实现自动特征提取。非线性、可扩展性和迁移学习能力是深度学习能够处理复杂问题和广泛&#xff08;低成本&#xff09;应用的关…

使用ookii-dialogs-wpf在WPF选择文件夹时能输入路径

在进行WPF开发时&#xff0c;System.Windows.Forms.FolderBrowserDialog的选择文件夹功能不支持输入路径&#xff1a; 希望能够获得下图所示的选择文件夹功能&#xff1a; 于是&#xff0c;通过NuGet中安装Ookii.Dialogs.Wpf包&#xff0c;并创建一个简单的工具类&#xff1a; …

计算机毕业设计Python流量检测可视化 DDos攻击流量检测与可视化分析 SDN web渗透测试系统 网络安全 信息安全 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

金价大跌,特朗普胜选或成导火索

黄金光芒不再&#xff0c;美元强势崛起 上周特朗普赢得美国总统选举后&#xff0c;金价出现了大幅下跌。这标志着市场情绪正在发生转变&#xff0c;投资者开始从避险资产转向风险资产。 为何金价会下跌&#xff1f; 美元走强&#xff1a; 特朗普的胜选提振了美元&#xff0c;…

如何使用 Puppeteer 和 Browserless 抓取亚马逊产品数据?

您可以在亚马逊上找到所有有关产品、卖家、评论、评分、特价、新闻等的相关且有价值的信息。无论是卖家进行市场调研还是个人收集数据&#xff0c;使用高质量、便捷且快速的工具将极大地帮助您准确地抓取亚马逊上的各种信息。 为什么抓取亚马逊产品数据很重要&#xff1f; 亚…

渗透利器-kali工具 (第三章-5) sqlmap之sql注入一、二

一&#xff1a;常见的注入方式 1.sqlmap用于Access数据库注入 2.sqlmap用于Cookie注入  --cookie 3.sqlmap用于Post注入  --froms 、--data、抓包 4.sqlmap用于mysql注入 绕过waf脚本测试&#xff1a;--tamper "space2morehash.py" 常见sqlmap使用方法&#xff1…

2024 ECCV | DualDn: 通过可微ISP进行双域去噪

文章标题&#xff1a;《DualDn: Dual-domain Denoising via Differentiable ISP》 论文链接&#xff1a; DualDn 代码链接&#xff1a; DualDnCode 本文收录于2024ECCV&#xff0c;是上海AI Lab、浙江大学、香港中文大学&#xff08;薛天帆等人&#xff09;联合发布的图像降…