《ChatGPT进阶:提示工程入门》学习笔记

书名:《ChatGPT进阶:提示工程入门》
作者:陈颢鹏 李子菡

微信阅读,累计阅读天数11天,总共3小时20min,2024-3-23读完本书。整理图书时,主要整理能直接用的提示词模版,方便未来直接复制使用。 2024-4-1 morening整理发布

使用prompt,本质是还是一个如何清晰表达的能力;
“Prompt: 为什么说使用者与ChatGPT之间的关系就像领导与员工一样?”

其他提醒:

  1. 不相关的话题最好在不同对话(Chat)里聊。
  2. 能多次重复使用的提示去指示ChatGPT完成重复工作
  3. “拆解问题、标准化、流程化,简单来说就是将复杂问题简单化,简单问题标准化,标准问题流程化。”—— 提问的背后还是“如何提问”的思考方式。
  4. 在与ChatGPT交流的过程中,我们使用的提示一部分是指令,另一部分是上下文。我们可以用“###”或“””””,或者其他任何可以分割文本的分隔符将指令与上下文分割开。 (指令是命令语言,上下文是要ChatGPT分析的文本)
  5. 知识生成提示:上一个提问的答案作为下一个提问的输入文本:比如在“4.2文本摘要”中,先问他会议纪要的整理模版和关键要素,然后再让它按照这个模版整理具体的会议纪要。再比如,“翻译诗歌时,我们先试着让ChatGPT生成了一些“ 什么是好的翻译”的知识。ChatGPT会根据之前的分析与生成的知识,在后续的动作中对回答进行调整。”
  6. 用类比或讲故事的方式,学习复杂概念:prompt:“你能用更通俗易懂的语言告诉我这个文本表达了什么吗?可以用打比方或讲故事的方式。”
  7. 分治法:“分治法(DivideandConquer)是一种解决问题的策略,它将一个复杂的问题分解成若干个相对简单的子问题,然后独立地解决这些子问题”。分治法对应关键词是,let us think step by step,让chatGPT更条理的分析问题和输出结果。 当然也可以先让chatGPT给出详细的步骤,再分别针对每一步进行提问。

第四章 自然语言处理
主要有一些任务类型,一下给出一些可能会用到的提示词。

  1. 文本摘要
  2. 文本纠错
  3. 情感分析
  4. 实体识别
  5. 机器翻译
  6. 关键词抽取
  7. 问题问答
  8. 生成式任务

要注意ChatGPT的两个缺点:

  1. 幻觉:一本正经的胡说八道。 幻觉的具体解释:大语言模型的“幻觉”是指大语言模型输出一系列看似符合逻辑,但实际是错误或并不存在的虚假事实。而且由于这些错误和虚假事实看起来都非常符合逻辑,很容易让人相信
  2. 上下文限制:ChatGPT的上下文是有限的。GPT-3.5的4k版本上下文有2000~3000个词,GPT-4的32k版本的上下文约有25000个词。由于词汇量太大, ChatGPT会“忘记”较早输入的内容。 (claude可以允许更长的上下文,也可以用插件解决)

文本摘要

prompt:你是一个被设计来执行文本摘要任务的助手,你的工作是从原始文本中提取关键信息,并生成一个简短、清晰且保留原文主旨的摘要。接下来,我会在下方提供一串“需要进行文本摘要的文本”。你需要返回给我摘要的结果,我应该能从摘要中快速了解文本的主要内容。
需要进行文本摘要的文本:
‘###
(这里填写需要进行文本摘要的文本。)(比如一篇英文论文的摘要,用chatGPT进一步summarize)
‘###

Prompt: 假设你是一名世界一流的顶尖管理学教授,请列出一场会议的会议记录中最关键、最核心的几个要素。 【先让chatGPT帮助生产一个框架,再用这个框架让ChatGPT分析具体问题】

Prompt: 你是一个被设计出来执行文本摘要任务的助手,你的工作是从原始文本中提取关键信息,并生成一个简短、清晰且保留原文主旨的摘要。接下来,我会在下方提供一串“需要进行文本摘要的文本”。文本是一场会议的文字记录,我应该能从摘要中快速了解文本的主要内容。
你应该以表格的形式总结出这场会议中涉及的核心要素,并以表格的形式返回给我会议摘要的结果。
核心要素如下。
‘###
(上一个问答中,ChatGPT给出的答案;以此作为模版)
‘###
需要进行文本摘要的文本:
‘###

文本纠错

提示公式:你是一个被设计出来执行文本纠错任务的助手,接下来,我会在下方提供一串“需要进行文本纠错的文本”。你需要分析文本中的每一条信息,对其进行错字检查、拼写检查、语法纠错、标点符号修正、词汇搭配、语义纠错、病句检查等方面的文本纠错,让句子表达通顺,使之没有语法错误与其他错误。
进行检查后,你需要做出以下反馈:
1-返回经过修改后的文本;
2-注明修改的地方,并说明原因。
需要进行文本纠错的文本:
‘###
(这里填写需要进行文本纠错的文本。)
’###

4.5 实体识别:抽取特定实体

使用实体识别,我们可以快速、大量地提取出真正关键的信息,免去阅读大量文本的困扰。对于结构化的数据,我们可以使用JSON文件来表示,因为它能用人类可读的文本来表示数据,并且非常容易解析和生成。不过使用JSON文件只是一个建议,在实际应用中你可根据需求定义自己想要的格式。

4.8 问题回答:用ChatGPT学知识

几个具体方法;用类比学习复杂概念,用讲故事的方式解释复杂概念

Prompt: 请用通俗易懂的语言,以打比方的方式告诉我机器学习是什么。

Prompt: 请用通俗易懂的语言,用讲故事的方式为我解释机器学习中有监督学习和无监督学习的区别,要让一个小朋友也能听懂。

第5章 使用BROKE框架设计ChatGPT提示

BROKE框架是一套用于缩小问题空间、定义明确指令的提示工程框架。(有点像解决一个项目级别的问题)

(1)阐述背景B(Background):说明背景,为ChatGPT提供充足的信息。
(2)定义角色R(Role):给ChatGPT定义角色。
(3)定义目标O(Objectives):指我们希望ChatGPT能够实现什么目标。
(4)定义关键结果K(KeyResults):指我们想要什么具体效果。
(5)试验并调整,改进E(Evolve):将以下三种改进方法自由组合

例5-4 用ChatGPT分析问题背景:攀登雪山
Prompt: Let’s think step by step,
1.接下来我会向你提一个“目标”,为了完成目标,你需要从不同方面去拆解问题的背景,分析解决这个问题需要哪些信息。
获得这些信息后,你应该能够对这个问题进行彻底、全面、深入的分析。
2.根据你的分析,向我提一些问题来询问你需要知道的信息,从而达成目标。
向我提尽可能多的问题,用于提供背景信息。
目标:
‘###
我要去攀登雪山,需要做哪些准备?
’###

———-

图书摘抄

◆ 前言

那什么是提示工程呢?简单来说,就是通过精心设计、优化输入信息来引导人工智能生成高质量、准确、有针对性的回应

◆ 第1章 认识ChatGPT

ChatGPT是一个强大的聊天机器人,一种人工智能模型,也是一种自然语言处理工具,全称为“Chat Generative Pre-trained Transformer”

那么,语言模型是什么呢?语言模型可以理解为一种预测下一个token(自然语言处理的单位,可以简单理解为词)的统计模型。举例来说,如果我们输入“想吃”,语言模型会预测“饭”是接下来很有可能出现的词。因为根据它训练过的大量数据资料显示,“想吃饭”是一个很常见的短语,在数据资料中出现“想吃饭”短语的频率要高于“想吃鼠标”等短语

简而言之,语言模型会根据我们输入的词序列,结合它见过的所有词序列组合,再根据词序列组合出现的频率,来预测下一个最有可能出现的词是什么。根据语言样本进行概率分布估计,就是语言模型。 「关键词是“概念”」

虽然用机器“预测下一个词”的工作听起来简单得不可思议,但是结果却是产生了ChatGPT这样的划时代人工智能产品

涌现是“由量变引起质变”,是“整体大于部分的总和”的概念。

◆ 第2章 人机共舞的艺术:提示工程简介

ChatGPT是一个“遇强则强,遇弱则弱”的工具,就像同样都是用画笔,有的人能画出精彩绝伦的传世佳作,而有的人只能画出“四不像”。ChatGPT和画笔一样都是工具,对于工具来说,使用方法很重要。

为了更好地与ChatGPT沟通,让它领会我们的需求与目的,提示工程便应运而生,这是一门精妙的艺术,旨在优化我们与人工智能互动的过程。试想一下,当我们与人交谈时,我们的语言和表达方式会直接影响对方的理解和回应。那么,与人工智能的交流也是如此

提示工程是通过精心设计、优化输入信息(提示),来引导人工智能生成高质量、准确、有针对性的回应。它是一门高度依赖经验的工程科学,涉及对问题表述、关键词选择、上下文设置及限制条件等方面的细致调整,以提高人工智能回应的有效性、可用性和满足用户需求的程度。

一个精心设计的提示可以引导人工智能将我们的需求转化为切实可行的解决方案。我们还可以通过设计能多次重复使用的提示去指示ChatGPT完成重复工作,这时我们只需点点鼠标,就可以差使聪明的人工智能帮我们解决大量无聊、重复、缺乏新意的机械工作

在信息传递过程中出现了“沟通噪声”(Communication Noise),干扰了信息的传递,导致接收者得到的信息与发送者想传递的内容有所偏差

从“编码”的角度看,提示工程让我们优化了“把思想变成符号”的过程,从而让发送者(我们)和接收者(ChatGPT)之间能够更有效地传输信息

从“噪声”的角度看,在我们与ChatGPT交互时,提示工程可以帮助处理和减少噪声(也就是干扰传递的因素),使我们的消息更容易被ChatGPT“理解”

在人工智能的协助下,我们将能够解决更复杂的问题,并在较短的时间内完成使用传统方法无法完成的任务。从这种“智能增强”(Intelligence Amplification)的理论角度来看,人工智能会是提高和扩展人类智能的一种方式,而非竞争对手或替代品

学习提示工程能够让我们更快、更好地获得人工智能的帮助。一个经验丰富的提示工程师可以根据特定任务的需求,为人工智能提供恰当的输入,从而提高和扩展自身的智能

作为一个提示工程师,提示工程能够引导我们深入了解我们的需求和目标,并在与人工智能互动时,确保我们提供的指令明确且有效。

拆解问题、标准化、流程化,简单来说就是将复杂问题简单化,简单问题标准化,标准问题流程化。

首先,将复杂问题划分为若干个子问题,每个子问题相对于整体问题都更简单一些。然后,通过对这些子问题的深入理解和处理,逐步明确并解决原来的复杂问题。简单化不是简化,而是通过更深入的理解和分析,使得复杂问题变得更容易管理和处理

首先,将复杂问题划分为若干个子问题,每个子问题相对于整体问题都更简单一些。然后,通过对这些子问题的深入理解和处理,逐步明确并解决原来的复杂问题。简单化不是简化,而是通过更深入的理解和分析,使得复杂问题变得更容易管理和处理

简单问题标准化基于两个前提,一是简单问题是可预见的,二是简单问题可以通过应用某种确定的方法得到解决。

◆ 第3章 使用ChatGPT的基础技巧

在与ChatGPT交流的过程中,我们使用的提示一部分是指令,另一部分是上下文。我们可以用“###”或“””””,或者其他任何可以分割文本的分隔符将指令与上下文分割开。

在使用ChatGPT的过程中,虽然我们的提示中往往会有一些重点,但是ChatGPT偶尔会忽略它们,或者对我们想要强调的重点的注意力不够。这时我们可以使用“**”来加粗文本,即在重点词或短语前后添加两个星号,让ChatGPT注意到它们

在使用ChatGPT的过程中,我们有时需要将一个任务列出很多项,如做一件事情的步骤、提醒ChatGPT在回答中需要注意哪些事项等,就需要ChatGPT按条列出,这样才更清晰和醒目。这时,我们可以使用有序列表或无序列表来提示ChatGPT

我们最好在与ChatGPT的同一轮对话中讨论同一件事。

ChatGPT插件的重要性在于可以扩展ChatGPT的功能,让ChatGPT不仅是一个会说话的机器人,还是一个能帮你做事的机器人

◆ 第4章 使用ChatGPT完成自然语言处理任务

ChatGPT是处理人类语言的大师,而语言与我们的日常生活和工作息息相关。我们经常需要花费大量时间在处理语言的工作上。例如,理解一篇复杂的报告,整理信息写摘要、演讲稿,在候选人的简历里找出关键信息,等等。这些问题看似简单,操作起来却很琐碎,会耗费我们大量的时间和精力

1.文本摘要(Text Summarization)

.文本纠错(Text Correction)

3.情感分析(Sentiment Analysis)

4.命名实体识别(Named Entity Recognition)

5.机器翻译(Machine Translation)

6.关键词抽取(Keyword Extraction)

7.问题回答(Question Answering)

8.生成式任务(Generative Tasks) 生成式任务是指让计算机根据给定的上下文生成具有一定意义和连贯性的文本

你是一个被设计来执行文本摘要任务的助手,你的工作是从原始文本中提取关键信息,并生成一个简短、清晰且保留原文主旨的摘要。接下来,我会在下方提供一串“需要进行文本摘要的文本”。你需要返回给我摘要的结果,我应该能从摘要中快速了解文本的主要内容。
需要进行文本摘要的文本:
‘###
(这里填写需要进行文本摘要的文本。)
’###

4.5.1 实体识别任务的提示公式
对于实体识别任务,我们也提供了一个开箱即用的提示公式,你可以根据自己的需求选用。
实体识别的提示公式
你是一个被设计为从文本中提取实体的助手,接下来,我会在下方提供一串“需要进行实体识别的文本”。你需要从中提取出[实体类型1]、[实体类型2]和[实体类型3],并返回给我一个JSON对象。

4.8.1 用类比学习复杂概念
在让ChatGPT介绍复杂概念时,我们可以让它“用通俗易懂的语言”和“打比方或比喻”为我们解释问题。这是一种类比推理的方法,可以将复杂的概念与我们已经熟悉和理解的事物联系起来,帮助我们更容易地把握新概念的核心特点。
类比虽然并不总是完全准确,但是它可以帮助我们更直观地理解、更好地学习

人工智能只是工具,人要做自己的主人

让我们使用背景、ChatGPT的角色、目标和关键结果这四个要素来设计提示

◆ 第5章 使用 BROKE框架设计ChatGPT提示

通过BROKE框架来设计ChatGPT提示,内容如下。
(1)阐述背景B(Background):说明背景,为ChatGPT提供充足的信息。
(2)定义角色R(Role):给ChatGPT定义角色。
(3)定义目标O(Objectives):指我们希望ChatGPT能够实现什么目标。
(4)定义关键结果K(KeyResults):指我们想要什么具体效果。
(5)试验并调整,改进E(Evolve):将以下三种改进方法自由组合

◆ 第6章 使用ChatGPT的进阶技巧

· 使用自一致性获得更可靠的答案
· 利用知识生成提示在回答问题前做铺垫,获得更详细、更好的回答

分治法(DivideandConquer)是一种解决问题的策略,它将一个复杂的问题分解成若干个相对简单的子问题,然后独立地解决这些子问题。

下面提供两个激活ChatGPT推理能力的“神秘咒语”。
咒语1:让我们一步一步思考(Let’ s think step by step)
目前,要激活ChatGPT的链式思维,方法非常简单,你只需在任务前加上一句“Let’s think step by step”就可以。这句“咒语”会给ChatGPT带来很大的改变,激活ChatGPT的推理能力,让它在需要逻辑的问题上有更好的表现。

咒语2:让我们逐步来解决这个问题,以确保我们得到正确的答案(Let’s work this out in a step by step way to be sure we have the right answer)

6.5 知识生成提示

生成的知识与问题结合在一起时,可以像拼图一样,将两者连接起来。例如,假设你要让ChatGPT把一首英文诗翻译成中文,你可以先让ChatGPT生成关于翻译的知识,然后将这些知识与问题一起提供给ChatGPT。

翻译诗歌时,我们先试着让ChatGPT生成了一些“ 什么是好的翻译”的知识。ChatGPT会根据之前的分析与生成的知识,在后续的动作中对回答进行调整。

◆ 第7章 如何用ChatGPT进行创新

在心理学中,创造力是指个体通过新颖且合适的思维和行为来解决问题、产生新观念或改进现有观念的能力。心理学家从两个方面评价创造力,一个是发散思维(对某一问题产生不寻常想法的能力),另一个是聚合思维(整合不同来源的信息,从而解决问题的能力)。
要充分发挥创造力,进行创新,特别是进行组合式创新,我们不妨从“把两个看似不相关的东西结合在一起,使之发挥出更大的威力”着手

ChatGPT可以非常轻松地根据我们的需求和描述写出可以使用的Excel宏。

◆ 第8章 基于ChatGPT进行开发

在ChatGPT的参数中,有一个叫作temperature(温度)的参数控制着生成文本的随机性,参数值的范围为0~2。如果你希望生成的文本更随机、更有创新性,那么你可以增大temperature的值;反之,如果你希望生成的文本更稳定、更准确,那么你可以减小temperature的值。

仅仅使用这些独立的大语言模型往往无法创建出真正强大的应用程序,这种应用程序真正的威力在于能够将“ChatGPT们”与其他计算或知识来源相结合。