提示工程玩转 ChatGPT

8db6fa3eb7c9dac54b7d83159f1359fd.png

Prompt engineering is the skill of the future.

目录:

1. 简介 (Introduction)

2. 提示指南 (Prompt Guidelines)

    2.1 指令要清晰明确

    2.2 给模型时间思考

3. 迭代提示 (Iterative Prompt)

    3.1 迭代过程

    3.2 案例展示

4. 文本概括 (Text Summarization)

    4.1 单文本概括

    4.2 多文本概括

5. 文本推断 (Text Inference)

    5.1 情感分类

    5.2 情感识别

    5.3 名称提取

    5.4 多项任务

    5.5 主题推断

6. 文本转换 (Text Transformation)

    6.1 文本翻译

    6.2 语言纠正

    6.3 语气调整

    6.4 格式转换

    6.5 综合案例

7. 文本扩充 (Text Expansion)

    7.1 定制客户邮件

    7.2 使用温度参数

8. 总结 (Conclusion)

1

简介

大语言模型 (large language model, LLM) 已经逐渐进入了人们的生活,而 ChatGPT 就是目前最火的 LLM。对非技术人员要使用 LLM,其实不需要了解 LLM 背后的原理和实现,而只需要知道如何写一个好的提示 (prompt)。提示越清晰明确得到的答案就越有价值,提示工程是未来需要掌握的技能。

本文是学习 Andrew Ng 的 DeepLearning.AI 和 OpenAI 合办的《ChatGPT Prompt Engineering for Developers》课程,课程链接为:https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/。

本文结构如下。第二节提出写提示的两大原则 (principles),即要清晰明确又要给模型时间思考,但写的第一个提示通常差强人意,第三节会列出迭代提示 (iterative prompt) 的过程直到写出一个好的提示。第四到七节分别从文本概括 (summarize)、文本推断 (infer)、文本转换 (transform)、文本扩充 (expand) 来展示 ChatGPT 的应用。最后第八节做总结。

使用 ChatGPT 除了从 OpenAI 官网上注册账号使用,也可在 SignalPlus Trading Tool (https://t.signalplus.com/) 上注册账号并使用,进入主界面点击 +Add a Widget,选取  ChatGPT 即可,如下面视频所示。

2

提示指南

本节列出编写指示的两大原则,并且给出相关的具体策略。两大原则是:

  1. 指令要清晰明确 (write clear and specific instructions)

  2. 给模型时间思考 (give the model time to “think”)



2.1

指令要清晰明确

为了能引导模型输出你想要的答案,你给出的指令要尽可能的清晰和明确。注意,清晰指令不等于简短指令,很多情况下,长指令能更清晰的提供上下文背景,这会使得模型输出更详细更相关。


策略一:使用分隔符使其能够清晰的指代输入的不同部分,分隔符可以是:```, """, < >, <tag></tag> 等。

除了以上分隔符,可以使用任何明显的标点符号将提示中的特定文本部分与剩余部分分开,在中文中分隔符还可以是引号 “”。这么做是为了让模型明确知道这是一个单独标记。

下例给出一段话并要求 ChatGPT 来概括,在该示例中我们使用引号 “” 来作为分隔符。提示的内容如下:

d737197c549ca8b1c25fbb8d892e6c6c.png

注意:提示的内容用以上 Python 的代码形式写出来是为了能更清晰的看出内容,比如用了 \ 来分句便于阅读,在 text 和 prompt 用 f-string 是为了把文本和提示分隔开,注意 “{text}” 两边的引号就是分割符。

但是在 SignalPlus Trading Tool 里,我们不能用上面代码形式输入,只能输入一整个字符串。有的时候字符串太长不便于阅读,这时候就可以参考上看 Python 代码里的字符串,因为两者的功能是一样的,只不过一个便于阅读但不能输入到对话框里,一个不便于阅读但需要输入到对话框里。在 SignalPlus Trading Tool 的运行结果如下:

f1fd6e9754ff586bfd0796599e0924c2.png


策略二:让输出结构化,比如以 JSON 或 HTML 等数据格式。

该策略主要目的是让模型输出更容易被解析,像 JSON 可以很容易在 Python 中读取,而 HTML 也很容易以网页形式展示。

下例要求 ChatGPT 生成三首歌的标题、作者和类别,并以 JSON 的格式返回,为便于解析,我们指定了 JSON 的键包括 song_id, title, author, genre。提示的内容如下:

36abaaa078433b038b96250417a0fb9d.png

在 SignalPlus Trading Tool 里的运行结果如下:

0dcd35031810cbb59521ba519d6a5124.png

策略三:要求模型检查是否满足条件。

每个任务都有一定的假设。我么可以告诉模型先检查这些假设,如果做出任务的假设不满足,指示并停止执行。

在下面两例中,我们将分别给模型两段文本,分别是“冲咖啡的步骤”和“介绍新加坡天气”的文本。我们将要求模型判断其是否包含一系列指令:

  • 如果包含则按照给定格式重新编写指令

  • 如果不包含则回答未提供步骤

包含一系列指令的“冲咖啡的步骤”的文本,提示的内容如下:

cd6cb0b167c1c8e13abd9d8c71836a23.png

在 SignalPlus Trading Tool 里的运行结果如下:

dc9c21289efc3b9e912592bafc209303.png

不包含一系列指令的“介绍新加坡天气”的文本,提示的内容如下:

4f903d6b09c3b0cb02208dfb9b427b10.png

在 SignalPlus Trading Tool 里的运行结果如下:

8cda8dd6ffa9490bb348cf48bc26b0ed.png


策略四:提供少量示例。

在要求模型执行任务之前,提供它少量能成功的执行任务的示例。

在下例中,我们告诉模型其任务是以一致的风格回答问题。这个风格就是“废话文学”风格,比如

    <我> 能力越大

    <他> 能力越大,能力就越大

    <我> 听君一席话

提示的内容如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值