第五章 -- 文字修改
This commit is contained in:
@ -11,9 +11,11 @@
|
|||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"在本章中,我们将学习处理输入,通过一系列步骤生成有用的输出。\n",
|
"有时,语言模型需要进行详细的逐步推理才能回答特定问题。如果过于匆忙得出结论,很可能在推理链中出现错误。因此,我们可以通过“**思维链推理**”(Chain of Thought Reasoning)的策略,在查询中明确要求语言模型先提供一系列相关推理步骤,进行深度思考,然后再给出最终答案,这更接近人类解题的思维过程。\n",
|
||||||
"\n",
|
"\n",
|
||||||
"模型在回答特定问题之前需要进行详细地推理,否者可能会因为过于匆忙得出结论而在推理过程中出错。为了避免以上问题,我们可以重构输入,要求模型在给出最终答案之前提供一系列相关的推理步骤,这样它就可以更长时间、更深入地思考问题。这种要求模型逐步推理问题的策略为思维链推理(Chain of Thought Reasoning)。"
|
"相比直接要求输出结果,这种引导语言模型逐步推理的方法,可以减少其匆忙错误,生成更准确可靠的响应。思维链推理使语言模型更好地模拟人类逻辑思考,是提升其回答质量的重要策略之一。\n",
|
||||||
|
"\n",
|
||||||
|
"在本章中,我们将探讨如何处理语言模型的输入,以生成高质量的输出。我们将详细介绍如何构建思维链推理 Prompt ,并通过案例分析这种方法的效果。掌握这一技巧将有助于开发者获得更佳的语言模型输出。"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -22,7 +24,9 @@
|
|||||||
"source": [
|
"source": [
|
||||||
"## 一、思维链提示设计\n",
|
"## 一、思维链提示设计\n",
|
||||||
"\n",
|
"\n",
|
||||||
"思维链提示设计(Chain of Thought Prompting)是通过设计系统消息,要求模型在得出结论之前一步一步推理答案。"
|
"思维链提示是一种引导语言模型进行逐步推理的 Prompt 设计技巧。它通过在 Prompt 中设置系统消息,要求语言模型在给出最终结论之前,先明确各个推理步骤。\n",
|
||||||
|
"\n",
|
||||||
|
"具体来说,Prompt可以先请语言模型陈述对问题的初步理解,然后列出需要考虑的方方面面,最后再逐个分析这些因素,给出支持或反对的论据,才得出整体的结论。这种逐步推理的方式,更接近人类处理复杂问题的思维过程,可以减少语言模型匆忙得出错误结论的情况。因为它必须逐步论证自己的观点,而不是直接输出結论。通过详细的思维链提示,开发者可以获得语言模型生成的结论更加可靠,理由更加充分。这种提示设计技巧值得在需要语言模型进行复杂推理时加以运用。"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -32,6 +36,13 @@
|
|||||||
"### 1.1 系统消息设计"
|
"### 1.1 系统消息设计"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"首先,在系统消息中使用思维链提示:"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 3,
|
"execution_count": 3,
|
||||||
@ -123,6 +134,13 @@
|
|||||||
"### 1.2 用户消息测试"
|
"### 1.2 用户消息测试"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"接下来,在用户消息中测试在系统消息中设置的思维链提示:"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@ -208,8 +226,11 @@
|
|||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
|
"在某些应用场景下,完整呈现语言模型的推理过程可能会泄露关键信息或答案,这并不可取。例如在教学应用中,我们希望学生通过自己的思考获得结论,而不是直接被告知答案。\n",
|
||||||
"\n",
|
"\n",
|
||||||
"在实际应用中,我们并不想要将推理的过程呈现给用户。比如在辅导类应用程序中,我们希望学生能够思考得出自己的答案。呈现关于学生解决方案的推理过程可能会将答案泄露。内心独白(Inner Monologue)本质就是隐藏模型推理过程,可以用来一定程度上解决这个问题。具体而言,通过让模型将部分需要隐藏的输出以结构化的方式储存以便后续解析。接下来,在将结果呈现给用户之前,结构化的结果被解析,只有部分结果被输出并呈现给用户。"
|
"针对这一问题。“**内心独白**”技巧可以在一定程度上隐藏语言模型的推理链。具体做法是,在 Prompt 中指示语言模型以结构化格式存储需要隐藏的中间推理,例如存储为变量。然后在返回结果时,仅呈现对用户有价值的输出,不展示完整的推理过程。这种提示策略只向用户呈现关键信息,避免透露答案。同时语言模型的推理能力也得以保留。适当使用“内心独白”可以在保护敏感信息的同时,发挥语言模型的推理特长。\n",
|
||||||
|
"\n",
|
||||||
|
"总之,适度隐藏中间推理是Prompt工程中重要的技巧之一。开发者需要为不同用户制定不同的信息呈现策略。以发挥语言模型最大价值。\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -242,8 +263,9 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"<br>\n",
|
"<br>\n",
|
||||||
"在下一章中,我们将学习一种处理复杂任务的新策略,即将复杂任务分解为一系列更简单的子任务,而不是试图在一个 Prompt 中完成整个任务。\n",
|
"在复杂任务中,我们往往需要语言模型进行多轮交互、逐步推理,才能完成整个流程。如果想在一个Prompt中完成全部任务,对语言模型的能力要求会过高,成功率较低。\n",
|
||||||
"\n"
|
"\n",
|
||||||
|
"因此,下一章将介绍一种更可靠的策略:将复杂任务分解为多个子任务,通过提示链(Prompt Chaining) step-by-step引导语言模型完成。具体来说,我们可以分析任务的不同阶段,为每个阶段设计一个简单明确的 Prompt 。我们将通过实例展示提示链的运用,以及如何科学拆分Prompt来引导语言模型递进完成多步骤任务。这是提示工程中非常重要的技能之一。\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user