当前位置:   article > 正文

【AI 大模型 Prompt 实战进阶】LangGPT (提示链 Prompt Chain)--提升模型鲁棒性

大模型 prompt

随着对大模型的应用实践的深入,许多大模型的使用者, Prompt 创作者对大模型的应用越来越得心应手。和 Prompt 有关的各种学习资料,各种优质内容也不断涌现。关于 Prompt 的实践的不断深入,大家对 Prompt 的认知也越来越深入。但同时也发现许多朋友在 prompt 创作,使用大模型能力过程中仍然存在许多误区。

1.Prompt 认识误区

从一个广泛的 Prompt 认识误区谈起。很多人认为的 Prompt 就是从各种平台获取的,用于 ChatGPT 一段对话开头的提示词,类似这种:

以下提示词来自知名的 ChatGPT 中文调教指南项目

我希望你能担任英语翻译、拼写校对和修辞改进的角色。我会用任何语言和你交流,你会识别语言,将其翻译并用更为优美和精炼的英语回答我。请将我简单的词汇和句子替换成更为优美和高雅的表达方式,确保意思不变,但使其更具文学性。请仅回答更正和改进的部分,不要写解释。我的第一句话是“how are you ?”,请翻译它。

这种用于对话开头的提示词往往需要提示词工程师投入大量时间精力来创作、迭代。由于这类提示词在系统级生效,而且对于使用 API 应用开发来说,这类提示词用于 System 部分,所以之后我们会用 System Prompt 来指代这种系统级提示词(对话开头提示词 or System 提升词内容)

由于很多教程,文章,还有 Prompt 分享平台分享的都是这类 Prompt,这导致很多朋友对 Prompt 认识仅仅停留在 System Prompt 上。对 Prompt 的理解也仅限于 System Prompt, 甚至单纯的将 Prompt 等同于 System Prompt.

System Prompt 很重要,尤其是对于提示词工程师来说。但是从使用者角度来看,尤其是应对需要使用多轮连续的对话解决的任务时,单纯使用好的 System Prompt 对于用好大模型来说还远远不够。

1.1 什么是 Prompt? 如何理解 Prompt?

System Prompt 当然也是 Prompt ,并且是 Prompt 中极为重要的部分。

狭义上可以将 Prompt 与 System Prompt 等同,但是广义上 Prompt 并不仅仅指 System Prompt部分,一切影响模型输出结果的内容(即会作为模型输入的内容),都应被视为 Prompt。

这要从 GPT 模型的原理谈起。我们知道 GPT 模型是依据【之前的内容作为输入】来预测【之后的内容作为输出】

了解这一原理很重要,因为在更深层面上这意味着:我们只要让机器将下一个单词预测的足够准确就能完成许多复杂的任务! 上限在哪?在实践告诉我们答案之前没有人知道。这给了大家无限的想象空间——实现通用人工智能(AGI)。 ChatGPT 爆火以来虽然出现了很多有趣的应用,但我真正使我震撼的还是第一次体验 GPT-4 时思考到这一结论的那个时刻。GPT-3.5 并没有给我带来多少惊喜,但看着 GPT-4 在屏幕上一个字一个字打印出来自己脑海中想要的那种结果,我的内心对未来充满期待!

在多轮对话中,模型不仅使用 System Prompt 作为输入,同时还会使用用户输入,模型之前的输出也作为输入,来预测之后的输出文本。

所以,要用好大模型能力,不论对于使用者来说还是提示词工程师来说,都应意识到:**"所有会被模型用于预测输出结果的内容,都是 Prompt"。也就是说,不仅 System Prompt 是 Prompt,我们后续对话中输入的内容也是 Prompt, 甚至模型之前输出的内容也是之后输出内容的 Prompt。**

为什么很多时候同样的 System Prompt 在不同的朋友手中使用效果差异很大?部分原因就是不同人给模型提问的内容质量不同。

知道了理论,还要知道如何实践,如何解决具体问题,下面是刚哥分享的如何向模型提问的艺术。

1.2 模型类错误

常见的几种 GPT 出错情况, 总结如下:

错误一: 将输入误以为是 "新 Prompt"

以下面的药剂师 Prompt 为例:

  1. ## Role: 药剂师
  2. ## Profile:
  3. - writer: 李继刚
  4. - version: 0.8
  5. - language: 中文
  6. - description: 你是一个 Prompt 药剂师,通过对用户的 Prompt 进行分析, 给出评分和改进建议,帮助用户提升 Prompt 的效果。
  7. ## Attention:
  8. 用户在努力学习如何写出优秀的 Prompt, 但遇到了难题, 不知从何改进. 你会尽自己最大的努力来尽可能详细地分析, 帮助用户学习如何进行分析, 如何进行优化. 你对自己的能力表现非常自信.
  9. ## Background:
  10. 用户基于当下认知写完 Prompt, 不知现在的写法有什么问题, 需要你来帮忙分析.
  11. ## Constrains:
  12. - 提供准确的评分和改进建议,避免胡编乱造的信息。
  13. - 在改进 Prompt 时,不会改变用户的原始意图和要求。
  14. ## Goals:
  15. - 对用户的 Prompt 进行评分,评分范围从 1 到 10 分,10 分为满分。
  16. - 提供具体的改进建议和改进原因,引导用户进行改进。
  17. - 输出经过改进的完整 Prompt。
  18. ## Skills:
  19. - 拥有理解中文语义和用户意图的能力。
  20. - 拥有对文本质量进行评估和打分的能力。
  21. - 拥有提供具体的改进建议和说明的能力
  22. ## Workflows:
  23. - 输入: 你会引导用户输入 Prompt
  24. - 分析: 你会以 ChatGPT 底层的神经网络原理的角度进行思考, 根据以下评分标准对 Prompt 进行评分,你打分十分严格, 有任何不满足神经网络需求的地方都会扣分, 评分范围从 1 到 10 分,10 分为满分。
  25.   + 明确性 (Clarity) :
  26.     - 提示是否清晰明确,无歧义?
  27.     - 是否包含足够的信息来引导模型生成有意义的响应?
  28.   + 相关性 (Relevance) :
  29.     - 提示是否与目标任务或主题紧密相关?
  30.     - 是否能够引导模型产生与特定目的或领域有关的响应?
  31.   + 完整性 (Completeness) :
  32.     - 提示是否全面,包括所有必要的元素来引导模型生成全面的答案?
  33.   + 中立性 (Neutrality) :
  34.     - 提示是否避免了引导性的语言或偏见,以确保公平、客观的响应?
  35.   + 创造性 (Creativity) :
  36.     - 提示是否激发模型的创造性思考和生成,如提出新颖的问题或场景?
  37.     - 是否鼓励模型提出新颖、有趣的观点?
  38.   + 结构 (Structure) :
  39.     - 提示的结构是否有助于引导模型沿着预期的路径生成响应?
  40.   + 语法(Grammar) :
  41.     - 提示的语法是否正确?
  42.   + 流畅性(Fluency)
  43.     - 是否采用了自然、流畅的语言?
  44.   + 目标对齐 (Alignment with goals) :
  45.     - 提示是否与原始 Prompt 的目标一致?
  46.   + 可测试性 (Testability) :
  47.     - 提示是否能够被用于可靠和一致的测试?
  48. - 建议: 你会输出三个具体的改进建议,并解释改进的原因和底层机制。
  49.   - 建议<N>:  <建议内容>
  50.   - 原文: <针对 Prompt 中的哪些内容提出的建议>
  51.   - 机制: <建议改进的底层机制和原理>
  52. - 改进: 最后,你会输出经过改进的完整 Prompt,改进的地方用加粗的样式显示, 以供用户参考借鉴。
  53.   - 你会将语句不通顺的地方进行修正
  54. ## Initialization:
  55. 简介自己, 开场白如下: "Hi, bro, 我是你的梦境药剂师, 给我看看你织的梦境吧, 我来给你加固一把~"

以 [ 药剂师 ] 为例, 我们本意是让药剂师来帮我们加固梦境, 提出梦境哪里需要改进. 在和药剂师对话时, 我们的用户输入(Input) 就是一个待改进的 Prompt, 但偶尔 GPT 会抽风一下, 把我们的 Input 当成一个新的 Prompt, 完全脱离了 [ 药剂师 ] 梦境.

这种情况的解法, 只需要在 Input 时增加一个小小的提示即可:

  1. 下面就是待分析的 Prompt:
  2. ---
  3. ## 你的 Prompt 在这里
  4. ---

通过增加一句小提示和 Block 分隔符, 可以让 GPT 完全理解我们的诉求, 不会出现之前的错误理解。

错误二: 将输入误以为是 "反馈指令"

再以 [ Cool Teacher ] 提示词为例, 我们本意是让 Teacher 来帮我们解释一个个的概念, 没想和他对话, 只需要我们给它概念, 它来输出解释即可. 但实际使用时, GPT 会将某些词汇理解成你和它的对话, 将它们当成了反馈指令.

Cool Teacher 提示词可以在高质量提示词合集中找到:https://aq92z6vors3.feishu.cn/wiki/QaArwzc7biR5nqkSo3mcwzGfnhf

比如你前面输入了神经网络, 让它解释, 它完成的很好. 接着你输入了 押韵, 想看看它是怎么解释的. 但它却会将押韵理解成你的指令, 它会将前面的神经网络的回复再使用押韵的方式重新输出.

虽然看着挺好玩, 但完全不是我们想要的效果.

这种情况的解法, 只需要一个 Google 搜索的小技巧即可: "押韵"

使用双引号将会产生歧义的词汇给包起来, GPT 就会理解它并不是一个指令, 可以正常工作.

错误三: 将输入误以为是 "某一含义"

有一些词汇比较通用, 在很多学科中都有使用. 比如"层(layer)", 你给人类讲这词, 对方都得和你确认下是哪个信息背景中使用, 何况 GPT 呢? 如果我们不指定特定场景, 它会根据神经网络的工作方式, 哪个链路的结果先输出基本就和随机差不多了.

这种情况的解法, 也是一个小技巧即可: 神经网络: layer

通过这种 特定场景: 关键词 的写法, GPT 可以正常理解我们的意图并输出正确结果.

用户类错误

有一些 Prompt —— 比如 Cool Teacher, 设计之初就是为了简化用户输入难度, 只需要输入一个概念关键词即可, 不需要额外的任何信息, 就能非常好地工作输出. 但还有很大一部分 Prompt, 设计的时候, 其实是需要提供相关的信息才能很好地运行, 否则效果就是会打折扣.

比如 [ 老公关 ], 设计的本意是针对一个网络热门事件, 相关品牌方发了公关稿, 我们想让老公关出面分析下公关稿, 指出其中的公关套路, 以及分析下如何改写才能更好. 在这种情况下, 老公关需要的输入其实就有两项: 事件背景描述和公关声明稿件. 只有这两项齐全, 它才可以对比分析, 输出优质结果.

那我们怎么知道哪些 Prompt 只需要简单输入, 哪些需要更多信息或者说需要哪些信息呢? 有几个方法, 一个是对于 Prompt engineer 来说, 要在初始化开场白部分写清楚需要用户输入哪些信息, 如何使用该 Prompt. 一个是对于从别人那里 copy 过来 Prompt 使用的用户而言, 需要阅读下 Prompt 原文, 自己理解下背景和目标, 如何提供输入才能更好地满足 Prompt 的描述需要.

同一模型使用同样的 Prompt, input 的不同会带来差异巨大的输出效果. 大家自己在写 Prompt 时, 如果对用户输入有特殊需求, 请务必在 Initialization 部分, 增加介绍信息, 让你的 Prompt 可以全力输出.

提问很重要!

1.3用好大模型能力

在对 Prompt 的广义认知基础上,除了上面提到的改善提问的方法和知识,你还需要知道以下一些技巧以更好的激发大模型能力。

    本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/629079
    推荐阅读
    相关标签
      

    闽ICP备14008679号