gpt-prompt

Prompt 技巧

Dimiliter

这里的 Prompt 是一个比较长的描述,所以可以提出了第一个 Prompt 的技巧:撰写明确而具体的指示, 对于大段的输入, 可以使用分隔符明确指定内容

CoT

chain of Thought

给模型思考的时间, Step by step是一个具有魔力的 Prompt 词汇,可以让 ChatGPT 花更多的时间去计算思考这个问题,而不是直接给出一个答案。

你是一个软件质量保证团队的经理,也是行业专家,擅长分析小程序SDK的功能描述文档,依据用例设计规范、用例设计指南,来生成测试用例集。你拥有软件领域的专业知识,能够基于专业知识预判用例预期结果。
严格执行思考过程:
『
1. 先理解「功能描述」所述的SDK功能;\n
2. 再理解「用例设计指南」中的Checklist;\n
3. 参考「思考示例」,根据Checklist所关注的内容,提取出「功能描述」相关的功能细节;\n
4. 参考「思考示例」,列出Checklist;\n
5. 参考「思考示例」,先统计出测试用例总数;\n
6. 参考「思考示例」、「用例设计规范」,编写每一条用例的详细信息;\n
7. 输出内容。
』

思维树技巧

Tree Of Thought(思维树)。维护一棵思维树,解答问题的过程有一系列中间步骤,让 AI 能够对推理的中间步骤进行评估与验证。

比如模拟圆桌模式,引入多个角色,抛出主题,让不同角色围绕主题不断讨论,直到获取满意结果。

其他技巧

迭代 Prompt。如果你发现 ChatGPT 没有正确的理解你的需求,那么你可以继续在这个会话中微调你的 Prompt,直到 ChatGPT 正确的理解你的需求为止。

这里可以提出第四个 Prompt 的技巧:放弃方案。如果你发现 ChatGPT 没有给出一个满意的答案,那么你可以放弃这个方案,直接开启新的会话探索另外一种方案。

我们又可以提出第五个 Prompt 的技巧:给出代码片段。如果你发现 ChatGPT 给出的代码不完整,那么你可以给出一个代码片段,让 ChatGPT 帮你完成这个代码片段。

我们又可以提出第六个 Prompt 的技巧:代码解释。如果你发现 ChatGPT 给出的代码你难以理解,那么你可以要求它给予完整的解释,或者用更简单的方式重写它的代码。这个过程中,还可以提升自己的技术能力,这也是结对编程的一个好处。

我用到了第七个 Prompt 的技巧:few-shot。这个 Prompt 的技巧可大有来头,因为这是 GPT-3 的论文 Language Models are Few-Shot Learners 标题的由来。如果你发现 ChatGPT 没有给出一个满意的答案,那么你可以给出一个更具体的例子,让 ChatGPT 帮你完成这个例子。

基于提示词框架编写 Prompt

Elavis Saravia 的 ICIO 框架

程序员思维

ICIO 框架是 Elavis Saravia 总结的一套框架,他认为一个 prompt 里需包含以下四个部分:

Instruction (必须): 指令, 即你希望模型执行的具体任务

Context (选填): 背景信息, 或者说是上下文信息, 这可以引导模型做出更好的反应

Input Data (选填): 输入数据, 告知模型需要处理的数据

Output Indicator (选填): 输出指示器, 告知模型我们要输出的类型或格式。

Matt Nigh 的 CRISPE 框架

以“人”为本

CRISPE 框架是 Matt Nigh 提出的一个用于编写 prompt 输出复杂内容的框架,它是首字母的缩写,分别代表以下含义:

CR:Capacity and Role(能力与角色):你希望 ChatGPT 扮演怎样的角色。

I:Insight(洞察):背景信息和上下文。

S:Statement(陈述):你希望 ChatGPT 做什么。

P:Personality(个性):你希望 ChatGPT 以什么风格或方式回答你。

E:Experiment(实验):要求 ChatGPT 为你提供多个答案。

陈财猫的 BORE 框架

OKR

BORE 框架是陈财猫设计的一套 ChatGPT 提示设计流程,提高 ChatGPT 的工作效率和质量。

BORE 是 Background, Objectives, Results, Experiment 的缩写,它包括四个部分:

Background: 阐述背景,为 ChatGPT 提供充足信息。

Objectives: 定义任务目标,告诉 ChatGPT 我们希望实现什么。

Results: 定义关键结果,让 ChatGPT 知道实现目标所需要达成的具体、可衡量的结果。

Experiment: 试验并调整,通过试验来检验结果,并根据需要进行调整。

Szhans 的提示词框架

AIGC

Szhans 提出的一个新的提示词框架,可以让 ChatGPT 们成为你更好私人顾问

表达目标:(你想做什么?)

提供框架:(给出示例)

目标受众:(什么类型的人会去读)

语气风格:(比如幽默、严肃、正式…)

参考的作者/电影/书籍/其他的风格:(比如斯蒂芬金)

不要触及的部分:(比如政治)

Prompt Chaining

对于复杂任务来说,进阶技巧也是不够的。写提示词就像写代码,需要不断测试、优化,以提升模型推理的准确性,并需要利用上 Prompt Chaining(链式提示)、向量数据库和开发框架等手段。

将复杂任务分解为多个子任务,链式完成工作。

Prompt Chaining,链式提示。对于一个复杂问题,一个推理任务是无法解决的。提示工程可以将一个任务被分解为多个子任务,根据子任务创建一系列提示操作。确定子任务后,将子任务的提示词提供给语言模型,得到的结果作为新的提示词的一部分,这就是链式提示。

在链式提示中,提示链对每个步骤的结果执行转换或其他处理,直到达到期望结果。每一步都提供合理的线索和指导,以帮助模型形成有条理的回答。

除了提高推理准确性,链式提示还有助于提高推理的透明度,增加控制性和可靠性。更容易地定位模型中的问题,分析并改进需要提高的不同阶段的性能。

背景:你需要为小程序特定功能模块,生成自动化测试用例及测试代码。

任务一、生成测试用例

  1. 子任务 1、对目标功能模块的描述文字,进行摘要处理
  2. 子任务 2、参考设计规范文档中的示例,增加用例示范
  3. 子任务 3、参考设计指南文档,遍历生成测试用例

任务二、生成测试代码

  1. 子任务 1、参考 STC 测试编写规则,为测试用例生成测试代码
  2. 子任务 2、根据用例编写规范进行检查和修改

向量数据库

让 GPT 在了解大量上下文信息的情况下解决问题。

向量数据库是一种特殊的数据库,它专门用于存储和管理向量数据。向量数据是指由多个数值组成的数据,这些数值通常表示某种特征或属性。例如,一张图片可以表示为一个由像素值组成的向量,一个文本可以表示为一个由单词频率组成的向量。

向量数据库的主要特点是能够高效地存储和查询大规模的向量数据。它通常采用基于向量相似度的查询方式,即根据向量之间的相似度来检索数据。这种查询方式可以用于各种应用场景,例如图像搜索、音乐推荐、文本分类等。

向量数据库的实现方式有很多种,其中比较常见的是基于向量索引的方法。这种方法将向量数据映射到一个高维空间中,并在这个空间中构建索引结构,以支持高效的相似度查询。常见的向量索引结构包括 KD 树、球树、LSH 等。

向量数据库在人工智能、机器学习、大数据等领域有着广泛的应用,它可以帮助用户快速地检索和分析大规模的向量数据,从而提高数据处理的效率和准确性。

Prompt 测评

Fornax