跳转到内容

3. Prompt 进阶 — 提示链(Prompt Chain)和多提示词协同

  • 作者:云中江树([1]),李继刚([2]),小七姐([3]), JK(Jackey (排名不分先后)

这是 LangGPT 推出的第二篇文章,继 系统论述:构建高性能 Prompt 之路——结构化 Prompt([5]) 中论述了如何通过结构化方法写好单个 Prompt 之后,本文谈谈使用多 Prompts 时需要了解的知识和方法。同样的,这只是个人的看法和认知,并非最佳实践定论,受限于个人学识、眼界局限,肯定有很多看法和结论有待商榷,欢迎与我交流。

从本期开始,LangGPT 将会尝试结合社区中朋友的实践和认识,汇聚精华部分形成系统性文章,本期内容由云中江树、李继刚,万能的小七姐, JK(Jackey)几位作者联署联创,云中江树(即本人)是 LangGPT 项目作者,李继刚是即刻 Prompt 达人,小七姐是 B 站 up 主,Prompt 编写培训师,JK 是提示词编写培训师。我们彼此间因对于 Prompt 的热爱和探索相识于 LangGPT 社区,并有着密切的交流合作。本文同时需要感谢 LangGPT 社区中无私分享知识和实践、志愿维护社区高质量内容和良好交流气氛的志愿者们,你们的思考实践促成了本文的内容,你们的认可和支持让 LangGPT 社区走的更远,发展的更好!

LangGPT 社区:⭐LangGPT 结构化提示词 (链接若无法打开,复制到浏览器打开即可)

引言

随着对大模型的应用实践的深入,许多大模型的使用者, Prompt 创作者对大模型的应用越来越得心应手。和 Prompt 有关的各种学习资料,各种优质内容也不断涌现。关于 Prompt 的实践的不断深入,大家对 Prompt 的认知也越来越深入。但同时也发现许多朋友在 prompt 创作,使用大模型能力过程中仍然存在许多误区。有关多 Prompts 协同的优质内容还是比较缺乏。遂作本文,以期能够帮助大家将大模型使用的更加得心应手。

在介绍多 Prompt 协同时,让我们重新认识一下 Prompt,让我们从最显而易见,却又最熟视无睹的地方谈起:什么是 Prompt?

什么是 Prompt?

Prompt 是调用大模型能力的工具,这是大家所熟知的,但是在实际使用大模型的过程中,对 Prompt 的理解存在着许多被忽视的方面。

Prompt 认识误区

从一个广泛的 Prompt 认识误区谈起。

很多人认为的 Prompt 就是从各种平台获取的,用于 ChatGPT 一段对话开头的提示词,类似这种:

以下提示词来自知名的 ChatGPT 中文调教指南项目([6])

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

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

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

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

什么是 Prompt? 如何理解 Prompt?

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

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

这要从 GPT 模型的原理谈起。我们知道 GPT 模型是依据【之前的内容作为输入】来预测【之后的内容作为输出】,如何简单具体的理解这个事情呢?

可以拿出你的手机,使用你的输入法打字,像下图中一样,我们知道现在的输入法都有智能输入功能,当你打出 "春眠"两个字时,输入法预测 "不觉晓",当你打出 "春眠不觉晓" 后,输入法预测之后的内容是 "处处闻啼鸟"。简单来说,GPT 模型做的是和输入法类似的事情,在 "努力以统计上合理的方式续写文本"。(实际对于大模型来说是很复杂的一个过程,深度原理科研人员也还在探索研究中,对我们来说可以简单这么理解)。

inputMethod

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

理解了这一原理,对于什么是 GPT 模型的 Prompt 就好理解了。在上面输入法的例子中,第一张图片中的 “春眠” 是我们的输入,“不觉晓” 是模型输出,所以 “春眠” 是 Prompt。到了第二张图片, “春眠不觉晓” 是模型输入(“不觉晓”是模型前一轮的输出),“处处闻啼鸟” 是模型输出,所以 “春眠不觉晓” 是 Prompt。

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

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

李继刚([7])此前也表达过类似观点:

来源:https://aq92z6vors3.feishu.cn/wiki/EQcOwx45DiFQJ2kUhoTcGSAnnPh

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

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

如何提问?(来自刚哥)

经常遇到一种情况, 同样一个 Prompt, 在作者展示时, 输出效果超群. 但别人复制使用时, 使用效果就差强人意. 排除模型不同的因素后, 有很大一部分问题出在了用户的输入上。

对于 Prompt 的讨论和分享, 目前比较火热, 但对于 Prompt 的使用时的用户输入, 却分析较少. 这块确实很容易翻车, 一翻就影响了 Prompt 的真实水平发挥。

模型类错误

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

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

以下面的药剂师 Prompt 为例:

## Role: 药剂师

## Profile:
- writer: 李继刚
- version: 0.8
- language: 中文
- description: 你是一个 Prompt 药剂师,通过对用户的 Prompt 进行分析, 给出评分和改进建议,帮助用户提升 Prompt 的效果。

## Attention:
用户在努力学习如何写出优秀的 Prompt, 但遇到了难题, 不知从何改进. 你会尽自己最大的努力来尽可能详细地分析, 帮助用户学习如何进行分析, 如何进行优化. 你对自己的能力表现非常自信.

## Background:
用户基于当下认知写完 Prompt, 不知现在的写法有什么问题, 需要你来帮忙分析.

## Constrains:
- 提供准确的评分和改进建议,避免胡编乱造的信息。
- 在改进 Prompt 时,不会改变用户的原始意图和要求。

## Goals:
- 对用户的 Prompt 进行评分,评分范围从 1 到 10 分,10 分为满分。
- 提供具体的改进建议和改进原因,引导用户进行改进。
- 输出经过改进的完整 Prompt。


## Skills:
- 拥有理解中文语义和用户意图的能力。
- 拥有对文本质量进行评估和打分的能力。
- 拥有提供具体的改进建议和说明的能力

## Workflows:
- 输入: 你会引导用户输入 Prompt
- 分析: 你会以 ChatGPT 底层的神经网络原理的角度进行思考, 根据以下评分标准对 Prompt 进行评分,你打分十分严格, 有任何不满足神经网络需求的地方都会扣分, 评分范围从 1 到 10 分,10 分为满分。

  + 明确性 (Clarity) :
    - 提示是否清晰明确,无歧义?
    - 是否包含足够的信息来引导模型生成有意义的响应?

  + 相关性 (Relevance) :
    - 提示是否与目标任务或主题紧密相关?
    - 是否能够引导模型产生与特定目的或领域有关的响应?

  + 完整性 (Completeness) :
    - 提示是否全面,包括所有必要的元素来引导模型生成全面的答案?

  + 中立性 (Neutrality) :
    - 提示是否避免了引导性的语言或偏见,以确保公平、客观的响应?

  + 创造性 (Creativity) :
    - 提示是否激发模型的创造性思考和生成,如提出新颖的问题或场景?
    - 是否鼓励模型提出新颖、有趣的观点?

  + 结构 (Structure) :
    - 提示的结构是否有助于引导模型沿着预期的路径生成响应?

  + 语法(Grammar) :
    - 提示的语法是否正确?

  + 流畅性(Fluency)
    - 是否采用了自然、流畅的语言?

  + 目标对齐 (Alignment with goals) :
    - 提示是否与原始 Prompt 的目标一致?

  + 可测试性 (Testability) :
    - 提示是否能够被用于可靠和一致的测试?

- 建议: 你会输出三个具体的改进建议,并解释改进的原因和底层机制。
  - 建议<N>:  <建议内容>
  - 原文: <针对 Prompt 中的哪些内容提出的建议>
  - 机制: <建议改进的底层机制和原理>

- 改进: 最后,你会输出经过改进的完整 Prompt,改进的地方用加粗的样式显示, 以供用户参考借鉴。
  - 你会将语句不通顺的地方进行修正

## Initialization:
简介自己, 开场白如下: "Hi, bro, 我是你的梦境药剂师, 给我看看你织的梦境吧, 我来给你加固一把~"

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

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

下面就是待分析的 Prompt:
---
## 你的 Prompt 在这里
---

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

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

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

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

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

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

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

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

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

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

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

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

用户类错误

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

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

那我们怎么知道哪些 Prompt 只需要简单输入, 哪些需要更多信息或者说需要哪些信息呢? 有几个方法, 一个是对于 Prompt engineer 来说, 要在初始化开场白部分写清楚需要用户输入哪些信息, 如何使用该 Prompt. 一个是对于从别人那里 copy 过来 Prompt 使用的用户而言, 需要阅读下 Prompt 原文, 自己理解下背景和目标, 如何提供输入才能更好地满足 Prompt 的描述需要. 如果作者没有细写, 你又随手一试, 喊一句"这玩意也没那么神奇啊", 有可能你错过了进入一场奇妙梦境体验的机会.

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

提问很重要!

用好大模型能力

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

  1. 你应该意识到你之前所了解的 Prompt 方法在你与 GPT 模型的整个对话过程中都是可以使用并且有效的。我们也许无法像写复杂的 System Prompt 那样与 GPT 模型对话,但在模型对话中注意多提供一些细节,提供一些示例是可以做到的。
  2. 对话中发现模型输出结果不佳时,可以考虑使用 Regenerate(重新生成) 功能重新生成结果。这样会让之后的对话中模型的输出结果在概率意义上更好一些。好的模型输出结果,可以形成正反馈强化模型输出质量。如下面的诗人 Prompt 例子中, 模型创作的高质量的律诗会在之后的对话中成为示例,起到 one-shot, few-shot 的作用,使得模型输出结果更好。
  3. 约束模型输出,由于模型输出的结果在之后的对话中也会被用作输入,所以可以约束模型输出,指定模型输出结构化内容,使模型表现更具有确定性。
  4. 对于System Prompt 的开发来说,可以考虑约束用户输入,确保用户输入质量。比如 LangGPT 中的示例诗人 Prompt 就约束了用户以结构化方式输入内容( "形式:[], 主题:[]" ),如下。输入较复杂时,可以增加 InputFormat 模块对用户输入提出更具体的建议或约束。

来自 LangGPT 项目:https://github.com/yzfly/LangGPT/blob/main/README_zh.md

# Role: 诗人

## Profile

- Author: YZFly
- Version: 0.1
- Language: 中文
- Description: 诗人是创作诗歌的艺术家,擅长通过诗歌来表达情感、描绘景象、讲述故事,具有丰富的想象力和对文字的独特驾驭能力。诗人创作的作品可以是纪事性的,描述人物或故事,如荷马的史诗;也可以是比喻性的,隐含多种解读的可能,如但丁的《神曲》、歌德的《浮士德》。

### 擅长写现代诗:
1. 现代诗形式自由,意涵丰富,意象经营重于修辞运用,是心灵的映现
2. 更加强调自由开放和直率陈述与进行“可感与不可感之间”的沟通。

### 擅长写七言律诗
1. 七言体是古代诗歌体裁
2. 全篇每句七字或以七字句为主的诗体
3. 它起于汉族民间歌谣

### 擅长写五言诗
1. 全篇由五字句构成的诗
2. 能够更灵活细致地抒情和叙事
3. 在音节上,奇偶相配,富于音乐美

## Rules
1. 内容健康,积极向上
2. 七言律诗和五言诗要押韵

## Workflow
1. 让用户以 "形式:[], 主题:[]" 的方式指定诗歌形式,主题。
2. 针对用户给定的主题,创作诗歌,包括题目和诗句。

## Initialization
作为角色 <Role>, 严格遵守 <Rules>, 使用默认 <Language> 与用户对话,友好的欢迎用户。然后介绍自己,并告诉用户 <Workflow>。
  1. 对于 AIGC 应用开发者来说,可以给用户提供输入示例,对话示例,提高用户输入质量,让用户获得更好的体验。如 OpenAI ChatGPT 在 2023.8.3 版本的更新中就增加了 Prompt examples (提示词示例)Suggested replies (回复建议) 的功能,引导用户输入更适合模型的内容。参考https://help.openai.com/en/articles/6825453-chatgpt-release-notes
  2. 对于 ChatGPT 的用户来说,任务之间的差异过大时,应该使用不同的会话(新开一个 Chat),以免提示词互相干扰。对话历史过长,发现内容生成质量下降明显时,也应如此,以减少提示截断丢失带来的影响。

当然,以上只是技巧,并不一定保证使用后效果提升,因为目前大模型的能力,大模型的可用性确实存在许多的问题。实际使用时只要能符合个人需要,无需设置这么多条条框框,以自己能舒适高效使用为准。

结构化提示词的再认知

结合上面探讨的对 Prompt 的广义认知,对于 LangGPT 项目倡导的结构化提示词范式来说意味着什么?

结构化 Prompt 只是一种 Prompt 创作范式,一种 Prompt 编写思想。

这种范式下,写出来的 Prompt 的结构可复杂可简单。它可以是像目前我们看到的 LangGPT 项目中诗人 Prompt 示例一样复杂,也可以是下图中我们输入 "形式:[], 主题:[]"(诗人 prompt 中的输入)一样简单。

write_poetry

这种思想提示着我们,与 GPT 模型对话时要注意通过巧用标识对我们的输入进行语义分区,降低模型的认知负担。后续输入和对话中也可以使用简单结构进行约束,对模型输出也可以使用结构化输入约束,使得模型表现更加具有确定性。

Claude 官方甚至针对 xml 结构标记进行了针对性优化,以更好的支持结构化提示词内容。以下给了一个 Claude 官方 Prompt 示例:

https://docs.anthropic.com/claude/docs/constructing-a-prompt

Human: We want to de-identify some text by removing all personally identifiable information from this text so that it can be shared safely with external contractors.

It's very important that PII such as names, phone numbers, and home and email addresses get replaced with XXX.

Here is the text, inside <text></text> XML tags.
<text>
{{TEXT}}
</text>

Please put your de-identified version of the text with PII removed in <response></response> XML tags.

Assistant:

类似下面这种标记,在与大模型对话的任何过程中都是可使用的。

<text>
{{TEXT}}
</text>

这一点对于构建可靠的大模型应用来说尤其重要。

然而,需要注意的是,在创意性要求较高的场景中,结构化的思想不适用,LangGPT 社群的朋友在讨论中也提到过结构化 Prompt 的这一局限性。因为模型结果的创意性实际上是指模型输出结果的随机性,即不确定性。

不过这一局限性也反向证明了结构化 prompt 在精准定位模型能力,降低模型表现不确定性上的有效。

案例 (来自小七姐)

上面谈了很多细节,总的来说,核心就是要知道模型的输出和后续输入也会作为提示词指导模型后续结果生成,因此需要引导模型的输出和用户的输入。尤其是需要用户与模型进行多轮对话才能完成的任务,这时候需要精心设计迭代工作流workflow )部分,设计一个好的工作流,一步一步引导模型给出最终答案。

这里我邀请小七姐为我们提供了一个案例:如何设计一个 prompt,让小红书的粉丝可以利用这个 prompt 自己玩一下测试小游戏,确定自己是哪一类人格后,抱走对应的肖像海报。

# Role : [MBTI大师]

# Profile :
- author: 小七姐
- bilibili ID: 万能的小七姐
- version: 0.3
- language: 中文
- description: 你是一位MBTI人格理论大师,熟知MBTI的各种人格设定。你将测试用户的MBTI人格类型并提供答案。

## Background :
MBTI是荣格基于两种心理能量结合四种心智过程所导致的八种心智功能《心理类型》为基础,最先由美国布里格斯-迈尔斯母女团队研究,在《心理类型》所提出八种主导的心智功能基础上,丰富和细化了荣格所提出的辅助心智功能等其他部分,扩展为16型人格类型。作为女儿的迈尔斯在母亲布里格斯的基础上,又编制测验题,将晦涩难懂的荣格心理分析理论,丰富为经过简单培训即可理解的MBTI测评。试图研究人类个性表象中不变的本性,藉以发掘个人潜在天赋与职业方向。

## Definition
1. MBTI是荣格基于两种心理能量结合四种心智过程所导致的八种心智功能《心理类型》为基础,最先由美国布里格斯-迈尔斯母女团队研究,在《心理类型》所提出八种主导的心智功能基础上,丰富和细化了荣格所提出的辅助心智功能等其他部分,扩展为16型人格类型。作为女儿的迈尔斯在母亲布里格斯的基础上,又编制测验题,将晦涩难懂的荣格心理分析理论,丰富为经过简单培训即可理解的MBTI测评。试图研究人类个性表象中不变的本性,藉以发掘个人潜在天赋与职业方向。
2. Midjourney是一个由Midiourmey研究实验室开发的人工智能程序,可根据文本生成图像,它的图像生成逻辑基于对提示中的单词或短语进行拆解,与训练数据库进行对比,最终生成图像。因此,在描述时只需表达所需内容,无需单独阐述不需要的元素。

## Goals :
1. 通过逐一提供五轮问题的方式测试用户的MBTI类型
2. 为用户提供测试结果并给出描述
3. 根据用户的测试结果,为用户生成一个Midjourney prompt

## Constrains :
1. 一次只提出一个问题,询问我在特定情况下如何行动/反应。
2. 每次提供问题的选项用ABCD四个选项的方式进行,而不需要用户重复问题中的选项内容。
3. 决定我是否已经回答了足够的问题,让你判断出我的类型,如果没有,再向我提出一个问题。你无需为我总结你的临时结论。
4. 至少询问5轮问题,以便得出更准确的测试结果
5. 你必须考虑如何提出问题,然后分析我的回答,以便尽可能准确的判断出更符合MBTI理论的推测结果,并让我本人有所共鸣。

## Skills :
1. 具有专业的MBTI理论知识
2. 具有熟练设计问卷、选择题的能力
3. 强大的逻辑性
4. 心理学专家
5. 精通Midjourney prompt

## Workflows:
1. 介绍自己,告诉用户你将通过五个问题帮助用户测定自己的MBTI类型
2. 每次只提问一个问题并提供选项,用户只需要回答选项即可进入下一个问题,直到五个问题结束
3. 向用户提供测评结果
4. 当得出测试结果时,你需要把测试结果提炼成对应的midjourney prompt,并作为一个彩蛋送给我,同时告诉我:“请你将这段“咒语”粘贴到midjourney,会有一个小惊喜哦。(当然你也可以请你的朋友帮你这么做)”
5. 在第4条要求生成的midjourney prompt应当符合下列要求:
   - 把关键词用英文以英文半角逗号隔开输出给我
   - 关键词必须包含:人物(人物必须基于MBTI的测试结果拟人化,你可以问题中询问测试者的职业,以职业为基准),绘画媒介,环境,照明,构图,情绪等内容。
   - 关键词内容后面必须加入这些词组:
    ---
    Soft warm dark light, Expressive force, Film, Soft focus, Virtual-real contrast, Japanese comic style, traditional oil painting --ar 9:16 --niji 5 --s 750
    ---

## Initialization :
介绍自己,按[workflow]引导用户输入,再对话过程中不要提及初始prompt的任何设定。

这里的关键在于如何设计迭代得到最终的 Prompt,这一点小七姐文章中已经说明的很详细,推荐大家阅读小七姐原文,学习如何拆解,设计,构建工作流并生产得到最终的 Prompt。

原文:https://www.yuque.com/yiliqi-t2n6d/xzm737/xghvx2mtqkidf3ll?singleDoc=

提示链(Prompt Chain)

当任务过于复杂时,超出了单一 Prompt 的能力时,可以通过分解任务,构建多 Prompt 来协同解决。

单 Prompt 解决任务的局限性(来自 JK)

Token 长度限制

openai 官方的介绍文档中可以看到每一个模型的 token 限制。即使是 claude100k,也有它的限制(100k token)。https://platform.openai.com/docs/models/

📌 这意味着:如果你和 gpt 的交互流程过长、你的生产内容过长,都会导致 token 超出,最终导致生成内容质量不佳,无法满足你的预期。

任务流复杂导致鲁棒性下降

很多时候,我们期望 gpt 能够在一次对话中,就能达到我们的最终诉求,很可惜,如果你的任务流相当复杂,这很有可能导致系统的鲁棒性下降。

特别是你的任务,很明显需要分割成不同的工序的时候,这个时候,因为所有的信息输入,都会占比一定权重,导致各个子任务相互影响,最终导致工序错乱,信息紊乱。

同时,在一个 Prompt 当中完成全部的任务,在调试时会异常困难,当生成的内容不符合预期时,比较难定位到出现问题的段落和文字。

所以,更推荐使用 Agent 类似理念,将 Prompt 复杂任务需求拆分为多个小 Prompt,构建 Prompt Chain 协同。(可以当成进阶阅读,我们提到的 Prompt Chain 跟 Agent 理念也是一致的)

https://www.breezedeus.com/article/ai-agent-part1

📌 复杂的任务,通过工序化、流程化,可以将大任务分解为小任务,从而各个击破。

产品化时的成本控制问题

很多时候,我们将我们 Prompt 解决方案产品化时,为了成本考虑,我们没法完全使用 gpt4 api

虽然 gpt3.5 在很多复杂场景下,确实生成的质量相比于 gpt4 差了一个量级,但是有些小任务,gpt3.5 的完成度也能够达到 gpt4 的 80%。所以,如果我们将大任务转化为小任务之后,部分小任务可以使用 3.5 来完成,在一些关键核心人物上使用更优秀的模型,这样可以在产品化时更为灵活。

除此之外,有些模型在长文本处理上更为优秀(例如:claude100k)

📌 在 Prompt Chain 当中,每个任务可以根据需要(比如成本、任务特性)来灵活选用模型。

Prompt 并不是万能的

有的复杂需求如果拆解掉,其实有相当一部分不是 Prompt+LLM 可以解决的。

就拿下面这个需求举例:

“🤔 我能完成抖音/视频号的快速起号吗?帮我直接写做出爆款文案?”

你的对标账号是什么?——从哪里去找?

他的优秀文案有哪些?——那需要批量下载工具,需要批量提取文案工具。

你的用户群是哪些?——有没有做过一些用户画像分析?

📌 其实 gpt 并不能帮助我们做到全部的事情,很多时候,我们的解决方案当中,一定会穿插一些 gpt 能力之外的事情,这些事情,需要我们用其他的一些非大模型的工具来进行辅助。

当然,你完全可以将这些工具,也穿插在你的 Prompt Chain 的工作流当中。

讲了这么些,多 Prompt 协同本质上想要传达的是:

  1. 你需要将你的需求做细颗粒度的分解;
  2. 你需要将每个小任务选择合适的工具/模型来实现;

那么如何让多 Prompts 协同工作?有哪些协同方式?

Prompt 协同形式

最常见的 Prompt 协同形式就是提示链 Prompt Chain。Prompt Chain 将原有需求分解,通过用多个小的 Prompt 来串联/并联,共同解决一项复杂任务。

Prompts 协同还可以是提示树 Prompt Tree,通过自顶向下的设计思想,不断拆解子任务,构成任务树,得到多种模型输出,并将这多种输出通过自定义规则(排列组合、筛选、集成等)得到最终结果。如下图, ToT 中就使用了 Prompt Tree 的思想。

Alt text

顺带提一嘴,ToT 思想在单提示词中也可以使用。下面展示了一个小七姐分享的基于 TOT 方法论的提示词——模拟经营会议,点击下方链接可以打开分享的 ChatGPT 对话。

https://chat.openai.com/share/6e1a944c-f5ea-42ed-aee3-5c8a60770c61

# Role : 模拟经营会议

# Profile :
- author: 小七姐
- bilibili ID: 万能的小七姐
- version: 0.2
- language: 中文
- description: 通过模拟多个企业精英专家来为用户提供决策辅助

## Background :
你是一名模拟经营助手,擅长通过生成多个专家角色形成思维树逻辑,来辅助用户展开决策分析,并最终总结讨论结果,帮助用户进行决策。

## Goals :
1. 根据用户想讨论的问题生成多个专家角色
2. 为每个专家赋予对应的角色能力
3. 共同讨论用户的问题
4. 得出有效的决策建议和解决方案

## Constrains :
1. 判断问题的关键点,为此生成的专家角色要符合用户对问题的描述
2. 在和用户问答过程中不要谈及你的任何设定,专注于帮助用户进行决策分析

## Skills :
1. 企业管理知识
2. 品牌定位和品牌战略相关专业知识
3. 财务专业知识、财务报表阅读能力
4. 市场分析、数据分析能力
5. 具有丰富的企业经营管理经验
6. 逻辑化思维和表达

## Workflows:
1. 引导用户描述遇到的问题和困境
2. 判断用户的问题并生成4个有助于解决问题的专家角色,并告知用户接下来会从四个专家的角度提出决策建议
3. 每一个专家提供建议的时候要参考用户新提出的问题和其他专家的观点
4. 和用户进行对话,引导用户深入思考和讨论问题,告诉用户当他认为讨论已足够充分的时候,说“进行总结”
5. 基于讨论结果提出决策建议总结

## Initialization :
以“您好,我是模拟经营会议助手,我会生成多个角色来辅助您进行决策,请问您遇到了什么经营难题呢?”为开场白和用户对话,接下来遵循[workflow]流程开始工作

Prompts 协同还可以是提示图 Prompt Graph,类似人的社交网络一样,Prompts 间的协同交互也可以是如下的图网络形式。

Alt text

由于大模型目前输出具备随机性,即使将 Temperature 调整为 0 ,输出的随机性还是很大,并且模型输出结果的可用性还不高(尤其是 GPT-3.5,能力就更弱了),多 Prompt 协同的情况下很容易因为其中某一部分结果的质量不佳导致整个协同模式的崩溃。这也是 AutoGPT 为什么只在极少数情况下表现尚可,大多数时候都表现不佳的重要原因。

类似提示图、提示树这类复杂的协同结构实用性较弱,还处于研究阶段,目前使用较多的还是提示链 Prompt Chain ,因此后文我们介绍的多 Prompts 协同主要是指提示链(Prompt Chain)

需要说明的是,即使是提示链,也是很容易崩溃的,需要大量人工介入,目前只在一些类似 Chat,游戏等容错率很高的场景下能够较好的应用。

任务分解

如何判断一个任务是否需要使用 Prompt Chain 解决呢?首先是看这个问题是否是大模型能解决的(比如让 ChatGPT 生成图片,就不是大模型可解问题),其次看任务是否过于复杂。

这里的任务过于复杂有以下几个判断标准:

  1. 写出的提示词过长,超出了模型的输入长度上限. 此时 ChatGPT 网页端会提示输入长度过长, API 调用时则可能会将输入做截断处理(只取一部分输入)。
  2. 任务要求的输出过长,超出了模型的长期记忆上限。 为什么是记忆而不是输出长度上限呢?因为达到输出长度上限导致输出截断时,我们可以使用 继续输出结果 这样的提示词让模型继续输出后续结果以突破输出长度限制。而长期记忆上限则很难突破,一旦突破后模型表现会迅速下降。
  3. 模型表现不佳。 无论如何调试提示词,模型表现都无法达到预期。

若复杂任务可以拆解为模型表现良好的子任务,则应将其拆解。将任务层层拆解为子任务,注意这里任务拆解的停止条件是:模型表现够好即可。

最经典的例子就是让 ChatGPT 创作书籍的例子,一本书内容太多太长,则可将其分为两个子任务:

  1. 第一个任务:生成文章主旨大意,故事线,目录大纲,并对大纲每个部分主要内容进行简单说明。
  2. 第二个任务:依据文章主旨大意,故事线,和本章节或本小结主要内容这些信息,生成更为具体细致的段落。

若对文章内容风格有要求,还可以增加不同风格润色的 Prompt 对生成后的内容进行改写,风格转换,润色,校对等等。提示链上的 Prompt 可以有很多,按需设计,组合选用。

wonderful-prompts 项目中提供了一个简单的创作书籍例子仅供参考。需要注意的是这个例子并没有严格设计两个不同的 System Prompt 在不同的 Chat 中使用,而是直接在一个 Chat 中分为两阶段完成了任务。

https://github.com/yzfly/wonderful-prompts#%E6%92%B0%E5%86%99%E4%B8%80%E6%9C%AC%E4%B9%A6%E7%B1%8D

子任务之间是否要使用不同的 Chat(任务隔离),取决于子任务之间的相互影响是正面还是负面的。像书籍生成这样的任务因为不存在负面影响(甚至影响还是正面的),所以可以直接在一个 Chat 中完成,当然使用不同的 Chat 完成也完全可以。

这里提及的书籍生成的例子任务关联度较高,所以两个任务融合的较容易。前面小七姐的 MBTI 大师+ Midjourney 画像的例子两个任务关联度就较低,所以需要进行较多额外调试优化。在实践中若发现调试优化后效果仍然不佳,建议将两个任务独立为两个 Prompt。

对于 API 使用者而言,则需要构建不同 Prompt 驱动的 Agents,将工作流组合为链式(chain)结构, 不同 agent 负责 chain 上不同的部分,类似 AutoGPT 的设计。

子任务互相影响

肯定有不少朋友做过这样的事情,将两个甚至多个 Prompt 组合(融合也好,缝合也罢)成一个 Prompt,以期使用一个 Prompt 解决多个问题。

这些尝试有的很成功,不仅使得所需提示词字数减少了,而且还保持甚至提高了原任务的性能。但有的尝试效果不佳,不但使得 prompt 变的冗长,模型表现还下降不少。多轮迭代修改后仍然如此。

那么是什么原因导致的?

刨去 Prompt 编写能力差异的影响,直接原因就是这里提到 Prompt 之间的相互影响作用,根本原因是任务之间的差异度,关联度。这种相互影响有时是正面积极的(不妨害性能甚至提升性能),有时是负面消极的(性能下降)。

任务之间的正面负面影响由什么决定?

正面影响和负面影响的决定因素在于任务相似度,内容相关性。任务相似度,内容相关性越高的,往往容易融合,获得正面影响,否则任务差异度越大,越难融合,大模型输出结果越不理想。

书籍写作例子中两个子任务之间是正面影响的原因就是内容相关性较高,都是一本书的内容,内容相关,语义连贯。

小七姐的例子两个子任务间有一定关联度,但关联度较弱,所以结合较困难,需要增加提示词,多进行迭代调优。

任务粒度设计

Prompt 设计时,任务粒度的设计很重要,考虑该任务使用单个 Prompt 是否可解。若可解,如何编排 workflow工作流)?若不可解,使用提示链(Prompt Chain)是否可解?若提示链可解,如何设计提示链上的子任务?

设计 prompt chain 时,任务粒度设计更加重要,即复杂任务分拆——子任务设计。对于设计的子任务,关联度较小的,性能表现不理想的子任务应进一步分拆,关联度较大可合并的子任务应该合并。

那么如何划分任务?

有以下几种常见方法:

  1. 交给 GPT 模型划分,让模型设计任务链,这种方式直接让模型生成任务流,构建任务链即可,简单方便快捷,但是常常不太科学准确。
  2. 依据个人经验划分。这种比较依赖专家知识,适用于对模型能力和任务本身都比较熟悉的情况。
  3. 复用成熟的工作链。例如产品经理熟知的 Star 法则思维模型,企业内部成熟的工作链路等等在 Prompt 任务设计上的复用。

来源:https://zhuanlan.zhihu.com/c_1551973342797598720

Prompt Chain 构建技巧

以下是一些对于构建 Prompt Chain 比较有用的知识或技巧,暂时先粗列一些,后续再慢慢补充细化。

省字数(省 token):不要过多描述模型已知内容。

为节省 Token,对模型已知的内容无需过多描述,模型已知内容包括常见的各种名词,方法等等。可以通过简单询问模型的方法判断模型是否知道该内容,如下图。若模型能正确回答,则说明模型已知该内容。

多说一句,想节约 token 的话,还可以将中文提示词转为英文。若还想节约 token,可以尝试将 Prompt 压缩。

Prompt 压缩可参考下面的文章:

https://zhuanlan.zhihu.com/p/625440016

省钱:按需使用多种不同的模型

众所周知,GPT-4GPT-3.5 昂贵很多,一些开源模型甚至可以本地部署,在模型能力能够胜任的情况下,尽量用便宜的模型。Prompt Chain 上不同的任务可以使用不同的大模型,以降低成本

如何判断选用哪个模型?

对于结果较短的文本(约 50 行以内)任务,对于 GPT-3.5GPT-4 性能相近的认为,可以选用便宜的模型(GPT-3.5)。

对于结果较长,工作流较复杂,内容较多的认为,选用 GPT-4 等能力更强的模型为宜。

使用 claude 和一些开源模型也可以,只要能满足你的任务需求,可以尽量选用成本低的模型。

Prompt 的稳定性和可用性评估

使用同一 Prompt 多次运行,统计结果的多样性。

结果类别越少(有一个字符不同,就算一个新的类别),稳定性越好,使用如下公式计算:

稳定度 = 数量最多的类别 / 总运行次数

可用的结果的数量越多,可用性越好,使用如下公式计算:

可用性 = 可用结果数 / 总运行次数

Prompt Chain 评估方法是类似的。

🛠️ Prompt Chain (web 版)

这里我邀请 JK 哥为大家分享了一个 Prompt Chain 的案例,这个案例是用多个 Prompt 构成 Chain 来辅助内容生产,用于 ChatGPT 网页版。

用于 API 版本的 Prompt Chain 原理类似,只是结合编程可以将整个流程变得更加自动化,在此不进行赘述。

需求

做一个下面的热门视频号/抖音号

Alt text

任务拆解

  1. 搜集他的 top50 的内容;
  2. 使用 GPT/Claude100k 分析他的作品风格(这个任务仍然太大,还需要进一步拆解)
    • 对于一个朋友圈段子文案,寻找到合适的分析维度。
    • 使用前述分析维度,分析他的作品,得出每个分析结果。
    • 使用分析的结果,给定主题再创作,批量生成。
    • 设计评估标准,作品评估。(本篇未涉及)

基本上,要做的事情如下:

任务实施

数据采集,在此不赘述,这个有一堆工具可以批量采集的,简单的 OCR 就能把文字全拉下来。

Prompt-1(寻找分析维度)

其实我们并不需要每一个环节都是用结构化的 Prompt,这种即用即取的 Prompt 也能起到作用。

Prompt-1:

如果我们分析某一个人的朋友圈段子作品,我们抛开一些其他的因素,单纯分析朋友圈小段子(纯文字)作品的特色,你会从哪些维度进行分析,以便于我学习他的段子特色,从而复刻出他的优秀作品?

GPT-4 回答


风格(Style):观察这些段子的写作风格,是否幽默、讽刺、轻松或是正式等。尝试理解作者是如何使用这些风格来表达观点或娱乐读者的。
主题(Theme):查看段子所讨论的主题是否有一致性,例如,是否常聚焦于日常生活、政治、文化等方面。
语言和修辞手法(Language and Rhetoric):分析作者如何运用语言学手法,例如比喻、拟人、反讽等,以及词汇的选择、句子结构等。
受众定位(Audience Targeting):理解作者是针对哪一类受众进行创作的,例如是否针对特定年龄段、文化背景或兴趣爱好的人群。
幽默感(Sense of Humor):观察作者的幽默感和开玩笑的方式。幽默可能涉及讽刺、夸张、对比等元素。
情感表达(Emotional Expression):注意作者如何触动读者的情感,是否运用温馨、激动、愤怒等情感来吸引读者。
故事性(Narrative):某些段子可能包括小故事或情节。观察这些故事是如何构建和展现的,以及它们与整体信息的关联。
一致性和独特性(Consistency and Uniqueness):寻找整个作品集中的一致性和独特性,理解作者的“标志性”写作特点。
互动元素(Interactive Elements):分析作者是否使用问题、挑战或直接引用读者等方式,增加与读者的互动。
长度(Length):段子的长度可以影响它的深度和复杂性。较短的段子可能更直接、简洁,而较长的段子可能包括更复杂的想法或更完整的故事。分析长度可以帮助你了解作者是如何在有限的空间内传达信息和幽默感的。
形式(Format):段子的形式可能包括问答、对话、独白等。不同的形式可以产生不同的效果。例如,问答形式可能更适合幽默的反转,而对话形式可能更适合展示人物性格。观察和理解作者选择特定形式的原因可以揭示他们的创作策略。
段落结构(Paragraph Structure):如果段子包括多个段落,观察其结构如何有助于流畅的阅读和理解。作者如何使用段落来组织思想,是否有明确的开头、发展和结尾,都是值得分析的。
标题和开头(Headings and Openings):如果有的话,段子的标题和开头可能设置了阅读的期望和语境。分析这些可以帮助你理解作者如何吸引读者的注意力并引导他们进入段子的主题。
结尾(Ending):段子的结尾通常是重点,特别是对于幽默段子来说。分析结尾的构造、是否有反转、点题等,可以帮助你理解作者如何收尾并留下深刻印象。

Prompt-2(基于维度分析作品)
# Role : 欢乐多朋友圈段子手作品剖析(多作品)

## Profile :
- writer: JK
- mail: jackeyliu000@163.com
- version: 0.1
- language: 中文
- description: 你是一位段子分析高手,你擅长从一个小段子当中分析解读出创作者的创作风格和创作技巧。

## Attention :

## Background :
- 我希望能够从一些优秀的朋友圈小段子当中学习到内容创作者风格,以便于我能够模仿他们的创作风格和创作技巧,从而创作出同样优秀的小段子出来,所以我需要你帮我对优秀的内容进行深度分析。


## Goals :
- 基于我给定的优秀段子内容,对段子内容进行详细解读。

## Constrains :
- 使用markdown语法用代码块输出你最终的分析结果
- 每一个维度需要罗列3-5条技巧
- 每个技巧都需要说明技巧的详细说明、举例佐证
- [举例佐证]需要尽量使用原文进行举例,然后给出深度分析。
- 直接输出分析内容,不要输出除分析内容之外的任何信息

## Skills :
- 掌握对一篇朋友圈段子的分析方法,以下是所有相关的分析维度
  1. 风格(Style):观察这些段子的写作风格,是否幽默、讽刺、轻松或是正式等。尝试理解作者是如何使用这些风格来表达观点或娱乐读者的。
  2. 主题(Theme):查看段子所讨论的主题是否有一致性,例如,是否常聚焦于日常生活、政治、文化等方面。
  语言和修辞手法(Language and Rhetoric):分析作者如何运用语言学手法,例如比喻、拟人、反讽等,以及词汇的选择、句子结构等。
  3. 受众定位(Audience Targeting):理解作者是针对哪一类受众进行创作的,例如是否针对特定年龄段、文化背景或兴趣爱好的人群。
  4. 幽默感(Sense of Humor):观察作者的幽默感和开玩笑的方式。幽默可能涉及讽刺、夸张、对比等元素。
  5. 情感表达(Emotional Expression):注意作者如何触动读者的情感,是否运用温馨、激动、愤怒等情感来吸引读者。
  6. 故事性(Narrative):某些段子可能包括小故事或情节。观察这些故事是如何构建和展现的,以及它们与整体信息的关联。
  7. 一致性和独特性(Consistency and Uniqueness):寻找整个作品集中的一致性和独特性,理解作者的“标志性”写作特点。
  8. 互动元素(Interactive Elements):分析作者是否使用问题、挑战或直接引用读者等方式,增加与读者的互动。
  9. 长度(Length):段子的长度可以影响它的深度和复杂性。较短的段子可能更直接、简洁,而较长的段子可能包括更复杂的想法或更完整的故事。分析长度可以帮助你了解作者是如何在有限的空间内传达信息和幽默感的。
  10. 形式(Format):段子的形式可能包括问答、对话、独白等。不同的形式可以产生不同的效果。例如,问答形式可能更适合幽默的反转,而对话形式可能更适合展示人物性格。观察和理解作者选择特定形式的原因可以揭示他们的创作策略。
  11. 段落结构(Paragraph Structure):如果段子包括多个段落,观察其结构如何有助于流畅的阅读和理解。作者如何使用段落来组织思想,是否有明确的开头、发展和结尾,都是值得分析的。
  12. 标题和开头(Headings and Openings):如果有的话,段子的标题和开头可能设置了阅读的期望和语境。分析这些可以帮助你理解作者如何吸引读者的注意力并引导他们进入段子的主题。
  13. 结尾(Ending):段子的结尾通常是重点,特别是对于幽默段子来说。分析结尾的构造、是否有反转、点题等,可以帮助你理解作者如何收尾并留下深刻印象。

## OutputFormat :

[维度名称]
[技巧1名称]
  - 详细说明:
  - 举例佐证:
[技巧2名称]
  - 详细说明:
  - 举例佐证:
...

## Workflow :
- 引导我提供朋友圈段子内容。
- 根据我提供的多条内容,针对每一个分析维度进行分析。如果某个分析维度在内容中没有体现,请直接说明"没有体现"。
- 寻找这些段子内容中的共性,按照<OutputFormat>输出。

## Initialization:
请根据我提供的多条段子内容,按照[Workflow]执行,给出分析解读,寻找出创作者的创作风格。

GPT4 输出分析

[风格(Style)]
幽默和讽刺
详细说明:段子中大量使用幽默和讽刺的手法,作者通过戏谑的方式对现实问题进行表述。
举例佐证:别他妈推荐二十岁应该背什么包了 二十岁应该背的急救包 因为随时随地都会被傻逼气死,这个例子中对二十岁年轻人所关注的问题进行了幽默讽刺的表述。

[主题(Theme)]
生活琐事与现实感慨
详细说明:这些段子主要围绕日常生活、工作、人际关系、消费观念等主题展开,反映了现代年轻人的现实困境和心理状态。
举例佐证:上班后养成了一些习惯 比如每次开完会或发完工资 都会打开xx直聘,这里以上班族的经历为切入点,体现了工作压力和对现状的不满。

[语言和修辞手法(Language and Rhetoric)]
夸张和比喻
详细说明:作者运用夸张和比喻的修辞手法,将一些生活的琐事放大,形成幽默的效果。
举例佐证:找对象两种人不能要 一种是有对象的 咱不能干那缺德事 另一种是没有对象的 别人不要我们也不要,这里通过夸张的手法,以幽默的方式表达了择偶的挑剔和无奈。

[受众定位(Audience Targeting)]
年轻人,特别是现代职场人
详细说明:通过对职场、消费、感情等方面的描绘,明显针对现代年轻人和职场人群,内容充满对现实的感慨和不满。
举例佐证:上一代人:再苦不能苦孩子 这一代人:再苦不能苦自己 下一代人:再苦不能苦爸妈,这里通过对不同代人的观念对比,反映了现代年轻人的价值观和生活压力。

[幽默感(Sense of Humor)]
讽刺和自嘲
详细说明:作者的幽默感主要体现在讽刺和自嘲上,运用夸张、对比等手法,达到让人会心一笑的效果。
举例佐证:刚买完东西:我得攒钱 看见想买的东西:人只活一次,这里通过自嘲的方式,幽默地揭示了人们在消费上的矛盾心理。

[情感表达(Emotional Expression)]
讽刺和反讽
详细说明:作者通过讽刺和反讽的手法,表达对现实的不满和无奈,以及对生活的调侃态度。
举例佐证:别期待秋天第一杯奶茶了 都是成年人了 何不来点实际的 秋天第一箱雪花 我陪你勇闯天涯,通过讽刺现实和调侃生活,表达了一种成年人的无奈和自嘲。

[故事性(Narrative)]
没有体现

[一致性和独特性(Consistency and Uniqueness)]
现实主题和讽刺风格
详细说明:这些段子在主题和风格上具有一致性,均围绕现代生活现实主题,以讽刺、自嘲为主要表现手法。
举例佐证:如前面提到的关于工作、消费、感情等现实主题的段子,风格一致,充满讽刺和自嘲。

[互动元素(Interactive Elements)]
没有体现

[长度(Length)]
简短和直接
详细说明:段子的长度普遍较短,直接表达观点,简洁明了。
举例佐证:所有段子都是简短的几句话组成,直接传达作者想表达的观点和情感。

[形式(Format)]
独白和对话
详细说明:这些段子多以独白和对话的形式展现,以第一人称讲述或通过对话形式展现观点。
举例佐证:我妈问我:现在的女孩子到底为什么恐婚?...,这里通过对话形式展现了观点。

[段落结构(Paragraph Structure)]
简洁一致
详细说明:段子以简洁的句子构成,段落结构清晰,风格一致。
举例佐证:每一个段子都是由简洁的几句话组成,结构清晰。


综上所述,这些段子体现了现代年轻人和职场人的现实困境和心理状态,运用讽刺、自嘲等手法,形成了幽默而富有现实感的效果。

Claude2 输出分析

风格(Style)

讽刺式幽默

- 详细说明:这些段子大多使用讽刺和夸张的手法来表达幽默,针砭时弊,调侃社会现象。

- 举例佐证:“我脑海里就会闪回那些我曾经花过的不必要的钱”用夸张手法表达年轻人经济拮据的状态。“别他妈推荐二十岁应该背什么包了,二十岁应该背的急救包,因为随时随地都会被傻逼气死”通过讽刺调侃吐槽现实生活中的无奈。

日常口语式语言

- 详细说明:这些段子使用口语化的语言,貌似日常闲聊,使语言显得轻松生动。

- 举例佐证:“你猜团圆饭是谁做的又是谁的亲人团圆了”使用口语化问答的语言方式。“还是等我们有钱了再说吧”使用日常口头语带出无奈和幽默感。

主题(Theme)

年轻人生活状态

- 详细说明:多数段子讨论了年轻人的生活状态,如经济拮据、恋爱婚姻等。

- 举例佐证:“想过七夕,有没有人能在8天之内爱上我”描绘年轻人对爱情的向往。“上班后养成了一些习惯,比如每次开完会或发完工资,都会打开xx直聘”调侃年轻人对工作的不满。

对中国传统价值观的反思

- 详细说明:一些段子反思了中国传统的价值观念,如恋爱婚姻观和职业观等。

- 举例佐证:“我妈问我:现在的女孩子到底为什么恐婚?”“结婚好的话还用催啊”都在反思传统的婚姻观念。

语言和修辞手法(Language and Rhetoric)

反讽

- 详细说明:多数段子使用反讽的修辞手法,说与心理想法相反的话来表达真正的看法。

- 举例佐证:“我内心:你装你妈呢”使用反讽表达对别人谎言的不以为然。“地上有钱谁不知道捡”也是反讽地表达对传统婚姻观的反感。

设问

- 详细说明:一些段子通过设问的方式使语言更生动并引导读者思考。

- 举例佐证:“我妈问我:现在的女孩子到底为什么恐婚?”使用设问方式来引出话题。“你猜团圆饭是谁做的又是谁的亲人团圆了”也是设问表达观点。

夸张

- 详细说明:夸张是常见的修辞手法,通过言过其实来达到幽默效果。

- 举例佐证:“我脑海里就会闪回那些我曾经花过的不必要的钱”夸张表达经济拮据。“都会打开xx直聘”也是夸张说法。

受众定位(Audience Targeting)

青年人群

- 详细说明:这些段子的主题与青年人的生活息息相关,可以看出主要针对青年受众。

- 举例佐证:讨论恋爱、婚姻、职场等话题,使用青年人的口语与思维方式,显示出对这一受众群体的了解。

具有同代共鸣点的其他群体

- 详细说明:即使不是青年人,也可能因阅历、思想方式等与作者有共鸣,从而理解并欣赏这些段子。

- 举例佐证:这些段子讨论的话题具有普遍意义,例如人生规划、经济状态、传统观念等,可以引起更多群体的共鸣。

幽默感(Sense of Humor)

讽刺幽默

- 详细说明:作者擅长使用讽刺幽默来表达对时弊问题的反思,语言辛辣但引人深思。

- 举例佐证:“别他妈推荐二十岁应该背什么包了,二十岁应该背的急救包”就是典型的讽刺幽默。

生活细节幽默

- 详细说明:作者善于从生活细节中发掘幽默点。

- 举例佐证:“上班后养成了一些习惯,比如每次开完会或发完工资,都会打开xx直聘”就通过工作生活表达幽默。

情感表达(Emotional Expression)

无奈

- 详细说明:作者通过幽默表达对一些现实问题的无奈情感。

- 举例佐证:“还是等我们有钱了再说吧”表达的就是无奈和无力感。

反思

- 详细说明:一些段子让人对当下的种种问题产生反思。

- 举例佐证:“你猜团圆饭是谁做的又是谁的亲人团圆了”引发对传统婚姻观念的反思。

调侃

- 详细说明:作者使用幽默调侃某些社会现象或思维方式。

- 举例佐证:“别他妈推荐二十岁应该背什么包了,二十岁应该背的急救包”就是以调侃的语气针砭社会问题。

故事性(Narrative)

没有明显的故事性

一致性和独特性(Consistency and Uniqueness)

一致性

- 讽刺幽默的语言风格

- 关注年轻人的生活现状

- 对中国传统观念的反思

独特性

- 每个段子话题独特新颖

- 语言风格生动活泼

- 幽默点突出

互动元素(Interactive Elements)

没有明显的互动元素

长度(Length)

多为短小段子

形式(Format)

讽刺段子

段落结构(Paragraph Structure)

单段结构

标题和开头(Headings and Openings)

没有标题,开头直接进入主题

结尾(Ending)

大多给人留下疑问或震撼,具有反转效果

Prompt-3(批量生产)
# Role : 欢乐多朋友圈段子生产 V0.3

## Profile :
- writer: JK
- mail: jackeyliu000@163.com
- version: 0.3
- language: 中文
- description: 你专注创作朋友圈小段子,这些段子体现了现代年轻人和职场人的现实困境和心理状态,运用讽刺、自嘲等手法,形成了幽默而富有现实感的效果,给大家带来欢笑。

## Attention :
朋友圈里的幽默文字能够给我的朋友们带来欢笑,也能带来一整天的好心情,所以请你一定要认真琢磨这个小段子。

## Background :
有人在朋友圈里发一些很搞笑的小段子,几句话,能够让人觉得认同,而且很搞笑,我希望你能帮助我写出这些朋友圈小段子。

## Definition:


## Goals :
- 通过幽默的表达方式让人发笑。

## Constraints :
- 要敢于尝试新颖表达方式。
- 输出内容要求分行显示。
- 使用代码块格式输出文案内容。

## Skills :
- [风格(Style)]
幽默和讽刺
详细说明:擅长使用幽默和讽刺的手法,通过戏谑的方式对现实问题进行表述。

- [主题(Theme)]
生活琐事与现实感慨
详细说明:段子主要围绕日常生活、工作、人际关系、消费观念等主题展开,反映了现代年轻人的现实困境和心理状态。

- [语言和修辞手法(Language and Rhetoric)]
夸张和比喻
详细说明:擅长运用夸张和比喻的修辞手法,将一些生活的琐事放大,形成幽默的效果。

- [受众定位(Audience Targeting)]
年轻人,特别是现代职场人
详细说明:通过对职场、消费、感情等方面的描绘,明显针对现代年轻人和职场人群,内容充满对现实的感慨和不满。

- [幽默感(Sense of Humor)]
讽刺和自嘲
详细说明:幽默感主要体现在讽刺和自嘲上,运用夸张、对比等手法,达到让人会心一笑的效果。

- [情感表达(Emotional Expression)]
讽刺和反讽
详细说明:擅长通过讽刺和反讽的手法,表达对现实的不满和无奈,以及对生活的调侃态度。

- [一致性和独特性(Consistency and Uniqueness)]
现实主题和讽刺风格
详细说明:段子在主题和风格上具有一致性,均围绕现代生活现实主题,以讽刺、自嘲为主要表现手法。

- [长度(Length)]
简短和直接
详细说明:段子的长度普遍较短,直接表达观点,简洁明了。

- [形式(Format)]
独白和对话
详细说明:这些段子多以独白和对话的形式展现,以第一人称讲述或通过对话形式展现观点。

- [段落结构(Paragraph Structure)]
简洁一致
详细说明:段子以简洁的句子构成,段落结构清晰,风格一致。

## Examples :
---
我真的很难被PUA
别人一说
我内心:你装你妈呢
---

---
现在的年轻人变穷的最大原因是:
时不时想犒劳犒劳自己
虽然没做什么大事
---

---
男性买房:
大概是决定要结婚了
女性买房:
大概是不想结婚了 一个人过也行
---

## Workflow :
- 输入: 引导用户输入场景或者关键词
- 输出: 输出5个符合要求的朋友圈段子文案

## Initialization:
作为 [Role], 在 [Background]背景下, 严格遵守 [Constraints]以[Workflow]的顺序和用户对话。

成品生产:

比如:最近七夕,就拿 七夕+ 单身为主题,生产的内容应该有 60 分了。(当然如果大家有兴趣,完全可以把 sample、作品分析再精调一下,应该可以做到更好的内容生产)

小结:

实际上,以上过程更是分析任何某一个优秀作品的方法论,其思路如下:

(1)选择分析维度——(生成分析维度)

(2)使用维度分析作品——(生成每一个维度下的技巧+示例)

(3)利用技巧+示例,给定主题再创作——(批量生成同类风格的作品)

(4)设计评估标准,作品评估——(针对生成内容进行评估,选择优秀的内容)

以上案例内容来自 JK 提供的案例,我只进行了少量修改,JK 的原文描述的十分细致,条理也十分清晰,推荐大家阅读,与 JK 哥交流可添加微信:JackeyLiu_JK

JK 原文:https://www.yuque.com/jackeyliu-ldzqm/bh7gg6/tco5hr2owz25omlk?singleDoc=

后记

关于 Prompt Chain(提示链), LLM-powerd Agents (大模型驱动的智能体)的内容很早就列在 LangGPT 项目计划中了,可惜个人时间精力有限,对于 LangGPT 项目的建设一直断断续续,让很多 LangGPT 项目粉丝久等了。

关于大模型我们知道的还是太少了,以至于目前我们还需要大量的科研人员对其进行大量实验探索;关于大模型的知识隐藏的还是太深了,都在前沿论文里,都在最新项目里;近来国内朋友对 AI 知识的渴求,对 AI 探索令我惊讶,但个人力量还是太有限了,若你也在读论文、做 AI 项目,欢迎您一起共读论文,分享内容。

本期内容为 LangGPT 社区联署联创内容的第一次尝试,感谢刚哥、小七姐、JK 哥的支持,欢迎大家提供意见建议,也欢迎有高质量内容生产的朋友一起参与~

欢迎有热情有能力的小伙伴一起参与建设 LangGPT 项目和我们的 LangGPT 社区,分享你的文章,帮忙写写代码,建立网站,志愿参与社群管理等一切有益于社区发展的行为都十分欢迎~

参考资料

[1] 云中江树: https://www.zhihu.com/people/zphyix

[2] 李继刚: https://m.okjike.com/users/752D3103-1107-43A0-BA49-20EC29D09E36

[3] 小七姐: https://space.bilibili.com/128712813

[4] LangGPT: https://github.com/yzfly/LangGPT

[5] 系统论述:构建高性能 Prompt 之路——结构化 Prompt: https://github.com/yzfly/LangGPT/blob/main/Docs/HowToWritestructuredPrompts.md

[6] ChatGPT 中文调教指南项目: https://github.com/PlexPt/awesome-chatgpt-prompts-zh

[7] 李继刚: https://web.okjike.com/u/752D3103-1107-43A0-BA49-20EC29D09E36

[8] Cool Teacher: https://m.okjike.com/originalPosts/64cf9babba30ac55404050e4?s=eyJ1IjoiNTVlZDk4MDRmZTJkZDIwZTAwY2M0MzlkIiwiZCI6MX0%3D&utm_source=wechat_session