写点什么

提示工程七巧板:让 ChatGPT 发挥出最佳性能

  • 2023-06-09
    北京
  • 本文字数:5546 字

    阅读完需:约 18 分钟

机器有机器的作用,人有人的独特个性和价值。

正因为如此,

  • 一方面,ChatGPT 等人工智能语言模型需要通过不断与人类的公共知识信息数据交互、汇聚,不断与人类进行对话,才能拥有越来越好的智能表现;

  • 另一方面,作为人工智能机器的用户,各行各业的人们只有专注于自己更高级的独特想像力和创造性思考,并由此给机器以更清晰的愿景指令和更有价值的个性化引示,才能让 ChatGPT 等人工智能语言模型产品在专门领域中发挥出最佳作用,成为更善解人意的合作伙伴和人类的助手。

提出好问题比记忆知识更重要,这是利用好 ChatGPT 的关键。

《与 AI 对话:ChatGTP 提示工程揭秘》这本书中,

  • 第一部分首先从整体上介绍了 ChatGPT、机器学习、大模型革新及其背后的自然语言处理知识的原理和演进思路;

  • 第二部分“提示工程”讲得很精彩,深得要领,不仅讲其道理,更举其实例;

  • 第三部分延伸讨论了国产类 ChatGPT 产品和其缺陷和局限。

在人工智能时代的今天,为了消除愿景与现实之间的鸿沟,以好奇心和想像力去(向人工智能机器)提出问题、提出好问题,越发显得格外重要了,其余的“智能体力活儿”交给您的 AI 助手去办吧。



书中详细目录如下:


第 1 部分  基础知识

1  ChatGPT:开启人工智能的新时代 2

1.1 ChatGPT 是什么 2

1.2 ChatGPT 的历史 4

1.2.1 GPT-1:预训练加微调 4

1.2.2 GPT-2:更大更强 5

1.2.3 GPT-3:能力涌现 7

1.2.4 ChatGPT:与 AI 对话 10

1.2.5 GPT-4:多模态 12

1.3 ChatGPT 的应用场景 14

1.4 ChatGPT 的局限性 17

2  从网页到 API:手把手教你使用 ChatGPT20

2.1 使用官方网站与 ChatGPT 进行交互 20

2.2 用 API 的方式访问 ChatGPT27

2.3 使用 ChatGPT 的其他方式 30

3  演进之路:从语言模型到提示工程 37

3.1 什么是语言模型 38

3.2 语言模型的发展历程 40

3.2.1 20 世纪 50 年代之前:雏形初现 40

3.2.2 20 世纪的后五十年:由兴到衰 41

3.2.3 21 世纪:新时代 42

3.3 Transformer 模型的结构和原理 47

3.3.1 注意力机制 47

3.3.2 自注意力机制 48

3.3.3 位置信息 49

3.3.4 缩放点乘注意力 49

3.3.5 多头自注意力 50

3.3.6 多层自注意力 51

3.3.7 交叉注意力 51

3.3.8 完整的 Transformer 模型 52

3.4 语言模型的训练 53

3.4.1 自回归训练 54

3.4.2 基于人工反馈的强化学习 57

3.5 提示工程 61

3.5.1 提示工程是什么 61

3.5.2 设计良好提示的常见技巧 63

3.5.3 提示工程的重要性 70

第 2 部分  提示工程

4  人人都能用 AI:构建提示指令,化解各类难题 74

4.1 难题已攻克:AI 助你跨越语言的障碍 74

4.2 不只是纠错:AI 让语言表达更精准 80

4.3 文学创作新思路:人机协作让作品更具灵感 85

4.4 新闻报道加速器:从收集素材到成稿只需几秒 97

4.5 一问即答:AI 让信息获取更简单 103

4.6 专家意见何处寻:AI 扮演领域专家角色为你答疑解惑 108

4.7 决策神器:如何让 AI 给出明确回答,助你做决定 118

4.8 逻辑驱动的能力提升:数学和编程是一回事儿 122

5  从新手到专家:普通人如何成为提示工程师 131

5.1 词法和句法分析 132

5.1.1 中文分词 133

5.1.2 命名实体 135

5.1.3 词性标注 137

5.1.4 依存句法分析 139

5.1.5 总结 144

5.2 信息抽取 145

5.2.1 关键词提取 145

5.2.2 实体关系抽取 150

5.2.3 结构化事件抽取 153

5.2.4 总结 156

5.3 分类与聚类 157

5.3.1 文本分类 157

5.3.2 情感分析 160

5.3.3 文本聚类 164

5.3.4 总结 172

5.4 理解和问答 172

5.4.1 常识知识问答 172

5.4.2 阅读理解问答 176

5.4.3 问题理解和意图识别 181

5.4.4 总结 188

5.5 受控文本生成 189

5.5.1 文本摘要 189

5.5.2 文本复述 194

5.5.3 数据到文本的生成 199

5.5.4 总结 206

5.6 谣言和不实信息检测 206

第 3 部分  延伸讨论

6  狂欢将至:国产“ChatGPT”接踵而来 216

6.1 元语智能:ChatYuan216

6.2 复旦大学:MOSS218

6.3 百度:文心一言 219

6.4 清华大学:ChatGLM221

6.5 其他 223

7  道阻且长:“ChatGPT”们的缺陷与局限 224

7.1 幻觉:一柄双刃剑 224

7.2 毒性:一个社会问题 231

7.3 记忆:短期的更困难 231

7.4 多模态:到底有什么用 234

参考文献 242




提示工程是什么?

提示工程(Prompt Engineering)是一种针对预训练语言模型(如 ChatGPT),通过设计、实验和优化输入提示来引导模型生成高质量、准确和有针对性的输出的技术。在自然语言处理领域,随着深度学习技术的不断发展,预训练语言模型(如 BERT、GPT 等)已经取得了显著的进展,大大提高了多种自然语言处理任务的性能。虽然这些模型具有很高的性能,但如何有效地引导这些模型来完成特定的任务仍然是一个具有挑战性的问题。于是便有了提示工程这一新技术。

设计良好提示的常见技巧

构建恰当的提示对于充分发挥预训练语言模型的潜力及提高实际应用效果至关重要。通过使用合适的提示技巧,可以引导模型更精确地理解任务需求,从而提高模型在特定任务上的性能。探讨提示工程的技巧能够帮助我们更好地与模型互动,提升模型在回答问题、生成文本等方面的准确性。此外,探讨提示工程的技巧有助于在处理复杂任务时,更好地利用模型的强大表达能力,提高任务完成的质量和效率。以下是一些具体的建议和技巧,以帮助各位读者更好地开展提示工程。


01

多样化的提示方式

不同的任务可能需要不同类型的引导,一个特定的提示方法可能对某些任务非常有效,而对其他任务不那么有效。为了找到最佳的提示方法,可以尝试多种不同的提示策略,然后评估哪一种策略在特定任务上表现得最好。

例如,假设要让模型对一组句子进行情感分析,可以尝试以下多样化的提示策略。

(1)直接询问:直接问模型句子的情感极性:“这句话的情感是积极的还是消极的?”

(2)角色扮演:让模型扮演某个角色,例如一个情感分析专家:“作为一名情感分析专家,你认为这句话的情感是积极的还是消极的?”

(3)使用数值:要求模型用具体的数值来表示情感极性:“请用 0(完全消极)到 10(完全积极)之间的一个数值得分来评估这句话的情感。”

(4)提供选项:给模型提供一个选项列表,并让其从中选择最符合的答案:“下列选项中哪一个最能描述这句话的情感?A.积极 B.中性 C.消极”。

通过尝试这些多样化的提示策略,可以找到对于情感分析任务最有效的方法。读者可以使用类似的方法为其他任务寻找合适的提示策略,从而提高模型在特定任务上的表现。


02

明确地描述问题

通过将问题重新表述为更明确、更易于理解的形式,帮助模型更好地理解任务,称为问题重述。问题重述旨在确保模型能够明确把握任务的核心需求,并且按照期望的方式生成输出。在实践中,问题重述有以下几个关键点。

假设需要模型为一篇文章生成一个摘要。原始问题可能是:“请给这篇文章写个摘要。”为了更好地引导模型理解任务,可以使用问题重述技巧对问题进行优化。

(1)简化问题:将问题简化为:“请总结这篇文章的主要观点。”

(2)明确任务:确保问题明确表明了模型所需执行的任务:“请阅读以下文章,并用两到三句话总结文章的核心观点。”

(3)提供细节:提供更多关于任务的细节:“请阅读以下文章,然后用两到三句话总结文章的核心观点。请确保摘要简洁明了,突出文章的主题。”

(4)使用示例:给出一个示例以帮助模型理解任务背景和期望的输出形式:“例如,如果文章讨论了气候变化的影响,摘要可以是:‘本文探讨了气候变化对全球生态系统的影响。作者指出,温室气体排放和海平面上升是主要的威胁因素。为了应对这些挑战,文章呼吁采取全球性的行动。’请根据这篇文章生成类似的摘要。

问题重述技巧提供了更明确的任务描述、细节和示例,从而帮助模型更好地理解任务并生成更符合要求的输出。这对于提高模型在各种任务上表现出的性能至关重要。


03

提供任务的背景知识

在某些情况下,模型可能需要一些额外的背景知识来更好地解决问题。特别是在一些专业的领域任务中,在输入中提供这些背景信息,可以帮助模型更好地理解问题的背景,生成更准确、更有针对性的答案。

例如,假设我们正在询问模型一个关于特定历史事件的问题,但它可能不具备该事件的相关知识。这时,可以在问题中提供一些关于该事件的背景信息,以帮助模型更好地理解问题。

不提供背景知识的问题示例:

请描述提示工程的概念和作用。

提供背景知识的问题示例:

提示工程是一种针对预训练语言模型(如 ChatGPT),通过设计、实验和优化输入提示(Prompt)来引导模型生成高质量、准确和有针对性的输出的技术。请描述提示工程的概念及其在自然语言处理中的作用。

在没有提供背景知识之前,模型并不清楚提示工程是指什么。在不同的领域中,提示工程也许有不同的含义。通过提供背景知识,使模型理解了背景,明确了概念,生成与问题更相关的准确答案。


04

逐渐增加提示难度

通过逐渐增加提示难度来引导模型解决问题,这种策略叫作梯度提示,是一种重要的提示工程应用技巧。这种方法可以让模型在较低的难度级别上建立基本概念,逐渐向更高的难度级别推进,以提高模型的理解和生成能力。梯度提示的实施步骤如下。

(1)确定任务的难度级别:针对特定任务,将其分解为不同难度级别的子任务。例如,在文本摘要任务中,可以先从简单的关键词提取开始,逐步过渡到生成完整的摘要。

(2)设计提示:为每个难度级别的子任务设计相应的提示。简单级别的提示可以帮助模型理解基本概念,高级别的提示则可以引导模型生成更复杂的输出。

(3)分阶段回答:按照难度级别的顺序,让模型逐个完成对子任务的回答。在完成一个子任务后,对模型的回答进行反馈,帮助模型增进对任务及相关背景知识的理解,以实现梯度学习。

(4)评估与优化:对于每个子任务,评估模型回答的水平,可以根据需要调整提示。

(5)整合输出:将不同难度级别的子任务输出整合成完整的任务结果。例如,在文本摘要任务中,可以将关键词提取和完整摘要生成的结果结合,形成最终的摘要。使用梯度提示技巧,可以更有效地引导模型逐步学习解决问题的方法。这种方法有助于提高模型在复杂任务上的性能,同时降低对模型无法回答的复杂问题产生幻觉回答的风险。


05

在提示中给出例子

提供示例是提示工程最重要的技巧。示例可以帮助模型更好地理解任务需求和期望的输出格式,从而提高模型的生成质量和适用性。

提供示例的方法有以下几个步骤。

(1)确定任务需求:先明确任务的目标和要求,以便为模型提供有针对性的示例。

(2)选择合适的示例:为模型提供具有代表性的示例,使其能够捕捉到任务的关键特征。示例应当简洁明了,易于理解,同时要尽可能覆盖任务的不同方面的要求。

(3)将示例融入输入:将示例以自然、连贯的方式融入输入文本中,让模型能够顺畅地理解和处理。可以使用列表、问答或对话的形式呈现示例,使其更具可读性。

(4)验证模型效果:通过观察模型在示例上的表现,验证示例是否能够有效地引导模型理解任务需求和输出格式。如果模型的表现不佳,则可以尝试调整示例或提示方式。

(5)优化示例:根据模型的反馈,对示例进行优化和调整,以增强其引导效果。可以尝试提供不同类型的示例,或调整示例的数量和顺序。

接下来给出几个明确的例子,帮助读者更好地理解和掌握这一强大的提示工程技巧。

在第一个例子中,假设希望使用预训练语言模型完成一个英语缩写词的解释任务。可以通过提供如下示例帮助模型更好地理解任务需求和期望的输出格式。






输入:“LOL”输出:“Laughing Out Loud”请提供下列英语缩写词的完整解释:1. NASA 2. ASAP
复制代码

在这个例子中,明确地告诉模型任务是解释英语缩写词,并且给出了一个示例(LOL→ Laughing Out Loud),以帮助模型理解期望的输出格式。这样,模型可以更准确地生成符合任务需求的答案。


篇幅有限,更多明确案例还请参考本书,可以更好地理解和掌握这一强大的提示工程技巧。


06

让 ChatGPT 扮演特定的角色

角色扮演是一种在提示工程中常用的技巧,通过让预训练语言模型扮演特定角色,可以引导它生成与所扮演角色相符的输出。这种方法有助于提高输出的准确性、专业性和可读性。通过设置合适的角色和场景,可以激发模型的创造力,从而更好地解决问题并完成任务。

例如,假设需要让 ChatGPT 生成一篇关于健康饮食的文章,从而获取关于营养素摄取的建议。可以让 ChatGPT 扮演一位营养师,以问答的形式向模型提问。这样的提示可能是:

作为一位专业的营养师,请给我一些建议,如何在日常饮食中保证足够的营养素摄取?

通过让模型扮演营养师的角色,可以提高其在这一领域的专业性和可信度,使输出更符合实际需求。


07

多次实验并定量评估

实验与评估是提示工程在实际应用中不可或缺的关键一步,因为它可以帮助我们定量地了解提示的性能,从而更明确其在业务中的表现能力。在实际应用中,需要针对特定任务设计和测试多种提示,然后通过评估确定采用哪种提示为我们的实际业务带来最佳的效果。

在进行实验与评估时,通常会遵循以下步骤。

(1)选择任务:确定要解决的问题或要完成的任务,例如文本分类、情感分析、摘要生成等。

(2)设计提示:针对所选任务,设计多种可能有效的提示。可以使用问题重述、角色扮演等技巧来生成不同的提示。

(3)实验设置:将数据集分为训练集、验证集和测试集。训练集用于训练模型,验证集用于在实验过程中调整提示和模型参数,测试集用于评估最终的模型性能。

(4)实施实验:使用不同的提示训练模型,并记录每个提示的性能指标。这些性能指标可以包括准确率、精确度、召回率、F1 值等,具体取决于任务类型。

(5)分析结果:比较不同提示在验证集上的性能,找出效果最好的提示。可以尝试结合多种提示策略,以进一步提高模型性能。

(6)最终评估:使用选定的最佳提示在测试集上评估模型性能。给出一个更公正、更客观的模型性能指标。通过实验与评估,可以找到适合特定任务的最佳提示方案,并根据实验结果对模型进行调优。这种方法有助于提高模型在各种任务上的泛化能力和准确性。


本文节选自《与 AI 对话:ChatGPT 提示工程揭秘》一书,欢迎阅读本书了解更多详细内容,学习如何更好地与 AI 对话,成为一名合格的提示工程师。




快快扫码抢购吧!

用户头像

还未添加个人签名 2019-10-21 加入

还未添加个人简介

评论

发布
暂无评论
提示工程七巧板:让ChatGPT发挥出最佳性能_博文视点Broadview_InfoQ写作社区