Finish PE-123 end edit

This commit is contained in:
nowadays0421
2023-07-24 15:19:02 +08:00
parent 86926ec837
commit 98a723075d
3 changed files with 1270 additions and 31 deletions

File diff suppressed because one or more lines are too long

View File

@ -8,9 +8,7 @@
"\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",
@ -173,6 +171,13 @@
"print(response)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"我们可以计算一下输出的长度。"
]
},
{
"cell_type": "code",
"execution_count": 11,
@ -198,7 +203,6 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"当在 Prompt 中设置长度限制要求时语言模型生成的输出长度不总能精确符合要求但基本能控制在可接受的误差范围内。比如要求生成50词的文本语言模型有时会生成60词左右的输出但总体接近预定长度。\n",
"\n",
"这是因为**语言模型在计算和判断文本长度时依赖于分词器**,而分词器在字符统计方面不具备完美精度。目前存在多种方法可以尝试控制语言模型生成输出的长度,比如指定语句数、词数、汉字数等。\n",
@ -216,9 +220,7 @@
"\n",
"比如在这个案例中,进一步分析会发现,该椅子面向的其实是家具零售商,而不是终端消费者。所以生成的文案中过多强调风格、氛围等方面,而较少涉及产品技术细节,与目标受众的关注点不太吻合。这时候我们就可以继续调整 Prompt明确要求语言模型生成面向家具零售商的描述更多关注材质、工艺、结构等技术方面的表述。\n",
"\n",
"通过迭代地分析结果,检查是否捕捉到正确的细节,我们可以逐步优化Prompt,使语言模型生成的文本更加符合预期的样式和内容要求。\n",
"\n",
"细节的精准控制是语言生成任务中非常重要的一点。我们需要训练语言模型**根据不同目标受众关注不同的方面,输出风格和内容上都适合的文本**。"
"通过迭代地分析结果,检查是否捕捉到正确的细节,我们可以逐步优化 Prompt,使语言模型生成的文本更加符合预期的样式和内容要求。细节的精准控制是语言生成任务中非常重要的一点。我们需要训练语言模型**根据不同目标受众关注不同的方面,输出风格和内容上都适合的文本**。"
]
},
{
@ -379,6 +381,13 @@
"print(response)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"上述输出为 HTML 代码,我们可以使用 Python 的 IPython 库将 HTML 代码加载出来。"
]
},
{
"cell_type": "code",
"execution_count": 20,
@ -447,9 +456,7 @@
"\n",
"本章重点讲解了在开发大语言模型应用时,采用迭代方式不断优化 Prompt 的过程。作为 Prompt 工程师,关键不是一开始就要求完美的 Prompt而是掌握有效的 Prompt 开发流程。\n",
"\n",
"具体来说首先编写初版Prompt然后通过多轮调整逐步改进直到生成了满意的结果。对于更复杂的应用可以在多个样本上进行迭代训练评估Prompt的平均表现。\n",
"\n",
"在应用较为成熟后才需要采用在多个样本集上评估Prompt性能的方式来进行细致优化。因为这需要较高的计算资源。\n",
"具体来说,首先编写初版 Prompt然后通过多轮调整逐步改进直到生成了满意的结果。对于更复杂的应用可以在多个样本上进行迭代训练评估 Prompt 的平均表现。在应用较为成熟后,才需要采用在多个样本集上评估 Prompt 性能的方式来进行细致优化。因为这需要较高的计算资源。\n",
"\n",
"总之Prompt 工程师的核心是掌握 Prompt 的迭代开发和优化技巧而非一开始就要求100%完美。通过不断调整试错,最终找到可靠适用的 Prompt 形式才是设计 Prompt 的正确方法。\n",
"\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,

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
}