Merge pull request #79 from nowadays0421/PDF

Finish PE final
This commit is contained in:
Logan Zou
2023-07-24 17:10:30 +08:00
committed by GitHub
8 changed files with 2059 additions and 106 deletions

File diff suppressed because one or more lines are too long

View File

@ -6,15 +6,13 @@
"source": [
"# 第三章 迭代优化\n",
"\n",
"在开发大语言模型应用时很难通过第一次尝试就得到完美适用的Prompt。但关键是要有一个**良好的迭代优化过程**以不断改进Prompt。相比训练机器学习模型Prompt的一次成功率可能更高但仍需要通过多次迭代找到最适合应用的形式。\n",
"在开发大语言模型应用时,很难通过第一次尝试就得到完美适用的 Prompt。但关键是要有一个**良好的迭代优化过程**,以不断改进 Prompt。相比训练机器学习模型Prompt 的一次成功率可能更高,但仍需要通过多次迭代找到最适合应用的形式。\n",
"\n",
"本章以产品说明书生成营销文案为例展示Prompt迭代优化的思路。这与吴恩达在机器学习课程中演示的机器学习模型开发流程相似有了想法后编写代码、获取数据、训练模型、查看结果。通过分析错误找出适用领域调整方案后再次训练。Prompt开发也采用类似循环迭代的方式逐步逼近最优。\n",
"\n",
"具体来说有了任务想法后可以先编写初版Prompt注意清晰明确并给模型充足思考时间。运行后检查结果如果不理想则分析Prompt不够清楚或思考时间不够等原因做出改进再次运行。如此循环多次终将找到适合应用的Prompt。\n",
"本章以产品说明书生成营销文案为例,展示 Prompt 迭代优化的思路。这与吴恩达在机器学习课程中演示的机器学习模型开发流程相似有了想法后编写代码、获取数据、训练模型、查看结果。通过分析错误找出适用领域调整方案后再次训练。Prompt 开发也采用类似循环迭代的方式,逐步逼近最优。具体来说,有了任务想法后,可以先编写初版 Prompt注意清晰明确并给模型充足思考时间。运行后检查结果如果不理想则分析 Prompt 不够清楚或思考时间不够等原因,做出改进,再次运行。如此循环多次,终将找到适合应用的 Prompt。\n",
" \n",
"![1](../../../figures/docs/C1/Iterative-Prompt-Develelopment.png)\n",
" \n",
"总之,很难有适用于世间万物的所谓“最佳 Prompt ”开发高效Prompt的关键在于找到一个好的迭代优化过程而非一开始就要求完美。通过快速试错迭代可有效确定符合特定应用的最佳Prompt形式。\n"
"\n",
"总之,很难有适用于世间万物的所谓“最佳 Prompt ”,开发高效 Prompt 的关键在于找到一个好的迭代优化过程,而非一开始就要求完美。通过快速试错迭代,可有效确定符合特定应用的最佳 Prompt 形式。\n"
]
},
{
@ -135,7 +133,7 @@
"\n",
"它似乎很好地完成了要求,即从技术说明书开始编写产品描述,介绍了一个精致的中世纪风格办公椅。但是当我看到这个生成的内容时,我会觉得它**太长了**。\n",
"\n",
"在看到语言模型根据产品说明生成的第一个版本营销文案后我们注意到文本长度过长不太适合用作简明的电商广告语。所以这时候就需要对Prompt进行优化改进。具体来说第一版结果满足了从技术说明转换为营销文案的要求描写了中世纪风格办公椅的细节。但是过于冗长的文本不太适合电商场景。这时我们就可以**在Prompt中添加长度限制**,要求生成更简洁的文案。\n"
"在看到语言模型根据产品说明生成的第一个版本营销文案后,我们注意到文本长度过长,不太适合用作简明的电商广告语。所以这时候就需要对 Prompt 进行优化改进。具体来说,第一版结果满足了从技术说明转换为营销文案的要求,描写了中世纪风格办公椅的细节。但是过于冗长的文本不太适合电商场景。这时我们就可以**在 Prompt 中添加长度限制**,要求生成更简洁的文案。\n"
]
},
{
@ -173,6 +171,13 @@
"print(response)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"我们可以计算一下输出的长度。"
]
},
{
"cell_type": "code",
"execution_count": 11,
@ -198,8 +203,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"当在Prompt中设置长度限制要求时语言模型生成的输出长度不总能精确符合要求但基本能控制在可接受的误差范围内。比如要求生成50词的文本语言模型有时会生成60词左右的输出但总体接近预定长度。\n",
"当在 Prompt 中设置长度限制要求时语言模型生成的输出长度不总能精确符合要求但基本能控制在可接受的误差范围内。比如要求生成50词的文本语言模型有时会生成60词左右的输出但总体接近预定长度。\n",
"\n",
"这是因为**语言模型在计算和判断文本长度时依赖于分词器**,而分词器在字符统计方面不具备完美精度。目前存在多种方法可以尝试控制语言模型生成输出的长度,比如指定语句数、词数、汉字数等。\n",
"\n",
@ -212,13 +216,11 @@
"source": [
"### 1.3 提示优化2: 处理抓错文本细节\n",
"\n",
"在迭代优化Prompt的过程中我们还需要注意语言模型生成文本的细节是否符合预期。\n",
"在迭代优化 Prompt 的过程中,我们还需要注意语言模型生成文本的细节是否符合预期。\n",
"\n",
"比如在这个案例中,进一步分析会发现,该椅子面向的其实是家具零售商而不是终端消费者。所以生成的文案中过多强调风格、氛围等方面而较少涉及产品技术细节与目标受众的关注点不太吻合。这时候我们就可以继续调整Prompt明确要求语言模型生成面向家具零售商的描述更多关注材质、工艺、结构等技术方面的表述。\n",
"比如在这个案例中,进一步分析会发现,该椅子面向的其实是家具零售商,而不是终端消费者。所以生成的文案中过多强调风格、氛围等方面,而较少涉及产品技术细节,与目标受众的关注点不太吻合。这时候我们就可以继续调整 Prompt明确要求语言模型生成面向家具零售商的描述更多关注材质、工艺、结构等技术方面的表述。\n",
"\n",
"通过迭代地分析结果,检查是否捕捉到正确的细节,我们可以逐步优化Prompt,使语言模型生成的文本更加符合预期的样式和内容要求。\n",
"\n",
"细节的精准控制是语言生成任务中非常重要的一点。我们需要训练语言模型**根据不同目标受众关注不同的方面,输出风格和内容上都适合的文本**。"
"通过迭代地分析结果,检查是否捕捉到正确的细节,我们可以逐步优化 Prompt,使语言模型生成的文本更加符合预期的样式和内容要求。细节的精准控制是语言生成任务中非常重要的一点。我们需要训练语言模型**根据不同目标受众关注不同的方面,输出风格和内容上都适合的文本**。"
]
},
{
@ -257,7 +259,7 @@
"source": [
"可见,通过修改 Prompt ,模型的关注点倾向了具体特征与技术细节。\n",
"\n",
"我可能进一步想要在描述的结尾展示出产品ID。因此我可以进一步改进这个 Prompt 要求在描述的结尾展示出说明书中的7位产品ID。"
"我可能进一步想要在描述的结尾展示出产品 ID。因此我可以进一步改进这个 Prompt 要求在描述的结尾展示出说明书中的7位产品 ID。"
]
},
{
@ -296,11 +298,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"通过上面的示例我们可以看到Prompt迭代优化的一般过程。与训练机器学习模型类似设计高效Prompt也需要多个版本的试错调整。\n",
"通过上面的示例,我们可以看到 Prompt 迭代优化的一般过程。与训练机器学习模型类似,设计高效 Prompt 也需要多个版本的试错调整。\n",
"\n",
"具体来说第一版Prompt应该满足明确和给模型思考时间两个原则。在此基础上一般的迭代流程是首先尝试一个初版分析结果然后继续改进Prompt逐步逼近最优。许多成功的Prompt都是通过这种多轮调整得出的。\n",
"具体来说,第一版 Prompt 应该满足明确和给模型思考时间两个原则。在此基础上,一般的迭代流程是:首先尝试一个初版,分析结果,然后继续改进 Prompt逐步逼近最优。许多成功的Prompt 都是通过这种多轮调整得出的。\n",
"\n",
"后面我会展示一个更复杂的Prompt案例让大家更深入地了解语言模型的强大能力。但在此之前我想强调Prompt设计是一个循序渐进的过程。开发者需要做好多次尝试和错误的心理准备通过不断调整和优化才能找到最符合具体场景需求的Prompt形式。这需要智慧和毅力但结果往往是值得的。\n",
"后面我会展示一个更复杂的 Prompt 案例,让大家更深入地了解语言模型的强大能力。但在此之前,我想强调 Prompt 设计是一个循序渐进的过程。开发者需要做好多次尝试和错误的心理准备,通过不断调整和优化,才能找到最符合具体场景需求的 Prompt 形式。这需要智慧和毅力,但结果往往是值得的。\n",
"\n",
"让我们继续探索提示工程的奥秘,开发出令人惊叹的大语言模型应用吧!"
]
@ -379,6 +381,13 @@
"print(response)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"上述输出为 HTML 代码,我们可以使用 Python 的 IPython 库将 HTML 代码加载出来。"
]
},
{
"cell_type": "code",
"execution_count": 20,
@ -445,15 +454,13 @@
"metadata": {},
"source": [
"\n",
"本章重点讲解了在开发大语言模型应用时采用迭代方式不断优化Prompt的过程。作为Prompt工程师关键不是一开始就要求完美的Prompt而是掌握有效的Prompt开发流程。\n",
"本章重点讲解了在开发大语言模型应用时,采用迭代方式不断优化 Prompt 的过程。作为 Prompt 工程师,关键不是一开始就要求完美的 Prompt而是掌握有效的 Prompt 开发流程。\n",
"\n",
"具体来说首先编写初版Prompt然后通过多轮调整逐步改进直到生成了满意的结果。对于更复杂的应用可以在多个样本上进行迭代训练评估Prompt的平均表现。\n",
"具体来说,首先编写初版 Prompt然后通过多轮调整逐步改进直到生成了满意的结果。对于更复杂的应用可以在多个样本上进行迭代训练评估 Prompt 的平均表现。在应用较为成熟后,才需要采用在多个样本集上评估 Prompt 性能的方式来进行细致优化。因为这需要较高的计算资源。\n",
"\n",
"在应用较为成熟后才需要采用在多个样本集上评估Prompt性能的方式来进行细致优化。因为这需要较高的计算资源。\n",
"总之Prompt 工程师的核心是掌握 Prompt 的迭代开发和优化技巧而非一开始就要求100%完美。通过不断调整试错,最终找到可靠适用的 Prompt 形式才是设计 Prompt 的正确方法。\n",
"\n",
"总之Prompt工程师的核心是掌握Prompt迭代开发和优化技巧而非一开始就要求100%完美。通过不断调整试错最终找到可靠适用的Prompt形式才是设计Prompt的正确方法。\n",
"\n",
"读者可以在Jupyter Notebook上对本章给出的示例进行实践修改Prompt并观察不同输出以深入理解Prompt迭代优化的过程。这会对进一步开发复杂语言模型应用提供很好的实践准备。\n"
"读者可以在 Jupyter Notebook 上,对本章给出的示例进行实践,修改 Prompt 并观察不同输出,以深入理解 Prompt 迭代优化的过程。这会对进一步开发复杂语言模型应用提供很好的实践准备。\n"
]
},
{
@ -899,7 +906,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
"version": "3.8.10"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,

File diff suppressed because one or more lines are too long

View File

@ -17,9 +17,9 @@
"\n",
"让我们先想象一下,你是一名初创公司的数据分析师,你的任务是从各种产品评论和新闻文章中提取出关键的情感和主题。这些任务包括了标签提取、实体提取、以及理解文本的情感等等。在传统的机器学习流程中,你需要收集标签化的数据集、训练模型、确定如何在云端部署模型并进行推断。尽管这种方式可能会产生不错的效果,但完成这一全流程需要耗费大量的时间和精力。而且,每一个任务,比如情感分析、实体提取等等,都需要训练和部署单独的模型。\n",
"\n",
"然而就在你准备投入繁重工作的时候你发现了大型语言模型LLM。LLM的一个明显优点是对于许多这样的任务你只需要编写一个 Prompt就可以开始生成结果大大减轻了你的工作负担。这个发现像是找到了一把神奇的钥匙让应用程序开发的速度加快了许多。最令你兴奋的是你可以仅仅使用一个模型和一个API来执行许多不同的任务无需再纠结如何训练和部署许多不同的模型。\n",
"然而就在你准备投入繁重工作的时候你发现了大型语言模型LLM。LLM 的一个明显优点是,对于许多这样的任务,你只需要编写一个 Prompt就可以开始生成结果大大减轻了你的工作负担。这个发现像是找到了一把神奇的钥匙让应用程序开发的速度加快了许多。最令你兴奋的是你可以仅仅使用一个模型和一个 API 来执行许多不同的任务,无需再纠结如何训练和部署许多不同的模型。\n",
"\n",
"让我们开始这一章的学习一起探索如何利用LLM加快我们的工作进程提高我们的工作效率。"
"让我们开始这一章的学习,一起探索如何利用 LLM 加快我们的工作进程,提高我们的工作效率。"
]
},
{
@ -102,7 +102,7 @@
"id": "76be2320",
"metadata": {},
"source": [
"如果你想要给出更简洁的答案,以便更容易进行后处理,可以在上述 Prompt 基础上添加另一个指令:*用一个单词回答:「正面」或「负面」*。这样就只会打印出 “正面” 这个单词,这使得输出更加统一,方便后续处理。"
"如果你想要给出更简洁的答案,以便更容易进行后处理,可以在上述 Prompt 基础上添加另一个指令:*用一个单词回答:「正面」或「负面」*。这样就只会打印出 “正面” 这个单词,这使得输出更加统一,方便后续处理。"
]
},
{
@ -136,7 +136,7 @@
"id": "81d2a973-1fa4-4a35-ae35-a2e746c0e91b",
"metadata": {},
"source": [
"### 2.2 识别情感类型"
"### 1.2 识别情感类型"
]
},
{
@ -456,7 +456,7 @@
"id": "95b636f1",
"metadata": {},
"source": [
"假设我们有一个新闻网站或类似的平台,这是我们感兴趣的主题:美国航空航天局、当地政府、工程、员工满意度、联邦政府等。我们想要分析一篇新闻文章,理解其包含了哪些主题。可以使用这样的prompt确定以下主题列表中的每个项目是否是以下文本中的主题。以 0 或 1 的形式给出答案列表。"
"假设我们有一个新闻网站或类似的平台,这是我们感兴趣的主题:美国航空航天局、当地政府、工程、员工满意度、联邦政府等。我们想要分析一篇新闻文章,理解其包含了哪些主题。可以使用这样的 Prompt确定以下主题列表中的每个项目是否是以下文本中的主题。以 0 或 1 的形式给出答案列表。"
]
},
{
@ -499,7 +499,7 @@
"id": "08247dbf",
"metadata": {},
"source": [
"从输出结果来看,这个`story`与关于“美国航空航天局”、“员工满意度”、“联邦政府”、“当地政府”有关而与“工程”无关。这种能力在机器学习领域被称为零样本Zero-Shot学习。这是因为我们并没有提供任何带标签的训练数据仅凭 Prompt ,它便能判定哪些主题在新闻文章中被包含。\n",
"从输出结果来看,这个 `story` 与关于“美国航空航天局”、“员工满意度”、“联邦政府”、“当地政府”有关而与“工程”无关。这种能力在机器学习领域被称为零样本Zero-Shot学习。这是因为我们并没有提供任何带标签的训练数据仅凭 Prompt ,它便能判定哪些主题在新闻文章中被包含。\n",
"\n",
"如果我们希望制定一个新闻提醒,我们同样可以运用这种处理新闻的流程。假设我对“美国航空航天局”的工作深感兴趣,那么你就可以构建一个如此的系统:每当出现与'美国宇航局'相关的新闻,系统就会输出提醒。"
]
@ -961,7 +961,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -975,7 +975,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
"version": "3.8.10"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,

View File

@ -9,7 +9,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "2fac57c2",
"metadata": {},
@ -22,7 +21,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "bf3733d4",
"metadata": {},
@ -35,7 +33,7 @@
"id": "06ba53ba",
"metadata": {},
"source": [
"文本翻译是大语言模型的典型应用场景之一。相比于传统统计机器翻译系统,大语言模型翻译更加流畅自然,还原度更高。通过在大规模高质量平行语料上进行fine-tuning训练,大语言模型可以深入学习不同语言间的词汇、语法、语义等层面的对应关系,模拟双语者的转换思维,进行意义传递的精准转换,而非简单的逐词替换。\n",
"文本翻译是大语言模型的典型应用场景之一。相比于传统统计机器翻译系统,大语言模型翻译更加流畅自然,还原度更高。通过在大规模高质量平行语料上进行 Fine-Tune,大语言模型可以深入学习不同语言间的词汇、语法、语义等层面的对应关系,模拟双语者的转换思维,进行意义传递的精准转换,而非简单的逐词替换。\n",
"\n",
"以英译汉为例,传统统计机器翻译多倾向直接替换英文词汇,语序保持英语结构,容易出现中文词汇使用不地道、语序不顺畅的现象。而大语言模型可以学习英汉两种语言的语法区别,进行动态的结构转换。同时,它还可以通过上下文理解原句意图,选择合适的中文词汇进行转换,而非生硬的字面翻译。\n",
"\n",
@ -43,7 +41,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "1b418e32",
"metadata": {},
@ -79,7 +76,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "e3e922b4",
"metadata": {},
@ -111,7 +107,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "c1841354",
"metadata": {},
@ -146,7 +141,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "68723ba5",
"metadata": {},
@ -154,31 +148,6 @@
"### 1.4 同时进行语气转换"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "a4770dcc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Formal: ¿Le gustaría ordenar una almohada?\n",
"Informal: ¿Te gustaría ordenar una almohada?\n"
]
}
],
"source": [
"prompt = f\"\"\"\n",
"Translate the following text to Spanish in both the \\\n",
"formal and informal forms: \n",
"'Would you like to order a pillow?'\n",
"\"\"\"\n",
"response = get_completion(prompt)\n",
"print(response)\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
@ -204,7 +173,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "b2dc4c56",
"metadata": {},
@ -213,7 +181,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "54b00aa4",
"metadata": {},
@ -297,7 +264,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "6ab558a2",
"metadata": {},
@ -306,7 +272,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "b85ae847",
"metadata": {},
@ -350,7 +315,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "98df9009",
"metadata": {},
@ -359,14 +323,13 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "0bf9c074",
"metadata": {},
"source": [
"大语言模型如ChatGPT在不同数据格式之间转换方面表现出色。它可以轻松实现JSONHTML、XML、Markdown等格式的相互转化。下面是一个示例,展示如何使用大语言模型**将JSON数据转换为HTML格式**:\n",
"大语言模型如 ChatGPT 在不同数据格式之间转换方面表现出色。它可以轻松实现 JSONHTML、XML、Markdown 等格式的相互转化。下面是一个示例,展示如何使用大语言模型**将 JSON 数据转换为 HTML 格式**:\n",
"\n",
"假设我们有一个JSON数据,包含餐厅员工的姓名和邮箱信息。现在我们需要将这个JSON转换为HTML表格格式以便在网页中展示。在这个案例中,我们就可以使用大语言模型,直接输入JSON数据,并给出需要转换为HTML表格的要求。语言模型会自动解析JSON结构,并以HTML表格形式输出,完成格式转换的任务。\n",
"假设我们有一个 JSON 数据,包含餐厅员工的姓名和邮箱信息。现在我们需要将这个 JSON 转换为 HTML 表格格式,以便在网页中展示。在这个案例中,我们就可以使用大语言模型,直接输入JSON 数据,并给出需要转换为 HTML 表格的要求。语言模型会自动解析 JSON 结构,并以 HTML 表格形式输出,完成格式转换的任务。\n",
"\n",
"利用大语言模型强大的格式转换能力,我们可以快速实现各种结构化数据之间的相互转化,大大简化开发流程。掌握这一转换技巧将有助于读者**更高效地处理结构化数据**。\n"
]
@ -429,6 +392,14 @@
"print(response)"
]
},
{
"cell_type": "markdown",
"id": "99c8114e",
"metadata": {},
"source": [
"将上述 HTML 代码展示出来如下:"
]
},
{
"cell_type": "code",
"execution_count": 11,
@ -476,7 +447,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "29b7167b",
"metadata": {},
@ -485,7 +455,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "22776140",
"metadata": {},
@ -552,7 +521,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "538181e0",
"metadata": {},
@ -602,7 +570,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "2e2d1f6a",
"metadata": {},
@ -657,7 +624,6 @@
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "3ee5d487",
"metadata": {},
@ -1343,7 +1309,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -1357,7 +1323,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
"version": "3.8.10"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,

View File

@ -13,11 +13,9 @@
"source": [
"**文本扩展**是大语言模型的一个重要应用方向,它可以输入简短文本,生成更加丰富的长文。这为创作提供了强大支持,但也可能被滥用。因此开发者在使用时,必须谨记社会责任,避免生成有害内容。\n",
"\n",
"在本章中,我们将学习*基于OpenAI API实现一个客户邮件自动生成的示例*,用于*根据客户反馈优化客服邮件*。这里还会介绍“温度”temperature这一超参数它可以**控制文本生成的多样性**。\n",
"在本章中,我们将学习*基于 OpenAI API 实现一个客户邮件自动生成的示例*,用于*根据客户反馈优化客服邮件*。这里还会介绍“温度”temperature这一超参数它可以**控制文本生成的多样性**。\n",
"\n",
"需要注意,扩展功能只应用来辅助人类创作,而非大规模自动生成内容。开发者应审慎使用,避免产生负面影响。只有以负责任和有益的方式应用语言模型,才能发挥其最大价值。\n",
"\n",
"相信践行社会责任的开发者可以利用语言模型的扩展功能,开发出真正造福人类的创新应用。\n"
"需要注意,扩展功能只应用来辅助人类创作,而非大规模自动生成内容。开发者应审慎使用,避免产生负面影响。只有以负责任和有益的方式应用语言模型,才能发挥其最大价值。相信践行社会责任的开发者可以利用语言模型的扩展功能,开发出真正造福人类的创新应用。\n"
]
},
{
@ -33,7 +31,7 @@
"source": [
"在这个客户邮件自动生成的示例中,我们**将根据客户的评价和其中的情感倾向,使用大语言模型针对性地生成回复邮件**。\n",
"\n",
"具体来说,我们先输入客户的评论文本和对应的情感分析结果(正面或者负面)。然后构造一个Prompt要求大语言模型基于这些信息来生成一封定制的回复电子邮件。\n",
"具体来说,我们先输入客户的评论文本和对应的情感分析结果(正面或者负面)。然后构造一个 Prompt要求大语言模型基于这些信息来生成一封定制的回复电子邮件。\n",
"\n",
"下面先给出一个实例,包括一条客户评价和这个评价表达的情感。这为后续的语言模型生成回复邮件提供了关键输入信息。通过输入客户反馈的具体内容和情感态度,语言模型可以生成针对这个特定客户、考虑其具体情感因素的个性化回复。这种**针对个体客户特点的邮件生成方式,将大大提升客户满意度**。"
]
@ -129,7 +127,7 @@
"source": [
"## 二、引入温度系数\n",
"\n",
"大语言模型中的 “温度”(temperature) 参数可以控制生成文本的随机性和多样性。temperature的值越大语言模型输出的多样性越大temperature的值越小输出越倾向高概率的文本。\n",
"大语言模型中的 “温度”(temperature) 参数可以控制生成文本的随机性和多样性。temperature 的值越大语言模型输出的多样性越大temperature 的值越小,输出越倾向高概率的文本。\n",
"\n",
"举个例子,在某一上下文中,语言模型可能认为“比萨”是接下来最可能的词,其次是“寿司”和“塔可”。若 temperature 为0则每次都会生成“比萨”而当 temperature 越接近 1 时,生成结果是“寿司”或“塔可”的可能性越大,使文本更加多样。\n",
"\n",
@ -192,6 +190,13 @@
"print(response)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"第二次运行输出结果会发生变化:"
]
},
{
"cell_type": "code",
"execution_count": 5,
@ -241,9 +246,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"**温度temperature参数可以控制语言模型生成文本的随机性**。温度为0时每次使用同样的Prompt得到的结果总是一致的。而在上面的样例中当温度设为0.7时,则每次执行都会生成不同的文本。\n",
"**温度temperature参数可以控制语言模型生成文本的随机性**。温度为0时每次使用同样的 Prompt得到的结果总是一致的。而在上面的样例中当温度设为0.7时,则每次执行都会生成不同的文本。\n",
"\n",
"所以这次的结果与之前得到的邮件就不太一样了。再次执行同样的Prompt,邮件内容还会有变化。因此。我建议读者朋友们可以自己尝试不同的 temperature 来观察输出的变化。总体来说temperature 越高,语言模型的文本生成就越具有随机性。可以想象,高温度下,语言模型就像心绪更加活跃,但也可能更有创造力。\n",
"所以,这次的结果与之前得到的邮件就不太一样了。再次执行同样的 Prompt,邮件内容还会有变化。因此。我建议读者朋友们可以自己尝试不同的 temperature 来观察输出的变化。总体来说temperature 越高,语言模型的文本生成就越具有随机性。可以想象,高温度下,语言模型就像心绪更加活跃,但也可能更有创造力。\n",
"\n",
"适当调节这个超参数,可以让语言模型的生成更富有多样性,也更能意外惊喜。希望这些经验可以帮助你在不同场景中找到最合适的温度设置。\n"
]
@ -411,7 +416,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -425,7 +430,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
"version": "3.8.10"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,

View File

@ -15,14 +15,8 @@
"id": "f0bdc2c9",
"metadata": {},
"source": [
"大型语言模型带给我们的激动人心的一种可能性是我们可以通过它构建定制的聊天机器人Chatbot而且只需很少的工作量。在这一章节的探索中我们将带你了解如何利用会话形式与具有个性化特性或专门为特定任务或行为设计的聊天机器人进行深度对话。"
]
},
{
"cell_type": "markdown",
"id": "e6fae355",
"metadata": {},
"source": [
"大型语言模型带给我们的激动人心的一种可能性是我们可以通过它构建定制的聊天机器人Chatbot而且只需很少的工作量。在这一章节的探索中我们将带你了解如何利用会话形式与具有个性化特性或专门为特定任务或行为设计的聊天机器人进行深度对话。\n",
"\n",
"像 ChatGPT 这样的聊天模型实际上是组装成以一系列消息作为输入,并返回一个模型生成的消息作为输出的。这种聊天格式原本的设计目标是简便多轮对话,但我们通过之前的学习可以知道,它对于不会涉及任何对话的**单轮任务**也同样有用。"
]
},
@ -380,6 +374,14 @@
"!pip install panel"
]
},
{
"cell_type": "markdown",
"id": "b61e475a",
"metadata": {},
"source": [
"如果你还没有安装 panel 库(用于可视化界面),请运行上述指令以安装该第三方库。"
]
},
{
"cell_type": "code",
"execution_count": null,
@ -850,7 +852,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
"version": "3.8.10"
},
"latex_envs": {
"LaTeX_envs_menu_present": true,

View File

@ -221,7 +221,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "gpt_flask",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@ -235,10 +235,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.16"
},
"orig_nbformat": 4
"version": "3.10.11"
}
},
"nbformat": 4,
"nbformat_minor": 2
"nbformat_minor": 4
}