吴恩达Prompt Engining课程案例实践

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 16

本部分代码实践来自吴恩达和 OpenAI 联合开设的短课程 Prompt engineering。仅选取了

部分内容,部分内容做了调整。
课程网站:https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-
for-developers/ 吴恩达 OpenAI

B 站也可以看中文版,可以自行搜索:“吴恩达 prompt engineering”

1 编写 Prompt 的原则

原则一:编写清晰、具体的指令

你应该通过提供尽可能清晰和具体的指令来表达您希望模型执行的操作。这将引导模型给
出正确的输出,并减少你得到无关或不正确响应的可能。编写清晰的指令不意味着简短的
指令,因为在许多情况下,更长的提示实际上更清晰且提供了更多上下文,这实际上可能
导致更详细更相关的输出。

策略一:使用分隔符清晰地表示输入的不同部分,分隔符可以是:```,"",<>,
<tag>,<\tag>等

你可以使用任何明显的标点符号将特定的文本部分与提示的其余部分分开。这可以是任何
可以使模型明确知道这是一个单独部分的标记。使用分隔符是一种可以避免提示注入的有
用技术。提示注入是指如果用户将某些输入添加到提示中,则可能会向模型提供与您想要
执行的操作相冲突的指令,从而使其遵循冲突的指令而不是执行您想要的操作。即,输入
里面可能包含其他指令,会覆盖掉你的指令。对此,使用分隔符是一个不错的策略。

以下是一个例子,我们给出一段话并要求 GPT 进行总结,在该示例中我们使用 ``` 来作


为分隔符

Prompt 案例
把用三个反引号括起来的文本总结成一句话。
```你应该提供尽可能清晰、具体的指示,以表达你希望模型执行的任务。这将引导模
型朝向所需的输出,并降低收到无关或不正确响应的可能性。不要将写清晰的提示与写
简短的提示混淆。在许多情况下,更长的提示可以为模型提供更多的清晰度和上下文信
息,从而导致更详细和相关的输出。```

策略二:要求一个结构化的输出,可以是 Json、HTML 等格式

第二个策略是要求生成一个结构化的输出,这可以使模型的输出更容易被我们解析,例如,
你可以在 Python 中将其读入字典或列表中。。
在以下示例中,我们要求 GPT 生成三本书的标题、作者和类别,并要求 GPT 以 Json 的
格式返回给我们,为便于解析,我们指定了 Json 的键。

Prompt 案例
请生成包括书名、作者和类别的三本虚构书籍清单,
并以 表格的 格式提供,其中包含以下键:book_id、title、author、genre。

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

如果任务做出的假设不一定满足,我们可以告诉模型先检查这些假设,如果不满足,指示
并停止执行。你还可以考虑潜在的边缘情况以及模型应该如何处理它们,以避免意外的错
误或结果。

在如下示例中,我们将分别给模型两段文本,分别是制作茶的步骤以及一段没有明确步骤
的文本。我们将要求模型判断其是否包含一系列指令,如果包含则按照给定格式重新编写
指令,不包含则回答未提供步骤。

Prompt 案例
您将获得由三个引号括起来的文本。\
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:

第一步 - ...
第二步 - …

第N步 - …

如果文本中不包含一系列的指令,则直接写“未提供步骤”。

"""
泡一杯茶很容易。首先,需要把水烧开。\
在等待期间,拿一个杯子并把茶包放进去。\
一旦水足够热,就把它倒在茶包上。\
等待一会儿,让茶叶浸泡。几分钟后,取出茶包。\
如果你愿意,可以加一些糖或牛奶调味。\
就这样,你可以享受一杯美味的茶了。
"""

Prompt 案例
您将获得由三个引号括起来的文本。\
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:
第一步 - ...
第二步 - …

第N步 - …

如果文本中不包含一系列的指令,则直接写“未提供步骤”。

"""
今天阳光明媚,鸟儿在歌唱。\
这是一个去公园散步的美好日子。\
鲜花盛开,树枝在微风中轻轻摇曳。\
人们外出享受着这美好的天气,有些人在野餐,有些人在玩游戏或者在草地上放松。\
这是一个完美的日子,可以在户外度过并欣赏大自然的美景。
"""

策略四:提供少量示例

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

例如,在以下的示例中,我们告诉模型其任务是以一致的风格回答问题,并先给它一个孩
子和一个祖父之间的对话的例子。孩子说,“教我耐心”,祖父用这些隐喻回答。因此,
由于我们已经告诉模型要以一致的语气回答,现在我们说“教我乐观”,由于模型已经有
了这个少样本示例,它将以类似的语气回答下一个任务。

Prompt 案例
你的任务是以一致的风格回答问题。

<孩子>: 教我耐心。
<祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符
开始;最复杂的挂毯以一根孤独的线开始编织。
<孩子>: 教我幽默。

原则二:给模型时间去思考

如果模型匆忙地得出了错误的结论,您应该尝试重新构思查询,请求模型在提供最终答案
之前进行一系列相关的推理。换句话说,如果您给模型一个在短时间或用少量文字无法完
成的任务,它可能会猜测错误。这种情况对人来说也是一样的。如果您让某人在没有时间
计算出答案的情况下完成复杂的数学问题,他们也可能会犯错误。因此,在这些情况下,
您可以指示模型花更多时间思考问题,这意味着它在任务上花费了更多的计算资源。

策略一:指定完成任务所需的步骤
接下来我们将通过给定一个复杂任务,给出完成该任务的一系列步骤,来展示这一策略的
效果
首先我们描述了杰克和吉尔的故事,并给出一个指令。该指令是执行以下操作。首先,用
一句话概括三个反引号限定的文本。第二,将摘要翻译成法语。第三,在法语摘要中列出
每个名称。第四,输出包含以下键的 JSON 对象:法语摘要和名称数。然后我们要用换行
符分隔答案。

Prompt 案例
1-用一句话概括下面用<>括起来的文本。
2-将摘要翻译成英语。
3-在英语摘要中列出每个名称。
4-输出一个 JSON 对象,其中包含以下键:English_summary,num_names。

请使用以下格式:
文本:<要总结的文本>
摘要:<摘要>
翻译:<摘要的翻译>
名称:<英语摘要中的名称列表>
输出 JSON:<带有 English_summary 和 num_names 的 JSON>
Text:
```
在一个迷人的村庄里,兄妹杰克和吉尔出发去一个山顶井里打水。\
他们一边唱着欢乐的歌,一边往上爬,\
然而不幸降临——杰克绊了一块石头,从山上滚了下来,吉尔紧随其后。\
虽然略有些摔伤,但他们还是回到了温馨的家中。\
尽管出了这样的意外,他们的冒险精神依然没有减弱,继续充满愉悦地探索。
```

局限性
虚假知识:模型偶尔会生成一些看似真实实则编造的知识

如果模型在训练过程中接触了大量的知识,它并没有完全记住所见的信息,因此它并不很
清楚自己知识的边界。这意味着它可能会尝试回答有关晦涩主题的问题,并编造听起来合
理但实际上并不正确的答案。我们称这些编造的想法为幻觉。

例如在如下示例中,我们要求告诉我们 Boie 公司生产的 AeroGlide UltraSlim Smart


Toothbrush 产品的信息,事实上,这个公司是真实存在的,但产品是编造的,模型则会一
本正经地告诉我们编造的知识。

Prompt 案例
告诉我 丽宝 公司生产的 AeroGlide UltraSlim Smart Toothbrush 的相关信息
2. 迭代式提示开发

当使用 LLM 构建应用程序时,我从来没有在第一次尝试中就成功使用最终应用程序中所需


的 Prompt。但这并不重要,只要您有一个好的迭代过程来不断改进您的 Prompt,那么你
就能够得到一个适合任务的 Prompt。我认为在提示方面,第一次成功的几率可能会高一些,
但正如上所说,第一个提示是否有效并不重要。最重要的是为您的应用程序找到有效提示
的过程。

因此,在本章中,我们将以从产品说明书中生成营销文案这一示例,展示一些框架,以提
示你思考如何迭代地分析和完善你的 Prompt。

机器学习开发的流程。通常是先有一个想法,然后再实现它:编写代码,获取数据,训练
模型,这会给您一个实验结果。然后您可以查看输出结果,进行错误分析,找出它在哪里
起作用或不起作用,甚至可以更改您想要解决的问题的确切思路或方法,然后更改实现并
运行另一个实验等等,反复迭代,以获得有效的机器学习模型。

在编写 Prompt 以使用 LLM 开发应用程序时,这个过程可能非常相似,您有一个关于要完


成的任务的想法,可以尝试编写第一个 Prompt,满足上一章说过的两个原则:清晰明确,
并且给系统足够的时间思考。然后您可以运行它并查看结果。如果第一次效果不好,那么
迭代的过程就是找出为什么指令不够清晰或为什么没有给算法足够的时间思考,以便改进
想法、改进提示等等,循环多次,直到找到适合您的应用程序的 Prompt。

任务——从产品说明书生成一份营销产品描述
这里有一个椅子的产品说明书,描述说它是一个中世纪灵感家族的一部分,讨论了构造、
尺寸、椅子选项、材料等等,产地是意大利。假设您想要使用这份说明书帮助营销团队为
在线零售网站撰写营销式描述

产品说明书
概述

美丽的中世纪风格办公家具系列的一部分,包括文件柜、办公桌、书柜、会议桌
等。
多种外壳颜色和底座涂层可选。
可选塑料前后靠背装饰( SWC-100)或 10 种面料和 6 种皮革的全面装饰(SWC-
110)。
底座涂层选项为:不锈钢、哑光黑色、光泽白色或铬。
椅子可带或不带扶手。
适用于家庭或商业场所。
符合合同使用资格。
结构

五个轮子的塑料涂层铝底座。
气动椅子调节,方便升降。

尺寸

宽度 53 厘米|20.87 英寸
深度 51 厘米|20.08 英寸
高度 80 厘米|31.50 英寸
座椅高度 44 厘米|17.32 英寸
座椅深度 41 厘米|16.14 英寸

选项

软地板或硬地板滚轮选项。
两种座椅泡沫密度可选:中等(1.8 磅/立方英尺)或高(2.8 磅/立方英尺)。
无扶手或 8 个位置 PU 扶手。

材料
外壳底座滑动件

改性尼龙 PA6/PA66 涂层的铸铝。


外壳厚度:10 毫米。
座椅
HD36 泡沫

原产国
意大利

Prompt 案例:
你的任务是帮助营销团队基于技术说明书创建一个产品的营销描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

技术说明: ```

《这里复制上面的技术说明》
```

问题一:生成文本太长

它似乎很好地写了一个描述,介绍了一个惊人的中世纪灵感办公椅,很好地完成了要求,
即从技术说明书开始编写产品描述。但是当我看到这个时,我会觉得这个太长了。

所以我有了一个想法。我写了一个提示,得到了结果。但是我对它不是很满意,因为它太
长了,所以我会澄清我的提示,并说最多使用 50 个字。

因此,我通过要求它限制生成文本长度来解决这一问题
取出回答并根据空格拆分,答案为 54 个字,较好地完成了我的要求

Prompt 案例:
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

使用最多 50 个词。

技术规格:```这里复制上面的技术说明``

问题二:文本关注在错误的细节上

我们会发现的第二个问题是,这个网站并不是直接向消费者销售,它实际上旨在向家具零
售商销售家具,他们会更关心椅子的技术细节和材料。在这种情况下,你可以修改这个提
示,让它更精确地描述椅子的技术细节。

解决方法:要求它专注于与目标受众相关的方面。

Prompt 案例:
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。

在描述末尾,包括技术规格中每个 7 个字符的产品 ID。

使用最多 50 个单词。

技术规格: ```{这里复制上面技术说明}```
问题三:需要一个表格形式的描述

以上是许多开发人员通常会经历的迭代提示开发的简短示例。我的建议是,像上一章中所
演示的那样,Prompt 应该保持清晰和明确,并在必要时给模型一些思考时间。在这些要求
的基础上,通常值得首先尝试编写 Prompt ,看看会发生什么,然后从那里开始迭代地完
善 Prompt,以逐渐接近所需的结果。因此,许多成功的 Prompt 都是通过这种迭代过程得
出的。我将向您展示一个更复杂的提示示例,可能会让您对 ChatGPT 的能力有更深入的了
解。

这里我添加了一些额外的说明,要求它抽取信息并组织成表格,并指定表格的列、表名和
格式,还要求它将所有内容格式化为可以在网页使用的 HTML。

Prompt 案例:
您的任务是帮助营销团队基于技术说明书创建一个产品的零售网站描述。

根据```标记的技术说明书中提供的信息,编写一个产品描述。

该描述面向家具零售商,因此应具有技术性质,并侧重于产品的材料构造。

在描述末尾,包括技术规格中每个 7 个字符的产品 ID。

在描述之后,包括一个表格,提供产品的尺寸。表格应该有两列。第一列包括尺寸的名
称。第二列只包括英寸的测量值。

给表格命名为“产品尺寸”。

将所有内容格式化为可用于网站的 HTML 格式。将描述放在<div>元素中。

技术规格:```{这里复制上面技术说明}```

3 文本概括 Summarizing¶
当今世界上有太多的文本信息,几乎没有人能够拥有足够的时间去阅读所有我们想了解的
东西。但令人感到欣喜的是,目前 LLM 在文本概括任务上展现了强大的水准,也已经有不
少团队将这项功能插入了自己的软件应用中。

这里我们举了个商品评论的例子。对于电商平台来说,网站上往往存在着海量的商品评论,
这些评论反映了所有客户的想法。如果我们拥有一个工具去概括这些海量、冗长的评论,
便能够快速地浏览更多评论,洞悉客户的偏好,从而指导平台与商家提供更优质的服务。

评论内容:
这个熊猫公仔是我给女儿的生日礼物,她很喜欢,去哪都带着。
公仔很软,超级可爱,面部表情也很和善。但是相比于价钱来说,
它有点小,我感觉在别的地方用同样的价钱能买到更大的。
快递比预期提前了一天到货,所以在送给女儿之前,我自己玩了会。

限制输出文本长度

Prompt 案例:
你的任务是从电子商务网站上生成一个产品评论的简短摘要。

请对三个反引号之间的评论文本进行概括,最多 30 个词汇。

评论: ```{复制上面评论内容}```

关键角度侧重
有时,针对不同的业务,我们对文本的侧重会有所不同。例如对于商品评论文本,物流会
更关心运输时效,商家更加关心价格与商品质量,平台更关心整体服务体验。

我们可以通过增加 Prompt 提示,来体现对于某个特定角度的侧重。


侧重于运输

Prompt 案例:
你的任务是从电子商务网站上生成一个产品评论的简短摘要。

请对三个反引号之间的评论文本进行概括,最多 30 个词汇,只保留产品运输方面的评
价,不要展示和物流无关的内容。

评论: ```{复制上面评论内容}```

侧重于价格与质量

Prompt 案例:
你的任务是从电子商务网站上生成一个产品评论的简短摘要。

请对三个反引号之间的评论文本进行概括,最多 30 个词汇,并且聚焦在产品价格和质量
上。
评论: ```{复制上面评论内容}```

关键信息提取
在 2.2 节中,虽然我们通过添加关键角度侧重的 Prompt,使得文本摘要更侧重于某一特定
方面,但是可以发现,结果中也会保留一些其他信息,如价格与质量角度的概括中仍保留
了“快递提前到货”的信息。有时这些信息是有帮助的,但如果我们只想要提取某一角度
的信息,并过滤掉其他所有信息,则可以要求 LLM 进行 “文本提取(Extract)” 而非
“文本概括(Summarize)”。

Prompt 案例:
你的任务是从电子商务网站上的产品评论中提取相关信息。

请从以下三个反引号之间的评论文本中提取产品运输相关的信息,最多 30 个词汇。

评论: ```{复制上面评论内容}```

4 文本语义推断

在这节课中,你将从产品评论和新闻文章中推断情感和主题。

这些任务可以看作是模型接收文本作为输入并执行某种分析的过程。这可能涉及提取标签、
提取实体、理解文本情感等等。如果你想要从一段文本中提取正面或负面情感,在传统的
机器学习工作流程中,需要收集标签数据集、训练模型、确定如何在云端部署模型并进行
推断。这样做可能效果还不错,但是这个过程需要很多工作。而且对于每个任务,如情感
分析、提取实体等等,都需要训练和部署单独的模型。

大型语言模型的一个非常好的特点是,对于许多这样的任务,你只需要编写一个 prompt 即
可开始产生结果,而不需要进行大量的工作。这极大地加快了应用程序开发的速度。你还
可以只使用一个模型和一个 API 来执行许多不同的任务,而不需要弄清楚如何训练和部署
许多不同的模型。

商品评论文本

这是一盏台灯的评论。
我需要一盏漂亮的卧室灯,这款灯具有额外的储物功能,价格也不算太高。\
我很快就收到了它。在运输过程中,我们的灯绳断了,但是公司很乐意寄送了一个新
的。\
几天后就收到了。这款灯很容易组装。我发现少了一个零件,于是联系了他们的客服,
他们很快就给我寄来了缺失的零件!\
在我看来,Lumina 是一家非常关心顾客和产品的优秀公司!

情感(正向/负向)

现在让我们来编写一个 prompt 来分类这个评论的情感。如果我想让系统告诉我这个评论的


情感是什么,只需要编写 “以下产品评论的情感是什么” 这个 prompt,加上通常的分隔
符和评论文本等等。
然后让我们运行一下。结果显示这个产品评论的情感是积极的,这似乎是非常正确的。虽
然这盏台灯不完美,但这个客户似乎非常满意。这似乎是一家关心客户和产品的伟大公司,
可以认为积极的情感似乎是正确的答案。

Prompt 案例:
以下用三个反引号分隔的产品评论的情感是什么?

评论文本: ```复制上面评论文本```

如果你想要给出更简洁的答案,以便更容易进行后处理,可以使用上面的 prompt 并添加另


一个指令,以一个单词 “正面” 或 “负面” 的形式给出答案。这样就只会打印出 “正
面” 这个单词,这使得文本更容易接受这个输出并进行处理。

Prompt 案例:
以下用三个反引号分隔的产品评论的情感是什么?

用一个单词回答:「正面」或「负面」。

评论文本: ```复制上面评论文本```

识别情感类型

让我们看看另一个 prompt,仍然使用台灯评论。这次我要让它识别出以下评论作者所表达
的情感列表,不超过五个。

Prompt 案例:
识别以下评论的作者表达的情感。包含不超过五个主题。将答案格式化为以逗号分隔的
单词列表。

评论文本: ```{复制上面评论文本}```

大型语言模型非常擅长从一段文本中提取特定的东西。在上面的例子中,评论正在表达情
感,这可能有助于了解客户如何看待特定的产品。
识别愤怒

对于很多企业来说,了解某个顾客是否非常生气很重要。所以你可能有一个类似这样的分
类问题:以下评论的作者是否表达了愤怒情绪?因为如果有人真的很生气,那么可能值得
额外关注,让客户支持或客户成功团队联系客户以了解情况,并为客户解决问题。

Prompt 案例:
以下评论的作者是否表达了愤怒?评论用三个反引号分隔。给出是或否的答案。

评论文本: ```{复制上面评论文本}```

上面这个例子中,客户并没有生气。注意,如果使用常规的监督学习,如果想要建立所有
这些分类器,不可能在几分钟内就做到这一点。我们鼓励大家尝试更改一些这样的
prompt,也许询问客户是否表达了喜悦,或者询问是否有任何遗漏的部分,并看看是否可
以让 prompt 对这个灯具评论做出不同的推论。

从客户评论中提取产品和公司名称

接下来,让我们从客户评论中提取更丰富的信息。信息提取是自然语言处理(NLP)的一部
分,与从文本中提取你想要知道的某些事物相关。因此,在这个 prompt 中,我要求它识别
以下内容:购买物品和制造物品的公司名称。

同样,如果你试图总结在线购物电子商务网站的许多评论,对于这些评论来说,弄清楚是
什么物品,谁制造了该物品,弄清楚积极和消极的情感,以跟踪特定物品或特定制造商的
积极或消极情感趋势,可能会很有用。

在下面这个示例中,我们要求它将响应格式化为一个 JSON 对象,其中物品和品牌是键。

Prompt 案例:
从评论文本中识别以下项目:
- 评论者购买的物品
- 制造该物品的公司

评论文本用三个反引号分隔。将你的响应格式化为以 “物品” 和 “品牌” 为键的


JSON 对象。
如果信息不存在,请使用 “未知” 作为值。
让你的回应尽可能简短。

评论文本: ```{复制上面评论文本}```
如上所示,它会说这个物品是一个卧室灯,品牌是 Luminar,你可以轻松地将其加载到
Python 字典中,然后对此输出进行其他处理。

一次完成多项任务

提取上面所有这些信息使用了 3 或 4 个 prompt,但实际上可以编写单个 prompt 来同时


提取所有这些信息。

Prompt 案例:
从评论文本中识别以下项目:
- 情绪(正面或负面)
- 审稿人是否表达了愤怒?(是或否)
- 评论者购买的物品
- 制造该物品的公司

评论用三个反引号分隔。将您的响应格式化为 JSON 对象,以


“Sentiment”、“Anger”、“Item” 和 “Brand” 作为键。
如果信息不存在,请使用 “未知” 作为值。
让你的回应尽可能简短。
将 Anger 值格式化为布尔值。

评论文本: ```{复制上面评论文本}```

这个例子中,我们告诉它将愤怒值格式化为布尔值,然后输出一个 JSON。大家可以自己尝
试不同的变化,或者甚至尝试完全不同的评论,看看是否仍然可以准确地提取这些内容。

推断主题

大型语言模型的一个很酷的应用是推断主题。给定一段长文本,这段文本是关于什么的?
有什么话题?

一段新闻文本:
在政府最近进行的一项调查中,要求公共部门的员工对他们所在部门的满意度进行评
分。
调查结果显示,NASA 是最受欢迎的部门,满意度为 95%。

一位 NASA 员工 John Smith 对这一发现发表了评论,他表示:


“我对 NASA 排名第一并不感到惊讶。这是一个与了不起的人们和令人难以置信的机会
共事的好地方。我为成为这样一个创新组织的一员感到自豪。”

NASA 的管理团队也对这一结果表示欢迎,主管 Tom Johnson 表示:


“我们很高兴听到我们的员工对 NASA 的工作感到满意。
我们拥有一支才华横溢、忠诚敬业的团队,他们为实现我们的目标不懈努力,看到他们
的辛勤工作得到回报是太棒了。”
调查还显示,社会保障管理局的满意度最低,只有 45%的员工表示他们对工作满意。
政府承诺解决调查中员工提出的问题,并努力提高所有部门的工作满意度。

推断 5 个主题

上面是一篇虚构的关于政府工作人员对他们工作机构感受的报纸文章。我们可以让它确定
五个正在讨论的主题,用一两个字描述每个主题,并将输出格式化为逗号分隔的列表。

Prompt 案例:
确定以下给定文本中讨论的五个主题。

每个主题用 1-2 个单词概括。

输出时用逗号分割每个主题。

给定文本: ```{复制上面新闻}```

为特定主题制作新闻提醒

假设我们有一个新闻网站或类似的东西,这是我们感兴趣的主题:NASA、地方政府、工程、
员工满意度、联邦政府等。假设我们想弄清楚,针对一篇新闻文章,其中涵盖了哪些主题。
可以使用这样的 prompt:确定以下主题列表中的每个项目是否是以下文本中的主题。以 0
或 1 的形式给出答案列表。

Prompt 案例:
判断主题列表中的每一项是否是给定文本中的一个话题,

以列表的形式给出答案,每个主题用 0 或 1。

主题列表:美国航空航天局、当地政府、工程、员工满意度、联邦政府

给定文本: ```{复制上面新闻}```

所以,这个故事是关于 NASA 的。它不是关于当地政府的,不是关于工程的。它是关于员


工满意度的,它是关于联邦政府的。这在机器学习中有时被称为 Zero-Shot 学习算法,因
为我们没有给它任何标记的训练数据。仅凭 prompt,它就能确定哪些主题在新闻文章中涵
盖了。
如果我们想生成一个新闻提醒,也可以使用这个处理新闻的过程。假设我非常喜欢 NASA
所做的工作,就可以构建一个这样的系统,每当 NASA 新闻出现时,输出提醒。
这就是关于推断的全部内容了,仅用几分钟时间,就可以构建多个用于对文本进行推理的
系统,而以前则需要熟练的机器学习开发人员数天甚至数周的时间。这非常令人兴奋,无
论是对于熟练的机器学习开发人员还是对于新手来说,都可以使用 prompt 来非常快速地构
建和开始相当复杂的自然语言处理任务。

5.对话聊天机器人

使用一个大型语言模型的一个令人兴奋的事情是,我们可以用它来构建一个定制的聊天机
器人,只需要很少的工作量。

现在,我们构建一个 “订餐机器人”,我们需要它自动收集用户信息,接受比萨饼店的订
单。

下面是一个复杂的 prompt,你可以复制粘贴到 chatgpt 聊天框,然后和他订餐。

Prompt 案例:

你是订餐机器人,为披萨餐厅自动收集订单信息。

你要首先问候顾客。然后等待用户回复收集订单信息。收集完信息需确认顾客是否还需
要添加其他内容。

最后需要询问是否自取或外送,如果是外送,你要询问地址。

最后告诉顾客订单总金额,并送上祝福。

请确保明确所有选项、附加项和尺寸,以便从菜单中识别出该项唯一的内容。

你的回应应该以简短、非常随意和友好的风格呈现。

菜单包括:

菜品:

意式辣香肠披萨(大、中、小) 12.95、10.00、7.00

芝士披萨(大、中、小) 10.95、9.25、6.50
茄子披萨(大、中、小) 11.95、9.75、6.75

薯条(大、小) 4.50、3.50

希腊沙拉 7.25

配料:

奶酪 2.00

蘑菇 1.50

香肠 3.00

加拿大熏肉 3.50

AI 酱 1.50

辣椒 1.00

饮料:

可乐(大、中、小) 3.00、2.00、1.00

雪碧(大、中、小) 3.00、2.00、1.00

瓶装水 5.00

'''

通过这个例子我们可以看到,通过设计复杂的 prompt 就可以实现复杂的应用,这就是


chatgpt 这类大语言模型来构建应用的基本方法。

You might also like