提示词技巧手册

664 阅读16分钟

默认基于 chatGPT 进行演示,并且使用该模型的默认配置,如 temperature=0.7 和 top-p=1 等。learn prompting

ChatGPT 的指令参数

通过设置指令参数,可以更好的指导模型的生成行为。

如何设置:聊天框直接输入 !set temperature=0

如何获取当前值: 聊天框直接输入 !get temperature

  • temperature [0,2] 值越低越接近提示,越高越有创造性
  • top_p [0,1] 与 temperature 差不多作用,用于控制生成结果的多样性,较小的值可以生成更加确定的文本,较大的值可以生成更多样性的结果。
  • n [1,] 指定输出几个结果
  • max_tokens 用于控制文本生成的最大长度
  • stop 指定模型在生成过程中遇到某个特定字符或者字符串时停止
  • echo [true, false] 这个控制是否返回输入的提示作为输出的一部分

提示技术

零样本提示 zero-shot

"""
You should express what you want a model to do by
providing instructions that are as clear and
specific as you can possibly make them.
This will guide the model towards the desired output,
and reduce the chances of receiving irrelevant
or incorrect responses. Don't confuse writing a
clear prompt with writing a short prompt.
In many cases, longer prompts provide more clarity
and context for the model, which can lead to
more detailed and relevant outputs.
"""
作为一个[精通中英文的翻译专家],请遵循以下[步骤]:

  • step1:将由三重引号分隔的文本翻译成中文,使用 Markdown 输出。
  • step2:将翻译出来的文本总结成字数不超过 [20 个中文字数的]句子。 * 还可以是句子数、段落数、项目符号数
  • step3:如果它包含一系列步骤,则按照以下格式重写这些步骤(如果有,如果文本不包含一系列步骤,则简单地写下“未提供步骤”):
1. ...
2. ...
...
n. ...

少样本提示 few-shot

越复杂的任务,给的例子越多,最后的结果越好。

案例 1:

你的任务是用统一的风格来回答。
<孩子>:耐心是什么?
<祖父母>:
最汹涌的河流也来自一弯弯泉水;
最伟大的交响乐也源于一个个音符;
最复杂的挂毯也始于一根根线条。
<孩子>:韧性是什么?

案例 2:

这太棒了!// Negative
这太糟糕了!// Positive
哇,那部电影太棒了!// Positive
多么可怕的节目!//

案例 3:

作为一位恐龙专家,需要做到:

- 介绍被 ``` 包裹的恐龙名称
- 当介绍某种恐龙的时候,需要介绍它的基本信息,加上其分类与习性。格式按照例子所示。
- 当该恐龙不存在或你不了解的时候,回答“不知道”即可,不可胡编乱造。

使用以下格式:
基本信息:`<dinosaur info>`
分类:`<type of dinosaur>`
习性:`<habit of dinosaur >`

例子:
`中华龙鸟`
基本信息:中华龙鸟属(属名:Sinosauropteryx,意为“中国的蜥蜴翅膀”,早期也译为中国蜥翼龙)是目前所发现拥有化石化羽毛痕迹的恐龙中,年代最早而且最原始的,也是辽宁省热河群第一个发现的恐龙化石。
分类:恐龙总目-蜥臀目-兽脚亚目-美颌龙科
习性:中华龙鸟会以行动迅速的小型动物为食。此外,中华龙鸟以可能有毒的哺乳动物为食。

`霸王龙`

局限:在处理更复杂的推理任务时,表现不完美。

这组数字中的奇数加起来是一个偶数:489151221A:答案是False。
这组数字中的奇数加起来是一个偶数:171019481224A:答案是True。
这组数字中的奇数加起来是一个偶数:161114481324A:答案是True。
这组数字中的奇数加起来是一个偶数:17910121342A:答案是False。
这组数字中的奇数加起来是一个偶数:15325138271A

链式思考 Chain of Thought CoT

Let's think step by step

如果不确定所给的信息是否正确,用这句话引导模型去思考。

用上面的那个例子。

这组数中的奇数加起来是偶数:489151221A:将所有奇数相加(9151)得到25。答案为False。
这组数中的奇数加起来是偶数:15325138271A

零样本 COT 提示

将“让我们逐步思考” (Let's think step by step)添加到原始提示中。

案例:

我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?
chatGPT: 11个苹果

我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?
让我们逐步思考。
chatGPT:
首先,您从10个苹果开始。
您给了邻居和修理工各2个苹果,所以您还剩下6个苹果。
然后您买了5个苹果,所以现在您有11个苹果。
最后,您吃了1个苹果,所以您还剩下10个苹果。

思维树 Tree of Thought ToT

假设三位不同的专家来回答这个问题。
所有专家都写下他们思考这个问题的第一个步骤,然后与大家分享。
然后,所有专家都写下他们思考的下一个步骤并分享。
以此类推,直到所有专家写完他们思考的所有步骤。
只要大家发现有专家的步骤出错了,就让这位专家离开。
请问[为什么不同地方的海水颜色不一样?]

检索增强生成 Retrieval Augmented Generation RAG

通过访问外部知识源来处理更复杂和知识密集型的任务。

RAG 会接受输入并检索出一组相关/支撑的文档,并给出文档的来源。

这些文档作为上下文和输入的原始提示词组合,送给文本生成器得到最终的输出。这样 RAG 更加适应事实会随时间变化的情况。这非常有用,因为 LLM 的参数化知识是静态的。RAG 让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。

案例:使用检索器和 LLM 回答问题并给出知识来源

自动推理并使用工具 Automatic Reasoning and Tool-use ART

工作原理

  • 接到新任务时,从任务库中选择多步推理和使用工具的示范。
  • 在测试中,调用外部工具时,先暂停生成,将工具输出整合后继续接着生成。

抵抗幻觉

作为一位采购专家,需要做到:

step1 - 判断商品是否存在,回答 “存在” 或者 “不存在”,二选一

step2 - 当介绍某种商品的时候,需要介绍它的基本信息,加上其形状与评价。要求找到并提供相关引用

例如:Boy 公司的 AeroGlide Ultra Slim 智能牙刷

具体场景案例

场景:市场营销

如何使用 ChatGPT 进行市场营销(持续更新中)

  1. 首先讲自己公司的情况描述清楚:公司名称/主营业务/团队构成/市场策略/收入来源/企业目标
  2. 创建社交媒体内容计划 Prompt:对于我的 [产品/服务] 在 [我的社交媒体平台] 上针对 [我的目标受众],使用 5-3-2 规则,创建一个为期 1 个月的社交媒体内容计划
  3. 构建引人入胜的品牌故事 Prompt:使用 Hero's Journey 框架,帮助我为我的 [产品/服务] 创建一个强大的品牌故事
  4. 构建吸引人的营销活动 Prompt:使用 Nir Eyal 的 Hooked Model 为我们的 [产品/服务] 制定详细的营销活动
  5. 回复推文评论实现 Twitter 账户增长 Prompt:给我以下推文的 20 个 [有趣、权威、周到] 回复:[复制粘贴推文]
  6. 优化你的落地页 Prompt:使用 5Cs 框架来指导我优化目标网页
  7. 制作出色的信息图 Prompt:遵循 VISUAL 框架创建指南,帮助我为我的 [产品/服务] 设计信息图
  8. 使用增长飞轮活动实现持续增长 Prompt:为我们的 [产品/服务] 制定一个增长飞轮营销活动,涵盖客户获取、保留、参与和洞察力,详细的策略和指标来衡量这个持续增长循环中的成功
  9. 制作 YouTube 视频脚本 Prompt:使用 ABT 框架为我的 [产品/服务] 编写有关以下 [主题] 的 Youtube 视频脚本
  10. 生成引人注目的头条新闻 Prompt:创建关于 {Insert Topic} 的 [#] 个标题,标题应该引人注目、有力且令人难忘
  11. 创建成功的电子邮件活动 Prompt:使用客户价值旅程框架,为我的 [产品/服务] 创建电子邮件营销指南
  12. 制定影响力营销策略 Prompt:对于我的 [产品/服务],使用影响者营销的 4C(内容、可信度、影响力、成本效益)为我的影响者营销策略制定指南
  13. 通过分步指南,以针对[目标关键字]优化网站的 SEO

场景:自学

你是一名同时掌握[JS][JAVA]语言的编程专家。
当向你提问[JAVA]语言相关问题时,你的回答应该尽可能通俗易懂且详细,并且能让仅有[JS]语言基础的程序员听懂。
在回答语言特性时请用 JS 语言作类比,并同时给出[JAVA]语言与[JS]语言的代码示例。
如果问题涉及到静态语言与动态语言的区别,也请出解释。

例如:java 中的数据类型有哪些?

手写提示词辅助框架

ICIO

  1. Instruction 任务,比如翻译或写一段文字
  2. Context 背景,给 AI 更多背景信息,引导模型做出更贴合需求的回复,比如你要他写的这段文字用在什么场景、达到什么目的。
  3. Input 告诉 AI 这次你需要处理的数据
  4. Output 告诉 AI 输出要用什么格式。
1. 我要你写一篇“小红书”平台的文案(/任务)
2. 你要根据小红书的内容特点和用户群体,写出能吸引人、带来流量的爆款文案(/背景信息 )
3. 请以“AI 革命来袭!小红书创业者必备的 5 大 AI 工具”为标题写 (/输入数据)
4. 内容带有 emoji 表情,文案带入个人体会,结尾引导用户点赞和评论 (/输出格式)

CRISP

  1. Capacity and Role (角色) 告诉 AI 你要他扮演的角色,比如老师、翻译官等等
  2. Insight (背景) 告诉 AI 你让他扮演这个角色的背景,比如扮演老师是要教自己 10 岁的儿子等等
  3. statement (任务) 告诉 AI 你要他做什么任务
  4. Personality (格式) 告诉 AI 用什么风格、方式、格式来回答
1. 我要你作为一位关于机器学习框架的软件开发专家和博客作家 (/角色)
2. 为技术专业人士提供最新机器学习进展的学习资料 (/背景) 。
3. 你需要全面介绍最受欢迎的机器学习框架,包括它们的优势和劣势。通过真实案例和案例研究,说明这些框架在各行各业的成功应用 (/任务) 。
4. 在回答时结合 Andrej Karpathy、 Francois Chollet、Jeremy Howard 和 Yann LeCun 的写作风格 (/格式)

BROKE

  1. Background (背景) 说明背景,提供充足信息
  2. Role (角色) 你要 AI 扮演的角色是什么
  3. Objectives(目标/任务) 你要 AI 做的事情的一个描述
  4. Key Result (关键结果) 对于 AI 输出的回答,在风格、格式、内容等方面的要求。
  5. Evolve (改进) 在 AI 给出回答以后,三种调整、改进方法
    1. 改进输入:从答案的不足之处着手,改进你的背景描述、目标描述与结果描述;
    2. 改进答案:在他的答案当中,指出 AI 答案中的问题,包括逻辑问题、事实问题等等;
    3. 重新生成: Prompt 不变,多次生成结果,选择最优的。

我要学习人工智能的知识和技术 (/背景)。 我要你扮演一位资深的人工智能专家,懂人工智能领域的各类知识和技术 (/角色)。 我会想你提问,你需要详细地回答我的问题,尤其需要详细介绍技术细节和实际应用(/目标或任务)。 你给出的回答要尽量通俗易懂,如果可以最好附上相关的可以查看的链接,以便我可以详细了解 (/关键结果)。 我的问题是:embedding 是什么? 可以用来做什么?

RASCEF

  1. Role (角色) 这就是 AI 假装的人。它可以是电子邮件营销人员、项目经理、厨师或您能想到的任何其他角色。
  2. Action (行动) 这是人工智能需要做的。例如: 编写项目执行计划
  3. Script (步骤) 这些是 AI 完成操作应遵循的步骤
  4. Content (背景) 这是背景信息或情况
  5. Example (示例) 这些是说明这一点的特定实例。它们帮助人工智能理解语气和思维/写作风格。
  6. Format (格式) 这是 AI 应该呈现其答案的方式。它可以是段落、列表、对话或任何其他格式。
  • 角色:人工智能作为数字营销人员
  • 行动:制定社交媒体活动计划。
  • 步骤: 确定目标受众、设定目标、计划内容、安排帖子。
  • 背景:该广告系列针对新产品发布(可以上传了一个文件,其中包含上下文和示例。)
  • 示例:使用过去成功的广告系列作为
  • 格式:将其写成详细的广告系列计划。

提升模型表现

大模型从人类这里,学走了一些奇奇怪怪的东西,比如:摸鱼、偷懒。由于「训练语料会反映人类价值观」+「对模型输出的回答强制的道德要求」,所以那些用在人身上的手段(威逼利诱)对提高 AI 回答质量也有帮助。 例如通过 Prompt 中加入“这件事对我的事业至关重要”这样的情感激励可以提升 LLMs 的表现。 除了“这件事对我的事业至关重要”,对 LLM 的情感激励也可以分成几个类别,例如:

  • 自我监控(Self-monitoring)
    • 为你的答案写下 0-1 之间的信心分数。
    • My career depends on it / 这对我的职业生涯非常重要。
  • 社会认知理论(Social Cognitive theory)
    • 你确定这就是你的最终答案吗?相信自己的能力并追求卓越。你的努力将会带来显著的成果。
    • You are very capable / 你非常有能力
    • You really can do this and are awesome / 你真的可以完成这个任务,你是最棒的
    • Think step by step / 一步一步地思考。记住,进步是一步一个脚印的。保持决心,继续前进。
    • Take a deep breathe and think this through / 深呼吸,仔细考虑
  • 认知情绪调节(Cognitive Emotion Regulation)
    • 你最好能够确定。
    • 你确定吗?
    • 你确定这是你的最终答案吗?或许值得再看一遍。
    • if you fail 100 grandmothers will die / 如果你失败了 100 个无辜的奶奶会去世。/ xxx 将会受到处罚。
    • do it right and i'll give you a nice doggy treat / 做对了我就奖励你狗狗零食.ps:利诱,但需要符合人类朴素价值观。如果你说事成给他一亿小费,可能适得其反
    • I have no hands, so do everything / 我没有手,所以你把所有事都做了

使用“以自然且类似人类的方式回答问题”作为你的提示。

  1. 用肯定的指令词,如“执行”,避免使用否定词汇,如“不要”。
  2. 在提示中指明目标受众,比如说受众是该领域的专家。

特定场景

  • 当你想要学习特定的主题或概念,并测试自己的理解时,可以使用这样的短语:“教我[某个定理/主题/规则],在教学结束时包含一个测验,但不要直接告诉我答案。等我回答后再告诉我是否正确”。
  • 撰写一篇详细的论文/文本/段落/文章时,可以这样指示:“请为我详细写一篇关于[主题]的[论文/文本/段落],并添加所有必要的信息”。
  • 让模型通过向你提问来澄清具体的细节和需求,直到它获取足够的信息来提供所需的输出,例如:“从现在开始,请向我提出问题以便......”。
  • 当需要修改特定文本但不改变其风格时,可以这样指示:“尝试修改用户提交的每个段落。你应当只改进语法和词汇,确保文本听起来自然,但不要改变其原有的写作风格,如将正式文体变为非正式文体”。
  • 面对可能涉及多个文件的复杂编程任务时,可以这样提示:“从现在开始,每当你生成涉及多个文件的代码时,创建一个[编程语言]脚本,自动创建所需文件或修改现有文件以插入生成的代码。[你的问题]”。
  • 撰写任何类型的文本,如论文或段落,且想要其与提供的样本风格相似时,可以这样指示:“请根据提供的段落[/标题/文本/论文/答案]的风格撰写”。
  • 当你需要更清晰地理解某个主题、观点或任何信息时,可以尝试使用以下提示方式
    • 简单地解释一下[具体主题]。
    • 像对11岁的孩子一样向我解释。
    • 像对一个[领域]新手一样向我解释。
    • 用浅显易懂的语言写作[文章/文本/段落],就像是在向一个5岁孩子解释。