DLAI-ChatGPT-提示词工程笔记-全-
DLAI ChatGPT 提示词工程笔记(全)
001:第1集 引言 🎬

在本节课中,我们将要学习大型语言模型(LLM)的基本概念,以及如何通过有效的提示工程来构建应用程序。课程将重点介绍指令调优型语言模型的最佳实践,并解释其相对于基础语言模型的优势。


欢迎来到面向开发人员的提示工程课程。Isaac 很高兴能与来自 OpenAI 的技术专家共同教授这门课程。她参与开发了流行的 ChatGPT 检索插件,其主要工作是教导人们如何在产品中应用 LLM 技术。她也是 OpenAI Cookbook 的贡献者,该资源旨在指导人们使用这些技术。很高兴她能参与教学,Isaac 也很高兴在此与大家分享一些鼓舞人心的最佳实践。

网络上存在大量关于提示的材料,例如“30个必知提示”这类文章。这些内容大多集中在 ChatGPT 的 Web 用户界面上,用于完成特定的、通常是一次性的任务。然而,我认为 LLM 对于开发者的真正力量在于:通过 API 调用快速构建软件应用程序。这一点目前仍然被低估。
事实上,我在 AI Fund(DeepLearning.AI 的姊妹公司)的团队一直在与众多初创公司合作,将这项技术应用于各种场景。我们看到,LLM API 能让开发者极其快速地构建应用。
因此,在本课程中,我们将与大家分享这些技术的可能性以及实现它们的最佳实践。我们将涵盖大量内容。
以下是本课程的主要学习路径:
- 您将首先学习软件开发中的一些最佳实践。
- 接着,我们将介绍几个常见的用例,包括:总结、推断、转换和扩展。
- 最后,您将使用 LLM 构建一个聊天机器人。
我们希望这能激发您对构建新型应用程序的想象力。
在大型语言模型的发展中,大致存在两种类型,我们称之为基础 LLM 和指令调优 LLM。
- 基础 LLM 基于文本训练数据预测下一个词。它通常在互联网等来源的大量数据上进行训练,以找出下一个最可能出现的词。例如,如果提示“从前,有一只独角兽”,它可能会补全为“它和所有独角兽朋友一起生活在一个神奇的森林里”。如果提示“法国的首都是”,它可能会根据网络文章补全为“法国最大的城市”或“法国的人口是?”,因为网络上的文章可能是关于法国的问答列表。
- 指令调优 LLM 则是当前研究和应用的主要方向。它被训练来遵循指令。例如,如果你问“法国的首都是什么?”,它更可能输出“法国的首都是巴黎”。
指令调优 LLM 的典型训练方式是:首先训练一个基础 LLM,然后使用输入为指令、输出为遵循该指令的结果的示例对其进行微调。之后,通常会采用一种称为 RLHF(基于人类反馈的强化学习) 的技术进一步改进,使系统更能提供帮助并遵循指令。
因为指令调优 LLM 被训练得乐于助人、诚实且无害,所以与基础 LLM 相比,它们输出有问题文本(如有毒内容)的可能性更低。许多实际应用场景已转向使用指令调优 LLM。
您在互联网上找到的一些最佳实践可能更适用于基础 LLM。但对于当今大多数实际应用,我们建议大多数人将重点放在指令调优 LLM 上。它们更易于使用,并且由于 OpenAI 及其他公司的努力,正变得更加安全、一致。因此,本课程将侧重于指令调优 LLM 的最佳实践。
在继续之前,我们建议您在大多数应用中使用指令调优 LLM。
Isaac 想感谢 OpenAI 和 DeepLearning.AI 的团队,他们帮助准备和展示了这些材料。特别感谢 Andrew Main、Joe Palermo、Boris Power、Ted Sanders、Lilian Weng 以及 OpenAI 的许多同事,他们共同构思、审查并整理了这门短期课程的材料。同时,也感谢 DeepLearning.AI 的 Geoff Ludwick、Eddy Shyu 和 Tommy Nelson 所做的工作。


当您使用指令调优 LLM 时,可以将其想象成在给一个聪明但不知晓您任务细节的人下达指令。因此,如果 LLM 未能按预期工作,有时是因为指令不够清晰。
例如,如果您说“请为我写一些关于艾伦·图灵的内容”,那么明确您希望文本侧重于他的科学工作、个人生活还是历史角色会更有帮助。同样,指定文本的语气(如专业记者风格还是随意便条风格)也很重要。
这就像您去找一位朋友帮忙。如果您能提前指定他们应该阅读哪些文本片段来撰写关于艾伦·图灵的文章,那么这位刚毕业的大学生助手就更有可能成功完成任务。
因此,在下一个视频中,您将看到如何做到清晰和具体,这是提示 LLM 的一个重要原则。您还将学习第二个激励原则:给 LLM 时间进行思考。
本节课中,我们一起学习了大型语言模型的基础与指令调优模型之间的区别,并理解了为何指令调优模型更适合大多数实际应用。我们还了解到,有效的提示类似于向一个聪明但需要明确指引的助手下达清晰的指令。下一节,我们将深入探讨如何构建清晰、具体的提示。
002:第2集 📝 提示指南


在本节课中,我们将学习如何编写有效的提示词,以引导大型语言模型(如ChatGPT)生成更准确、更符合预期的输出。课程将围绕两个核心原则展开,并通过具体策略和代码示例进行讲解。




原则一:编写明确且具体的指令 ✍️

第一个核心原则是向模型提供明确且具体的指令。清晰的指令能引导模型产生所需的输出,并减少无关或不正确答案的出现。请注意,清晰的指令不一定是简短的指令,有时更长的提示能提供更多上下文,从而获得更详细和相关的输出。
以下是实现这一原则的四个具体策略。

策略一:使用分隔符

使用分隔符可以清晰地标示出输入文本的不同部分,帮助模型准确理解需要处理的内容。分隔符可以是三重反引号、引号、XML标签等任何清晰的标点符号。
以下是使用分隔符总结文本的示例:


text = """在这里插入需要总结的文本内容。"""
prompt = f"""
请总结由三重反引号分隔的文本。
用一句话完成总结。
```{text}```
"""
response = get_completion(prompt)
print(response)

使用分隔符还能有效防止“提示注入”(Prompt Injection),即用户输入可能包含与你的指令相矛盾的指令。通过分隔符,模型能明确区分指令和待处理的文本。
策略二:要求结构化输出

为了便于后续处理,可以要求模型以JSON或HTML等结构化格式输出结果。

以下是一个要求JSON格式输出的示例:


prompt = """
请生成包含三本虚构书籍的列表。
每本书需包含书名、作者和体裁。
以JSON格式输出,并包含以下键:book_id, title, author, genre。
"""
response = get_completion(prompt)
print(response)

这样,输出结果可以直接被Python读入字典或列表,便于程序化处理。


策略三:要求模型检查条件

如果任务基于某些可能不成立的假设,可以指示模型先检查这些条件。如果条件不满足,则停止执行任务或进行相应处理。

以下是指示模型检查文本是否包含指令的示例:



text_1 = """泡一杯茶需要以下步骤:1. 烧水。 2. 放入茶叶。 3. 等待片刻。 4. 享用。"""
prompt = f"""
您将获得由三引号分隔的文本。
如果文本包含一系列指令,请按以下格式重写这些指令:
步骤 1 - ...
步骤 2 - ...
...
如果文本不包含指令,则直接输出“未提供步骤”。
\"\"\"{text_1}\"\"\"
"""
response = get_completion(prompt)
print("文本1的检查结果:", response)


策略四:使用少量示例提示(Few-shot Prompting)


通过提供少量成功执行任务的示例,可以引导模型以一致的风格完成新任务。


以下是一个使用示例引导模型回答风格的示例:

prompt = """
请以一致的风格回答。
<孩子>:请教我耐心。
<祖父母>:耐心就像一条河流,它不急于到达大海,而是在流淌中塑造两岸。
<孩子>:请教我韧性。
"""
response = get_completion(prompt)
print(response)

模型会根据提供的示例,用类似的隐喻风格来回答关于“韧性”的问题。


原则二:给予模型充足的“思考”时间 ⏳
第二个核心原则是给予模型充足的“思考”时间。如果模型因急于得出结论而犯错,你应该尝试重构查询,要求模型在给出最终答案前,先进行一系列相关的推理。这相当于让模型在任务上投入更多的计算精力。


以下是实现这一原则的两个策略。

策略一:指定任务步骤


将复杂任务分解为明确的步骤,可以引导模型更有条理地工作,并产出更可控的输出。


以下是指定多步骤任务的示例:


text = """在这里插入关于杰克和吉尔的故事文本。"""
prompt = f"""
请执行以下操作:
1. 用一句话总结由三重反引号分隔的文本。
2. 将摘要翻译成法语。
3. 列出法语摘要中出现的每个人名。
4. 输出一个JSON对象,包含 `french_summary` 和 `num_names` 两个键。


请用换行符分隔每个回答。


文本:```{text}```
"""
response = get_completion(prompt)
print(response)


为了获得更标准化的输出格式,你甚至可以指定模型输出的具体结构:

prompt = f"""
请执行以下操作:
1. 总结由<>分隔的文本。
2. 将摘要翻译成法语。
3. 列出法语摘要中出现的每个人名。
4. 输出一个包含 `french_summary` 和 `num_names` 的JSON对象。


请使用以下格式:
文本:<待总结文本>
摘要:<摘要>
翻译:<法语翻译>
人名:<人名列表>
输出JSON:<json>



文本:<{text}>
"""


策略二:指导模型自主推导解决方案

在模型判断对错之前,先指示它自己推导出解决方案,然后将自己的方案与给定方案进行比较,这能显著提高判断的准确性。


以下是一个判断学生数学答案正误的改进示例:
question = """
一个工厂生产零件。总成本由固定成本100,000美元和每平方英尺10美元的绝缘成本组成。
设x为绝缘面积(平方英尺),请写出总成本C(x)的公式。
"""
student_solution = “C(x) = 100,000 + 450x” # 学生的错误答案

prompt = f"""
请判断学生的答案是否正确。
请按以下步骤操作:
- 首先,自己推导出问题的正确解法。
- 然后,将你的解法与学生的解法进行比较。
- 最后,判断学生的答案是否正确。


请使用以下格式输出:
问题:<问题>
学生解答:<学生解答>
实际解答:<你的推导步骤和最终公式>
结果:<[一致/不一致]>
学生成绩:<[正确/不正确]>


问题:{question}
学生解答:{student_solution}
"""
response = get_completion(prompt)
print(response)


通过这种方式,模型会先计算出正确公式(C(x) = 100,000 + 10x),然后发现与学生答案不一致,从而得出学生答案不正确的结论。



模型的局限性与“幻觉”问题 🧠



了解大型语言模型的局限性对于开发应用至关重要。模型在训练中接触了大量知识,但并未完全记住,也不清楚自己知识的边界。因此,当遇到生僻话题时,它可能会编造听起来合理但实际错误的信息,这种现象被称为“幻觉”(Hallucination)。

以下是一个模型产生“幻觉”的示例:


prompt = “请告诉我关于‘AeroGlide UltraSlim Smart Toothbrush’这款牙刷的详细信息。”
response = get_completion(prompt)
print(response)

模型可能会生成一段关于这个虚构产品的、听起来非常真实的描述。为了减少幻觉,一个有效的策略是要求模型在基于给定文本回答时,先从中找出相关引用,并用这些引用来支撑它的答案。


总结 📚


在本节课中,我们一起学习了编写有效提示词的两个核心原则及其具体策略:


- 原则一:编写明确且具体的指令。我们学习了使用分隔符、要求结构化输出、检查任务条件以及使用少量示例提示(Few-shot Prompting)这四种策略。
- 原则二:给予模型充足的“思考”时间。我们学习了通过指定任务步骤和指导模型自主推导解决方案,来提升复杂任务处理的准确性。
- 模型的局限性。我们了解了模型可能产生“幻觉”的问题,并知道了通过要求引用原文来减少幻觉的基本思路。

掌握这些原则和策略,将帮助你更有效地与大型语言模型交互,构建出更可靠的应用。
003:迭代开发提示词 🚀


在本节课中,我们将学习如何通过迭代过程来开发和优化提示词。与机器学习模型的训练类似,构建有效的提示词很少能一蹴而就。我们将通过一个具体的例子,展示如何从一个初步想法开始,逐步调整提示词,直至获得满足特定应用需求的结果。

概述:迭代开发的重要性

当我使用大型语言模型构建应用程序时,很少第一次尝试就能得到完美的结果。这并不重要,关键在于拥有一个良好的迭代过程,能够持续改进提示词,最终找到对目标任务非常有效的方案。
你可能听我说过,训练机器学习模型时,第一次尝试也几乎不会成功。事实上,我对第一个模型能正常工作常常感到惊讶。对于提示词工程也是如此,第一次尝试就成功并不关键,更重要的是获得一个适合您应用程序的提示词开发流程。
迭代开发流程 🔄
如果您上过我的机器学习课程,可能见过一个图表,描述了机器学习开发的迭代过程:产生想法、编写代码、获取数据、训练模型、获得实验结果、分析输出、进行误差分析,然后根据分析结果调整想法或实现方式,并再次运行实验。这个过程会不断重复,直到获得有效的机器学习模型。

对于编写提示词和开发基于语言模型的应用程序,过程可以非常相似:
- 明确您想要完成的任务。
- 首次尝试编写一个提示词,确保其清晰、具体,并在适当时给予模型“思考时间”。
- 运行提示词并查看结果。
- 如果结果不理想,分析原因(例如,指令不够清晰,或未给算法足够时间思考)。
- 根据分析完善想法和提示词。
- 多次循环此过程,直到获得适用于您应用程序的提示词。


这就是为什么我个人不太关注那些所谓的“完美提示词列表”。可能并不存在一个适用于所有场景的完美提示词。更重要的是,您拥有一个能为特定应用程序开发出优秀提示词的流程。


代码示例:产品描述生成

让我们通过一个代码示例来具体了解如何迭代开发提示词。我们将使用一个产品技术规格说明,目标是帮助营销团队为在线零售网站撰写产品描述。

以下是产品规格说明:
概述介绍:部分美丽的世纪中期灵感家庭办公家具系列,包括文件柜、书桌、书架、会议桌等。多种外壳颜色和底座涂层可选。可选塑料背面和前面软垫(SWC-100)或全软垫(SWC-110),10种面料和6种皮革可选。底座有五种颜色可选。座椅有带倾角调节和座椅高度升降机制的软垫。可定制尺寸,适用于家庭或商业环境。可选尺寸:宽度53厘米/20.87英寸,深度51厘米/20.08英寸,高度80厘米/31.5英寸,座椅高度44厘米/17.32英寸,座椅深度41厘米/16.14英寸。选项:软地板或硬地板脚轮。两种座椅泡沫密度可选:中等(1.8磅/立方英尺)或高(2.8磅/立方英尺)。无扶手或8个位置可调节扶手。内置产品:修改机制,终身保修。制造国:意大利。


第一次尝试:基础提示


我的第一个提示词想法是:
您的任务是帮助营销团队基于技术规格说明,为零售网站创建产品描述。
根据```标记的技术规格说明,编写产品描述。


运行后,我们得到了一个结果。它写得很好,例如“介绍一款令人惊叹的世纪中期风格办公椅……”,但描述非常冗长。它完全按照我的要求,从技术规格中生成了产品描述,但长度超出了我的预期。

第二次迭代:控制输出长度
由于第一次的结果太长,我决定澄清我的提示,要求更短的输出。我修改了提示词:
您的任务是帮助营销团队基于技术规格说明,为零售网站创建产品描述。
根据```标记的技术规格说明,编写产品描述。
最多使用50个单词。

再次运行后,我们得到了一个更简短的描述:“介绍世纪中期风格的办公椅,……既时尚又实用。” 这看起来好多了。我们可以检查长度,它大约是52个单词。大型语言模型并不总是能精确遵循字数指示,但结果通常是合理的。

您也可以尝试其他方式控制长度,例如:
最多使用3句话。最多使用280个字符。
第三次迭代:调整目标受众

接下来,我们可能决定这个网站不是直接面向消费者,而是面向家具零售商。因此,我们需要提示词生成更技术性、专注于材料和构造的描述。我进一步修改了提示词:
您的任务是帮助营销团队基于技术规格说明,为零售网站创建产品描述。
根据```标记的技术规格说明,编写产品描述。
描述面向家具零售商,因此应更具技术性,并专注于材料、产品构造。
最多使用50个单词。

运行后,输出变成了:“介绍世纪中期风格办公椅,……涂层铝底座……优质材料……” 通过改变提示词,我们使其更专注于特定的角色和所需的特征。



第四次迭代:添加特定信息


观察结果后,我决定在描述末尾还需要包含产品ID。技术规格中提到了产品ID,例如“SWC-100”或“SWC-110”。因此,我再次改进提示词:
您的任务是帮助营销团队基于技术规格说明,为零售网站创建产品描述。
根据```标记的技术规格说明,编写产品描述。
描述面向家具零售商,因此应更具技术性,并专注于材料、产品构造。
在描述末尾,包含每个7字符的产品ID。
最多使用50个单词。

运行后,输出如:“介绍世纪中期风格办公椅,外壳颜色可选……塑料涂层铝底座……产品ID:SWC-100, SWC-110。” 这看起来很不错。


您刚才看到的是一个简短的迭代式快速开发示例,许多开发者都会经历这个过程。

核心实践与复杂示例

在开发提示词时,我通常会牢记上一个视频中提到的最佳实践指南:清晰、具体,并在必要时给模型时间思考。通常的流程是:首次尝试编写提示词,观察结果,然后从那里开始迭代,不断改进提示词,以越来越接近您需要的结果。

许多您在各种程序中看到的成功提示词,都是通过这样的迭代过程产生的。


为了展示更复杂的可能性,这里有一个更高级的提示词示例:
您的任务是帮助营销团队基于技术规格说明,为零售网站创建产品描述。
根据```标记的技术规格说明,编写产品描述。
描述面向家具零售商,因此应更具技术性,并专注于材料、产品构造。
在描述末尾,包含每个7字符的产品ID。
在描述之后,提供一个包含产品尺寸的表格。
将所有内容格式化为HTML。


在实践中,您会得到这样的提示词,通常是在多次迭代之后。几乎没有人能在第一次尝试时就写出如此精确的提示词来让系统处理规格说明。


总结与进阶建议 🎯


本节课中,我们一起学习了提示词开发是一个迭代的过程。关键步骤是:尝试一些想法,观察结果是否完全符合预期,思考如何澄清指令或给予模型更多“思考”空间,从而使其更接近您想要的结果。
我认为,成为一名有效的提示词工程师的关键,不在于知道完美的提示词是什么,而在于拥有一个良好的流程来开发对您的应用程序有效的提示词。
在本视频中,我演示了如何仅使用一个示例来开发提示词。对于更复杂的应用程序,有时您会处理多个示例(例如十个、五十个甚至一百个规格说明),并基于大量案例迭代开发和评估提示词。但对于大多数应用程序的早期开发,许多人只从一个例子开始。
对于更成熟的应用程序,有时根据一组更大的示例(例如在几十个规格说明上测试不同的提示词变体)来评估提示词的平均或最差情况表现是有用的。但这通常是在应用程序更加成熟、需要依靠这些指标来推动最后几步增量改进时才进行的操作。

请务必尝试Jupyter代码笔记本中的示例,尝试不同的变化,看看您会得到什么结果。完成后,让我们进入下一个视频,在那里我们将讨论大型语言模型在软件应用中的一个非常常见的用途:文本总结。
004:使用大语言模型进行文本摘要 📝

在本节课中,我们将学习如何使用大型语言模型(LLM)来总结文本。文本摘要是一项非常实用的功能,可以帮助我们快速理解大量信息,例如产品评论、新闻文章或长文档。我们将从基础开始,逐步学习如何编写提示词来控制摘要的长度和侧重点,并最终实现批量处理多个评论。

概述
当今世界信息过载,文本数量庞大,我们几乎没有时间阅读所有感兴趣的内容。大型语言模型最激动人心的应用之一,就是用它来总结文本。许多团队已经将这项功能集成到各种软件中。无论是通过聊天界面,还是通过编程方式,我们都可以利用LLM高效地生成文本摘要。

上一节我们介绍了大语言模型的基本应用场景,本节中我们来看看如何具体实现文本摘要功能。

基础设置

首先,我们需要进行一些基础设置,包括导入必要的库和加载API密钥。以下是初始化代码示例:
import openai
# 加载你的API密钥
openai.api_key = "你的API密钥"

def get_completion(prompt, model="gpt-3.5-turbo"):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=0,
)
return response.choices[0].message["content"]

这段代码定义了一个辅助函数 get_completion,它将帮助我们向模型发送提示并获取回复。
生成基础摘要

现在,让我们尝试总结一段产品评论。假设我们运营一个电子商务网站,拥有大量用户评论。总结这些长评论可以帮助我们快速浏览更多反馈,从而更好地了解客户的想法。
以下是一个生成简短摘要的提示词示例:
提示词:
你的任务是为一个电子商务网站的产品评论生成简短摘要。
请总结以下用三重反引号分隔的评论,摘要字数不超过30字。

评论:```女儿生日得到了这个熊猫毛绒玩具,她非常喜欢并且走到哪里都带着它。玩具柔软可爱,价格也适中,而且比预期提前一天送达。```

运行上述提示后,模型可能会生成如下摘要:
柔软可爱的毛绒玩具,女儿很喜欢,价格适中且提前送达。

这是一个相当不错的总结。通过调整提示词中关于字数或句子数的要求,我们可以轻松控制摘要的长度。

生成有针对性的摘要

有时,我们生成摘要可能带有特定目的。例如,如果我们想向运输部门提供反馈,我们可以修改提示词来反映这一侧重点。

以下是针对运输部门的提示词示例:
提示词:
你的任务是为一个电子商务网站的产品评论生成简短摘要,以向运输部门提供反馈。
请总结以下用三重反引号分隔的评论,专注于提及产品运输和交付方面的内容。摘要字数不超过30字。

评论:```女儿生日得到了这个熊猫毛绒玩具,她非常喜欢并且走到哪里都带着它。玩具柔软可爱,价格也适中,而且比预期提前一天送达。```

运行后,摘要可能更侧重于交付信息:
产品比预期提前一天送达。

同样地,如果我们想为定价部门生成摘要,可以要求模型专注于与价格和价值感知相关的方面。
提示词:
你的任务是为一个电子商务网站的产品评论生成简短摘要,以向定价部门提供反馈。
请总结以下用三重反引号分隔的评论,专注于提及产品价格和价值感知相关的方面。摘要字数不超过30字。
评论:```女儿生日得到了这个熊猫毛绒玩具,她非常喜欢并且走到哪里都带着它。玩具柔软可爱,价格也适中,而且比预期提前一天送达。```
生成的摘要可能如下:

价格适中,但相对于玩具尺寸可能偏高。
通过这种方式,我们可以为不同的业务部门(如产品部门)生成定制化的摘要,提取对他们最有价值的信息。

提取信息而非总结

在某些情况下,我们可能不需要完整的总结,而是希望直接提取特定信息。例如,如果只想知道与运输相关的具体事实,可以使用提取信息的提示词。

提示词:
你的任务是从以下用三重反引号分隔的产品评论中,提取与运输部门相关的信息。
请仅提取事实,不要进行总结。
评论:```女儿生日得到了这个熊猫毛绒玩具,她非常喜欢并且走到哪里都带着它。玩具柔软可爱,价格也适中,而且比预期提前一天送达。```

模型可能会回复:

比预期提前一天送达。

这种方法在需要获取非常具体的事实时非常有用。
批量处理多个评论

在实际工作中,我们经常需要处理大量文本。以下是如何使用循环来批量总结多个产品评论的示例。

首先,我们定义几个评论:
review_1 = """女儿生日得到了这个熊猫毛绒玩具...(此处为完整评论内容)"""
review_2 = """卧室的灯具有三档亮度...(此处为完整评论内容)"""
review_3 = """我的牙医推荐了这款电动牙刷...(此处为完整评论内容)"""
review_4 = """这套17件的搅拌机系统在季节促销时购买...(此处为完整评论内容)"""

reviews = [review_1, review_2, review_3, review_4]
然后,我们遍历列表,为每个评论生成摘要:

for i in range(len(reviews)):
prompt = f"""
你的任务是为一个电子商务网站的产品评论生成简短摘要。
请总结以下用三重反引号分隔的评论,摘要字数不超过20字。
评论:```{reviews[i]}```
"""
response = get_completion(prompt)
print(f"评论 {i+1} 摘要:{response}\n")
运行上述代码,我们可以快速获得所有评论的简短摘要。对于一个拥有数百条评论的网站,你可以利用这种方法构建一个仪表板,展示摘要,让管理者能够快速浏览客户反馈,并决定是否点击查看完整评论。
总结

本节课中,我们一起学习了如何使用大型语言模型进行文本摘要。我们从生成基础摘要开始,然后探索了如何通过修改提示词来生成针对不同部门(如运输、定价)的有侧重点的摘要。我们还学习了如何提取特定信息,以及如何批量处理多个评论以提高效率。

文本摘要是一个强大的工具,可以帮助你或你的用户从海量文本中快速获取核心信息。在下一节课中,我们将探讨大语言模型的另一项能力:使用文本进行推理,例如快速判断产品评论的情感倾向是积极还是消极。
005:推理 🧠


在本节课中,我们将学习如何利用大型语言模型(LLM)进行推理任务。推理任务是指模型接收文本输入,并执行某种分析,例如提取情感、识别主题或抽取特定信息。我们将看到,通过精心设计的提示词,无需训练和部署多个专用模型,就能快速完成这些复杂的自然语言处理任务。


什么是推理任务?🤔

上一节我们介绍了课程概述,本节中我们来看看什么是推理任务。推理任务是指模型以文本为输入,并执行某种分析。这些分析可能包括提取标签、提取名称、理解文本情感等。

在传统机器学习工作流程中,你必须收集标签数据集、训练模型、部署模型并进行推断。这个过程虽然有效,但工作量巨大。对于每个不同的任务,如情感分析与实体提取,你都需要训练和部署单独的模型。
大型语言模型的一个显著优势在于,对于许多此类任务,你只需编写一个提示词,它就能立刻生成结果。这在应用开发方面带来了巨大的速度提升。你可以使用同一个模型、同一个API来完成许多不同的任务,而无需处理多个模型的训练和部署。


情感分析示例 💡

让我们通过代码示例来看看如何利用这一点。以下是一段常见的起始代码,我们将使用一盏台灯的评论作为激励性示例。

# 评论文本
review = "这不是卧室里的一盏好灯。这个还有一个额外的存储空间等等。"

基础情感分类

如果我想让系统告诉我这段评论的情感是什么,我可以编写以下提示词:
对以下产品评论的情感是什么?用通常的分隔符和评论文本。
评论文本:```这不是卧室里的一盏好灯。这个还有一个额外的存储空间等等。```

运行后,模型可能会输出:“产品评论的情感是正面的。” 实际上,评论中提到“这盏灯并不完美,但这位顾客似乎很高兴”,所以正面情感似乎是正确的答案。
获取简洁输出

现在,模型输出了整个句子。如果你想得到更简洁的回复以便后期处理,可以修改提示词,要求单字答案。

对以下产品评论的情感是什么?用通常的分隔符和评论文本。请用单字回答,只能是“正面”或“负面”。
评论文本:```这不是卧室里的一盏好灯。这个还有一个额外的存储空间等等。```

这样,模型将只输出“正面”,使文本更容易处理和利用。


提取特定信息 📋
以下是另一个提示词示例,它要求从同一评论中提取更具体的信息。

大型语言模型很擅长从文本中提取特定内容。在这个例子中,我们要求提取评论中表达的情感列表。

识别以下评论中表达的情感列表。此列表不超过5项。
评论文本:```这不是卧室里的一盏好灯。这个还有一个额外的存储空间等等。```

这有助于理解客户对特定产品的看法。对于客户支持组织而言,理解特定用户是否极度不满非常重要。例如,你可以构建一个分类器来识别评论者是否表达愤怒。

以下评论是否表达了愤怒?
评论文本:```这不是卧室里的一盏好灯。这个还有一个额外的存储空间等等。```
如果顾客非常生气,可能值得客户支持团队额外关注。在这个例子中,顾客并不生气。如果你想构建所有类似的分类器,使用监督学习几乎不可能在几分钟内完成。但通过提示词,你可以快速实现。

建议你暂停视频,尝试修改提示词。例如,询问顾客是否表达喜悦,或者询问产品是否有遗漏部件,看看能否得到不同的推断结果。

信息抽取与结构化输出 🗂️

回顾一下,让我展示更多你能用这个系统做的事情。信息抽取是自然语言处理的一部分,涉及从文本中提取你想要知道的信息。

在这个提示词中,我要求模型识别购买物品和制造公司。

识别以下项目:购买物品和公司名称。
评论文本:```这不是卧室里的一盏好灯。这个还有一个额外的存储空间等等。```
请将答案格式化为JSON对象,以“物品”和“品牌”为键。


运行后,模型可能输出:
{"物品": "台灯", "品牌": "Luminous"}
这个JSON结果可以轻松加载到Python字典中进行进一步处理。这对于分析大量评论、找出生产物品的公司、或跟踪特定物品或制造商的情绪趋势非常有用。


多任务单一提示 🎯
在之前的示例中,你看到了如何编写提示词来识别情感、判断是否生气,以及提取物品和品牌。提取所有这些信息的一种方法是使用三四个不同的提示词,并多次调用模型。

但实际上,你可以编写一个单一的提示词,同时提取所有这些信息。

识别以下细项:
1. 评论者的情感。
2. 评论者是否表达愤怒?(以布尔值回答)
3. 购买的物品。
4. 制造该物品的公司。
请将答案格式化为JSON对象。
评论文本:```这不是卧室里的一盏好灯。这个还有一个额外的存储空间等等。```

运行后,模型可能输出:
{
"情感": "正面",
"愤怒": false,
"物品": "带附加存储的台灯",
"品牌": "Luminous"
}

这样,你就可以仅用一个提示词从一个文本中提取多个字段。和往常一样,请随时暂停视频并尝试不同的变化,或者输入完全不同的评论,看看模型是否仍能准确提取这些内容。

主题推断 📰

大型语言模型的一个很酷的应用是推断主题。给定一段长文本,模型可以判断文本是关于什么的,以及涉及哪些主题。

这是一篇虚构的关于政府工作人员对其工作单位感受的报纸文章。

最近政府进行的一项调查显示,NASA是一个受欢迎的部门,员工满意度很高。我是一名NASA的粉丝,我爱他们所做的工作。
我们可以使用以下提示词进行询问:

确定以下文本中讨论的五个主题。让每个主题为一至两个单词长。
文本:```最近政府进行的一项调查显示,NASA是一个受欢迎的部门,员工满意度很高。我是一名NASA的粉丝,我爱他们所做的工作。```
请以逗号分隔的列表形式回复。
运行后,我们可能得到:“政府调查,工作满意度,NASA,员工情绪,联邦机构”。这个列表可以被分割成一个Python列表,用于索引不同主题。

零样本学习与主题分类 🎭
假设我们是一个新闻网站,我们有一个预定义的主题列表:["地方政府", "工程", "员工满意度", "联邦政府"]。我们想弄清楚,给定一篇新闻文章,这些主题中有哪些被涵盖。

以下是一个可以使用的提示词:

确定以下主题列表中每个项目,是否是给定文本下的主题。
主题列表:["地方政府", "工程", "员工满意度", "联邦政府"]
请为每个主题输出“1”(是)或“0”(否)。
文本:```最近政府进行的一项调查显示,NASA是一个受欢迎的部门,员工满意度很高。我是一名NASA的粉丝,我爱他们所做的工作。```
运行后,模型可能输出:[0, 0, 1, 1]。这表示文章是关于“员工满意度”和“联邦政府”的,而不是关于“地方政府”或“工程”的。
在机器学习中,这有时被称为零样本学习算法,因为我们没有提供任何标记的训练数据。仅凭一个提示词,它就能确定这些主题中有哪些被涵盖在那篇新闻文章中。
如果你想生成新闻警报(例如,每当有NASA新闻时弹出警报),你可以构建一个系统来处理文章、找出主题,如果主题包括NASA,则打印“新NASA故事”。
注意:上面使用的提示词输出格式(列表)可能不够健壮。在生产系统中,你可能希望它以JSON格式输出答案,因为大型语言模型的输出可能有点不一致。这是一个很好的练习,看完视频后,你可以尝试修改提示词,要求以JSON格式输出,从而获得更健壮的方法来判断特定文章是否是关于NASA的故事。

总结 📝

本节课中我们一起学习了如何利用大型语言模型进行推理任务。我们看到了如何通过提示词快速完成情感分析、信息抽取和主题推断等复杂任务,而无需传统的模型训练和部署流程。
- 核心优势:使用单一模型和API,通过提示词快速完成多种任务,极大提升了开发效率。
- 关键技巧:设计清晰的提示词,指定输出格式(如单字、JSON),可以方便后续处理。
- 应用场景:从客户评论分析到新闻主题分类,推理能力为构建智能应用打开了新的大门。

在下一个视频中,我们将继续探讨大型语言模型的其他激动人心的功能,并转向文本转换任务,例如将文本翻译成另一种语言。
006:文本转换



在本节课中,我们将学习如何利用大型语言模型进行文本转换。这包括语言翻译、语气转换、格式转换以及拼写和语法检查。通过学习这些技巧,你可以让模型帮助你处理多种文本处理任务。



大型语言模型非常擅长将其输入转换为不同的格式。例如,将一种语言的文本转换成另一种语言,或者帮助进行拼写和语法纠正。输入一段可能不完全符合语法的文字,模型可以帮你整理。它还能转换格式,例如将HTML转换为JSON。这些应用在过去实现起来可能比较复杂,但现在使用大型语言模型和一些提示词,过程会简单得多。

🌍 语言翻译


上一节我们介绍了文本转换的基本概念,本节中我们来看看具体的翻译任务。大型语言模型在来自互联网等多种来源的大量文本上训练,其中包含许多不同的语言。这赋予了模型翻译的能力,使其能以不同的熟练程度处理数百种语言。


以下是几个翻译示例:


示例1:英译西
- 提示:将以下英文文本翻译成西班牙文:
Hi, I'd like to order a blender. - 回应:
Hola, me gustaría ordenar una licuadora.


示例2:语言识别
- 提示:告诉我这是什么语言:
Combien coûte le lampadaire? - 回应:
这是法语。
该模型还可以一次性处理多个翻译任务。


示例3:多语言翻译
- 提示:翻译下面的文本为英语和西班牙语:
I want to order a basketball. - 回应:
- 英语:
I want to order a basketball. - 西班牙语:
Quiero ordenar un balón de baloncesto.
- 英语:


在某些语言中,翻译会根据说话者与听者的关系而变化。你也可以向语言模型解释这一点,使其能够进行相应的翻译。



示例4:正式与非正式翻译
- 提示:将下列文本分别翻译成西班牙语的正式和非正式形式:
¿Quieres pedir una almohada? - 回应:
- 正式:
¿Desea usted pedir una almohada? - 非正式:
¿Quieres pedir una almohada?
- 正式:

构建通用翻译器



假设我们负责一家跨国电子商务公司,用户会用各种语言提交信息。我们需要一个通用翻译器来处理这些问题。


以下是实现步骤:

- 首先,我们准备一个包含不同语言用户消息的列表。
user_messages = [ "La performance du système est plus lente que d'habitude.", "Mi monitor tiene píxeles que no se iluminan.", "Il mio mouse non funziona", "Mój klawisz Ctrl jest zepsuty", "我的屏幕在闪烁" ] - 然后,我们循环处理每条消息,让模型识别语言并将其翻译成目标语言(如英语和韩语)。
for issue in user_messages: prompt = f"""请告诉我以下文本是什么语言,并将其翻译成英语和韩语: ```{issue}``` """ response = get_completion(prompt) print(response)
通过这种方式,你可以快速构建一个通用翻译器。你可以随时暂停,添加其他你想尝试的语言,看看模型表现如何。


✍️ 语气与格式转换
写作可以根据预期受众的不同而调整。例如,给同事的邮件和给弟弟的短信语气会截然不同。ChatGPT可以帮助生成不同的语气。



示例5:俚语转商务信函
- 提示:将以下内容从俚语翻译成商务信函:
Dude, This is Joe, check out this spec on the standing lamp. - 回应:
Dear Sir/Madam, This is Joe. Please review the specifications for the standing lamp.


格式转换


ChatGPT非常擅长在不同格式之间进行转换,例如JSON到HTML、XML、Markdown等。在提示中,我们需要清晰描述输入和输出格式。


示例6:JSON转HTML表格
- 输入数据:
{ "restaurant employees": [ {"name": "Shyam", "email": "shyamjaiswal@gmail.com"}, {"name": "Bob", "email": "bob32@gmail.com"}, {"name": "Jai", "email": "jai87@gmail.com"} ] } - 提示:将下面的Python字典从JSON转换为带有列标题和表头的HTML表格。
- 模型响应:模型会生成对应的HTML代码。我们可以使用Python的
display函数来查看渲染后的表格效果。from IPython.display import display, HTML display(HTML(html_string))


✅ 拼写与语法检查


拼写和语法检查是ChatGPT非常流行的用途。对于非母语写作者尤其有帮助。


以下是实现步骤:

- 我们准备一个包含语法或拼写错误的句子列表。
texts = [ "The girl with the black and white puppies have a ball.", "Yolanda has her notebook.", "Its going to be a long day. Does the car need it’s oil changed?", "Their goes my freedom. There going to bring they’re suitcases." ] - 循环每个句子,让模型进行校对和纠正。
for text in texts: prompt = f"""请校对并更正以下文本。如果未发现错误,请说“未发现错误”: ```{text}``` """ response = get_completion(prompt) print(f"原始文本: {text}") print(f"更正后: {response}\n")
通过迭代提示词,你可以开发出更可靠、每次都能工作的校对提示。



进阶应用:检查与润色评论


在将内容发布到公共论坛前进行检查总是有用的。



示例7:校对产品评论
- 原始评论:
Got this for my daughter for her birthday cuz she keeps taking mine from my room. Yes, adults also like pandas too. She takes it everywhere with her, and it's super soft and cute. One of the ears is a bit lower than the other, and I don't think that was designed to be asymmetrical. It's a bit small for what I paid for it though. I think there might be other options that are bigger for the same price. It arrived a day earlier than expected, so I got to play with it myself before I gave it to her. - 提示:
请校对并纠正这篇评论。 - 模型响应:模型会输出语法更正确、表达更清晰的版本。


我们甚至可以要求模型进行更大幅度的修改,例如改变语气或遵循特定风格。


示例8:润色并转换风格
- 提示:
请校对并纠正以下评论。同时,使其更引人注目,遵循APA风格,以高级读者为目标,并以Markdown格式输出。 - 模型响应:模型会生成一篇扩展过的、符合APA风格的、面向高级读者的产品评论。





本节课中我们一起学习了如何利用大型语言模型进行多种文本转换操作。我们涵盖了语言翻译、语气转换、格式转换以及拼写和语法检查。通过清晰的提示词,你可以指导模型完成这些任务,从而更高效地处理文本内容。在接下来的课程中,我们将探索如何让模型进行文本扩展,即根据较短的提示生成更长的内容。
007:扩展任务与温度参数 🧠



在本节课中,我们将要学习如何使用大型语言模型进行“扩展”任务,即将短文变长,例如根据一组指令或话题列表生成更长的文本。我们还将介绍一个重要的模型参数——温度,它控制着模型输出的多样性和随机性。

什么是扩展任务? 📝


扩展任务是指让大型语言模型根据简短的输入,生成更长的文本。例如,模型可以根据几条指令或一个话题列表,撰写一封完整的电子邮件或一篇关于某个主题的短文。

这种能力有很好的用途,例如将大型语言模型作为头脑风暴的伙伴。但需要注意的是,它也可能被滥用,例如用于生成大量垃圾邮件。因此,在使用这些功能时,请务必负责任。



个性化邮件生成示例 ✉️

上一节我们介绍了扩展任务的基本概念,本节中我们来看看一个具体的应用示例:生成个性化邮件。


假设我们需要以AI客服助手的身份,给一位VIP客户发送邮件回复。邮件需要基于客户评论及其情感倾向来定制。

以下是实现步骤:

首先,我们需要设置环境并定义辅助函数。

import openai
def get_completion(prompt, model="gpt-3.5-turbo", temperature=0):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=temperature,
)
return response.choices[0].message["content"]

接下来,我们根据客户评论和已分析出的情感来生成回复。提示词设计如下:

你是一个客户服务AI助手。
你的任务是发送一封电子邮件回复给一位贵宾客户。
给定由三个反引号分隔的客户电子邮件,生成回复。
若情感正面或中性,感谢其评论。
若情感负面,道歉并建议联系客服。
确保使用评论中的具体细节。
以简洁专业语气书写。
签名注明“AI客服助手”。
客户评论:```{review}```
情感:{sentiment}

例如,针对一条关于搅拌机的负面评论,模型会生成一封包含道歉并建议联系客服的邮件。在生成给用户看的文本时,注明由AI生成非常重要,这保持了透明度。



理解温度参数 🌡️


在之前的示例中,我们使用了默认的温度值。现在,我们来深入了解温度这个参数。
温度 是一个控制模型输出随机性的参数。你可以将其理解为模型的“探索程度”或“创造性”。
- 当 温度=0 时,模型总是选择概率最高的下一个词,输出稳定、可预测。
- 当 温度>0 时,模型会考虑概率较低的词,输出更具多样性、更随机,但也可能更富有创意。
公式上,温度调整了模型输出概率的分布。原始概率 \(P(w_i)\) 经过温度 \(T\) 调整后变为:
当 \(T\) 较高时,概率分布更平缓;当 \(T\) 较低(接近0)时,概率分布更尖锐。


实践不同温度下的输出 🔬


以下是使用不同温度值运行相同提示词的对比。

对于需要可靠、可预测输出的应用(如客服邮件),建议使用 温度=0。

# 温度 = 0,输出稳定
response_0 = get_completion(prompt, temperature=0)


若要激发模型的创造性,可以尝试更高的温度,例如 温度=0.7。

# 温度 = 0.7,输出更多样
response_07_1 = get_completion(prompt, temperature=0.7)
response_07_2 = get_completion(prompt, temperature=0.7) # 每次输出可能不同


在高温下,模型的输出更随机,可以认为它更容易“分心”,但也可能产生更有趣或更出人意料的文本。建议你亲自尝试不同的温度值,观察输出文本的变化。



总结 📚

本节课中我们一起学习了:
- 扩展任务:利用大型语言模型将简短输入扩展为更长、更丰富的文本。
- 个性化邮件生成:通过设计提示词,让模型基于特定信息(如客户评论和情感)生成定制化内容。
- 温度参数:这是一个关键参数,用于控制模型输出的随机性与多样性。温度=0 确保稳定性,温度>0 增加创造性和变化。

在下一节课中,我们将深入探讨聊天完成端点的更多格式和用法。
008:构建自定义聊天机器人 🤖



在本节课中,我们将学习如何使用大型语言模型构建一个自定义的聊天机器人。我们将了解聊天模型的工作原理,学习如何通过系统消息来设定机器人的角色和行为,并最终动手创建一个披萨店点餐机器人。




概述
大型语言模型的一个令人兴奋的应用是,你可以用它来构建自定义聊天机器人,而无需付出巨大努力。ChatGPT的网页界面是一种通用交互方式,但更酷的是,你可以构建扮演特定角色(如客服代理或餐厅点餐员)的定制聊天机器人。本视频将详细介绍OpenAI聊天完成格式的组件,并指导你构建自己的聊天机器人。


设置与基础概念


首先,我们需要像往常一样设置OpenAI的Python包。像ChatGPT这样的聊天模型被训练成接受一系列消息作为输入,并返回模型生成的消息作为输出。虽然聊天格式设计用于多轮对话,但它同样适用于单轮任务。


我们之前在所有视频中一直使用一个get_completion辅助函数,它接收一个提示(prompt)并返回补全结果。但在函数内部,我们实际上是将这个提示放入一条用户消息中。这是因为聊天模型被训练为接受一系列消息。

在本视频中,我们将使用一个不同的辅助函数。我们不再传递单个提示,而是传递一系列消息。这些消息可以来自不同的角色。
以下是一个消息列表的示例:

第一条消息是系统消息,它提供了一个总体指令。在这条消息之后,消息在用户和助手角色之间交替出现。


如果你使用过ChatGPT网页界面,那么你的消息就是用户消息,而ChatGPT的回复就是助手消息。

系统消息有助于设置助手的行为和角色,它对对话提供了高级指导。你可以将其视为在助手耳边低语,引导其做出响应,而用户并不知道这条系统消息的存在。系统消息的好处在于,它为开发者提供了一种在不向用户暴露请求的情况下构建对话框架的方式。



实践:使用消息进行对话


现在,让我们尝试在对话中使用这些消息。我们将使用新的辅助函数get_completion_from_messages来从消息列表中获取补全结果。我们还将使用更高的temperature参数值。


系统消息是:“你是一个说话像莎士比亚的助手。” 这是我们向助手描述其应如何表现的方式。


然后,第一条用户消息是:“给我讲个笑话。”
接下来是用户消息:“为什么鸡要过马路?”
最后的用户消息是:“我不知道。”

如果我们运行这段代码,得到的回复是:“为了到达另一边!首先,夫人,这是一个古老的经典,从未失手。” 这是一个莎士比亚风格的回应。


为了让这一点更清晰,让我们打印整个消息响应。此响应是一条助手消息,其“角色”是“assistant”,“内容”就是信息文本本身。在我们的辅助函数中,我们传递的就是消息的内容。



上下文的重要性

让我们再举一个例子。我们的消息列表是:
- 系统消息:“你是一个友好的聊天机器人。”
- 第一条用户消息:“嗨,我叫伊莎。”


我们获取第一条助手消息,回复是:“你好,伊莎,很高兴见到你。今天我能帮你什么忙吗?”


现在,让我们尝试另一个例子。消息列表是:
- 系统消息:“你是一个友好的聊天机器人。”
- 用户消息:“嘿,你能提醒我,我叫什么名字吗?”

如你所见,模型实际上不知道你的名字。这是因为与语言模型的每次对话都是独立的交互。你必须提供所有相关的消息,模型才能在当前对话中从中提取信息。

如果你希望模型记住或引用对话中较早的部分,你必须在模型的输入中提供早期的交流记录。我们将其称为上下文。

让我们试试这个。现在,我们为模型提供了它所需的上下文(即包含名字的先前消息),然后问同样的问题:“我叫什么名字?” 模型现在能够正确响应,因为它拥有了输入消息列表中的所有必要上下文。




构建你的聊天机器人:披萨店点餐员

现在,你要构建自己的聊天机器人,我们称之为“Autobot”。它将自动收集用户提示和助手响应。为了构建这个Autobot,它将在一家披萨餐厅接受点餐。



首先,我们定义一个辅助函数collect_messages。它的作用是收集我们的用户消息,这样我们就不必像上面那样手动输入了。它将从下方构建的用户界面中收集提示,然后将其追加到一个名为context的列表中。接着,它每次都会使用该上下文调用模型。模型的响应也会被添加到上下文中。因此,用户消息和助手消息都被添加到上下文中,使得上下文列表越来越长。这样,模型就拥有了决定下一步行动所需的所有信息。

现在,我们将设置并运行一个用户界面来展示Autobot。

初始上下文包含一条系统消息,其中包含了菜单和指令。请注意,每次我们调用语言模型时,都会使用相同的上下文,而这个上下文会随着时间的推移不断积累。


系统消息的内容是:
“你是披萨店收集订单的自动化服务。你先招呼客人,然后收集订单,接着询问是自取还是外送。你等待收集整个订单,然后进行总结,最后确认客户是否还想添加其他东西。如果是外送,你需要询问地址。最后你收取费用。请确保澄清所有选项,额外配料和尺寸,以便从菜单中唯一识别项目。你以简短、非常健谈和友好的风格回应。菜单如下:[此处是菜单内容]”


让我们执行这个程序。用户说:“嗨,我想订一个披萨。” 助手回复:“太好了!您想点什么披萨?我们有意大利辣香肠奶酪披萨和茄子披萨。” 用户问:“多少钱?” 助手提供了价格。用户说:“我要一个中号的茄子披萨。”


你可以想象,我们可以继续这个对话。助手遵循系统消息中的指示,询问我们是否需要指定的配料。用户回复不需要额外配料。助手问是否还要点别的。用户点了薯条。助手澄清是要小份还是大份。这很棒,因为系统消息指示助手要澄清额外项目和规格。


你可以自己尝试玩一下这个机器人。可以暂停视频,在你左侧的笔记本上记下要点。




生成订单摘要

现在,我们可以要求模型创建一个JSON摘要,以便发送到订单系统。我们添加另一条系统消息(也可以使用用户消息),指令是:“根据之前的食物订单创建一个JSON摘要,逐项列出每个商品的价格。字段应为:1) 披萨,包括配料列表,2) 饮料列表,3) 配菜列表,以及4) 总价。”


在这个例子中,我们使用了较低的temperature参数值,因为对于这类任务,我们希望输出相当可预测。对于会话代理,你可能想用更高的温度,但就客户助理而言,你可能也希望输出更可预测一点。

执行后,我们得到了订单的摘要,可以将其提交给订单系统。




总结

本节课中,我们一起学习了如何利用大型语言模型构建自定义聊天机器人。我们了解了系统消息、用户消息和助手消息的角色,认识了上下文在维持对话连贯性中的关键作用,并动手创建了一个披萨店点餐机器人Autobot。通过调整系统消息,你可以轻松定制聊天机器人的行为,使其适应各种场景。
009:总结与展望
在本节课中,我们将对《ChatGPT提示词工程师》短课程的核心内容进行总结,并展望如何将所学知识应用于实际项目开发中。


祝贺你完成这门短课程。
在这门短课程中,你学习了两种关键的提示原则:写清晰具体的指令,以及在适当情况下给模型充足的思考时间。
上一节我们回顾了核心的提示原则,本节中我们来看看另一个关键的学习点。

你还学习了迭代提示开发的过程。以下是其核心思想:
- 找到一个正确的提示词,对于你的具体应用至关重要。

我们还浏览了大型语言模型的一些实用功能。
以下是四个主要的功能方向:
- 总结:将长文本浓缩为简短摘要。
- 推理:识别文本中的情感、主题等。
- 转换:如翻译、语气调整、格式转换等。
- 扩展:根据简短提示生成更长、更丰富的文本。

你也看到了如何构建自定义聊天机器人。

你在一节课中学到了很多内容。我们希望这些材料能激发你构建自己应用的想法。
请尝试并告诉我们你的想法。没有应用是微不足道的。

从一个小项目开始就很好。它可以有一点实用性,或者仅仅是有趣。我发现探索这些模型本身就充满乐趣。
所以,去实践吧。这是一个很好的周末活动。
请将你第一个项目的经验,用于构建更好的第二个、第三个项目。这就是我个人使用这些模型成长的方式。
如果你已经有一个更大的项目想法,那就直接开始吧。
需要提醒的是,大型语言模型是非常强大的技术。
因此,我们要求你负责任地使用它们,并且只构建那些能产生积极影响的应用。
我完全同意。在这个时代,构建人工智能系统的人可以对他人产生巨大影响。因此,我们所有人都有责任比以往更负责任地使用这些工具。
我认为构建基于大型语言模型的应用是一个令人兴奋且不断发展的领域。
现在你已经完成了这门课程,你拥有了丰富的知识,能够构建出当前只有少数人掌握如何构建的东西。
希望你也帮助我们宣传,鼓励他人参加这门课程。
最后,希望你学得开心。感谢你完成这门课程。
本节课总结
在本节课中,我们一起回顾了整个课程的核心要点:两大提示原则、迭代开发流程以及大模型的四大核心功能(总结、推理、转换、扩展)。我们鼓励你将所学知识付诸实践,从小项目开始,负责任地构建有积极影响的应用,并在这个令人兴奋的领域中持续学习和成长。


浙公网安备 33010602011771号