对提示工程的理解 #101

Open
opened 2024-09-18 18:51:18 +08:00 by GANGUAGUA · 1 comment

什么是提示工程

Prompt Engineering,亦称为指令工程,是一门研究如何精心构造指令以指导语言模型高效执行特定任务的学问。在这一过程中,Prompt即指发送给语言模型的指令,例如请求模型讲述一个笑话。ChatGPT作为一款软件,它能够接收用户的输入,如“讲个笑话”,并将这些输入作为指令进行解析和处理。随后,ChatGPT会将这些经过处理的指令传递给背后的大型语言模型。因此,对于语言模型而言,它所接收到的指令并不仅仅是简单的“讲个笑话”这几个字,而是经过ChatGPT处理后的具体化、结构化的请求。

Prompt的构成

Prompt的组成主要包括指令(instruction)、输入数据(Input Data)、上下文(Context)以及输出指示器(Output Indicator),这些构成了提示词的核心要素,对于涉及有效的AI交互至关重要:

  1. 指令:想要模型执行的特定任务或指令
  2. 上下文:包含外部信息或额外的上下文信息,引导语音模型更好地响应
  3. 输入数据:用户输入的内容或问题
  4. 输出指示:指定输出的类型或格式
举例关于使用大模型语言模型来生成文章摘要的prompt
  1. 指令:生成给一篇关于“气候变化对农业影响”的文章摘要。
  2. 上下文:请考虑最新的科学研究和统计数据,以及气候变化如何影响全球不同地区的农业生产。
  3. 输入数据:用户提供一篇或几篇详细讨论气候变化对农业影响的长篇文章。
  4. 输入指示:摘要应该在200字以内,突出关键点和主要结论,使用清晰、简洁的语言。

从Prompt的内容和形式,可以将其分为:

  • 零样本提示(Zero-shot prompts):用户仅提供了一个任务描述 (不提供例子)。
  • 少样本提示(Few-shot prompts):用户提供如何完成任务的示例(也就是说给模型举几个例子,这样模型能够更好的回答你的问题)。

它俩的区别本质在于上下文的多寡,上下文越多,得到的回答越准确。

注意:不是每个要素都必须包含在Prompt里,具体根据你要执行的任务来设计。


Prompt调优方式

思维链(Chain of Thoughts,CoT)

思维链是一种有效的交互方式,它通过模拟人类的思考过程来引导大型语言模型逐步解决问题。在这个过程中,用户首先提供问题的初始信息,然后通过一系列的提示引导模型逐步进行推理。这些推理步骤构成了所谓的思维链,它们帮助模型像人类一样,通过逻辑和分析来逐步接近最终答案。通过这种方式,大模型能够更深入地参与到问题的解决过程中,展现出更高的解决问题的能力。

:::info
举例:

假设你想知道两个数的和,但这两个数的和大于100,你想知道超过100多少。你可以这样提问:

  1. 输入数据__:两个数分别是45和60。
  2. 指令__:计算这两个数的和,并告诉我超过100多少。

模型会首先计算45和60的和(105),然后计算105超过100的部分(5)。这就是一个简单的思维链过程。

:::

LtM提示方法 (Least to Most prompting, LtM)

最少到最多提示过程 (Least to Most prompting, LtM) 将思维链提示过程 (CoT prompting) 进一步发展,首先将问题分解为子问题,然后逐个解决。 与思维链提示过程类似,需要解决的问题被分解成一组建立在彼此之上的子问题。在第二步中,这些子问题被逐个解决。与思维链不同的是,先前子问题的解决方案被输入到提示中,以尝试解决下一个问题。 简单来说就是一步一步来,step by step。单纯的思维链 CoT 不足以解决复杂问题,但是我们可以把它分解成一个个小问题,然后再使用 CoT,这样模型就能把问题求解出来。简而言之,LtM就分为两个步骤: (1) 分解问题 (2) 解决问题。

思维树(Tree of Thoughts, ToT)

思维树的核心原理是将问题解决过程视为一个逐步深入的过程,每个步骤都构建在前一个步骤的基础上,形成一个有逻辑的推理链。这种方法不仅展示了解决问题的中间步骤,而且还允许模型自我评估不同中间思维在解决问题方面的进展,从而选择最有效的路径达到最终解决方案。

:::info
举例:

假设你正在考虑如何度过一个有趣的周末,但你还没有具体计划。你可以使用思维树方法来帮助决策:

  1. 头脑风暴阶段:首先,列出所有可能的活动选项。
    • 去徒步
    • 尝试一家新餐厅
    __• 去博物馆
  2. 评估阶段:然后,评估每个活动的可能性和吸引力。
    • 去徒步:查看天气预报,选择一个风景优美且不太远的徒步路线。
    • 尝试一家新餐厅:搜索评价高的餐厅,考虑你的口味和预算。
    __• 去博物馆:查看博物馆的开放时间和展览信息,选择你最感兴趣的展览。
  3. 深挖阶段:对每个选项进行更深入的思考,想象实际执行这些活动的场景。
    • 去徒步:想象自己在大自然中呼吸新鲜空气,享受运动的乐趣。
    • 尝试一家新餐厅:想象自己品尝美味佳肴,享受新的餐饮体验。
    __• 去博物馆:想象自己在博物馆中欣赏艺术作品,增长知识。
  4. 决策阶段:基于前面的思考,选择一个最吸引你的活动。
    __• 例如,如果你发现天气晴朗,你可能会决定去徒步,因为你喜欢户外活动,而且有一个风景优美的徒步路线吸引了你。

通过这个思维树的过程,你不仅列出了所有可能的活动,还对每个活动进行了详细的评估和想象,最终帮助你做出了一个满意的决策。这个过程就像你在思考问题时逐步深入,最终找到最佳解决方案。

:::

Prompt攻击与防范

Prompt攻击是指劫持语言模型输出的过程,它允许黑客使用模型说出任何他们想要的话。在提示词注入攻击中,攻击者会尝试通过提供高喊恶意内容输入,来操纵语言模型的输出。通俗来讲就是,设计prompt引导模型回答出它不应该回答的内容。

Prompt防范是指通过设计prompt来防范prompt攻击

## **什么是提示工程** Prompt Engineering,亦称为指令工程,是一门研究如何精心构造指令以指导语言模型高效执行特定任务的学问。在这一过程中,Prompt即指发送给语言模型的指令,例如请求模型讲述一个笑话。ChatGPT作为一款软件,它能够接收用户的输入,如“讲个笑话”,并将这些输入作为指令进行解析和处理。随后,ChatGPT会将这些经过处理的指令传递给背后的大型语言模型。因此,对于语言模型而言,它所接收到的指令并不仅仅是简单的“讲个笑话”这几个字,而是经过ChatGPT处理后的具体化、结构化的请求。 ## **Prompt的构成** Prompt的组成主要包括指令(instruction)、输入数据(Input Data)、上下文(Context)以及输出指示器(Output Indicator),这些构成了提示词的核心要素,对于涉及有效的AI交互至关重要: 1. **指令**:想要模型执行的特定任务或指令 2. **上下文**:包含外部信息或额外的上下文信息,引导语音模型更好地响应 3. **输入数据**:用户输入的内容或问题 4. **输出指示**:指定输出的类型或格式 <details class="lake-collapse"><summary id="u3417d2a2"><em><strong><span class="ne-text">举例</span></strong></em><span class="ne-text">:</span><em><span class="ne-text">关于使用大模型语言模型来生成文章摘要的prompt</span></em></summary><ol class="ne-ol"><li id="u1735b9a2" data-lake-index-type="0"><em><span class="ne-text" style="text-decoration: underline">指令</span></em><em><span class="ne-text">:生成给一篇关于“气候变化对农业影响”的文章摘要。</span></em></li><li id="ub04aa5ca" data-lake-index-type="0"><em><span class="ne-text" style="text-decoration: underline">上下文</span></em><em><span class="ne-text">:请考虑最新的科学研究和统计数据,以及气候变化如何影响全球不同地区的农业生产。</span></em></li><li id="ua659b30b" data-lake-index-type="0"><em><span class="ne-text" style="text-decoration: underline">输入数据</span></em><em><span class="ne-text">:用户提供一篇或几篇详细讨论气候变化对农业影响的长篇文章。</span></em></li><li id="u7ff1096c" data-lake-index-type="0"><em><span class="ne-text" style="text-decoration: underline">输入指示</span></em><em><span class="ne-text">:摘要应该在200字以内,突出关键点和主要结论,使用清晰、简洁的语言。</span></em></li></ol></details> 从Prompt的内容和形式,可以将其分为: + 零样本提示(Zero-shot prompts):用户仅提供了一个任务描述 (不提供例子)。 + 少样本提示(Few-shot prompts):用户提供如何完成任务的示例(也就是说给模型举几个例子,这样模型能够更好的回答你的问题)。 它俩的区别本质在于上下文的多寡,上下文越多,得到的回答越准确。 > 注意:不是每个要素都必须包含在Prompt里,具体根据你要执行的任务来设计。 > **** ## **Prompt调优方式** #### **<u>思维链(Chain of Thoughts,CoT)</u>** 思维链是一种有效的交互方式,它通过模拟人类的思考过程来引导大型语言模型逐步解决问题。在这个过程中,用户首先提供问题的初始信息,然后通过一系列的提示引导模型逐步进行推理。这些推理步骤构成了所谓的思维链,它们帮助模型像人类一样,通过逻辑和分析来逐步接近最终答案。通过这种方式,大模型能够更深入地参与到问题的解决过程中,展现出更高的解决问题的能力。 :::info _举例:_ _<font style="color:#060607;">假设你想知道两个数的和,但这两个数的和大于100,你想知道超过100多少。你可以这样提问:</font>_ 1. _**<font style="color:#060607;">输入数据</font>**__**<font style="color:#060607;">:两个数分别是45和60。</font>**_ 2. _**<font style="color:#060607;">指令</font>**__**<font style="color:#060607;">:计算这两个数的和,并告诉我超过100多少。</font>**_ _<font style="color:#060607;">模型会首先计算45和60的和(105),然后计算105超过100的部分(5)。这就是一个简单的思维链过程。</font>_ ::: #### **<u>LtM提示方法 (Least to Most prompting, LtM)</u>** <font style="color:#060607;">最少到最多提示过程 (Least to Most prompting, LtM) 将思维链提示过程 (CoT prompting) 进一步发展,首先将问题分解为子问题,然后逐个解决。 与思维链提示过程类似,需要解决的问题被分解成一组建立在彼此之上的子问题。在第二步中,这些子问题被逐个解决。与思维链不同的是,先前子问题的解决方案被输入到提示中,以尝试解决下一个问题。 简单来说就是一步一步来,step by step。单纯的思维链 CoT 不足以解决复杂问题,但是我们可以把它分解成一个个小问题,然后再使用 CoT,这样模型就能把问题求解出来。简而言之,LtM就分为两个步骤: (1) 分解问题 (2) 解决问题。</font> <font style="color:#060607;"></font> #### <u>思维树(Tree of Thoughts, ToT)</u> <font style="color:#060607;">思维树的核心原理是将问题解决过程视为一个逐步深入的过程,每个步骤都构建在前一个步骤的基础上,形成一个有逻辑的推理链。这种方法不仅展示了解决问题的中间步骤,而且还允许模型自我评估不同中间思维在解决问题方面的进展,从而选择最有效的路径达到最终解决方案。</font> :::info _<font style="color:#060607;">举例:</font>_ _<font style="color:#060607;">假设你正在考虑如何度过一个有趣的周末,但你还没有具体计划。你可以使用思维树方法来帮助决策:</font>_ 1. _<font style="color:#060607;">头脑风暴阶段:首先,列出所有可能的活动选项。 </font>__<font style="color:#060607;">• 去徒步 </font>__<font style="color:#060607;">• 尝试一家新餐厅 </font>__<font style="color:#060607;">• 去博物馆</font>_ 2. _<font style="color:#060607;">评估阶段:然后,评估每个活动的可能性和吸引力。 </font>__<font style="color:#060607;">• 去徒步:查看天气预报,选择一个风景优美且不太远的徒步路线。 </font>__<font style="color:#060607;">• 尝试一家新餐厅:搜索评价高的餐厅,考虑你的口味和预算。 </font>__<font style="color:#060607;">• 去博物馆:查看博物馆的开放时间和展览信息,选择你最感兴趣的展览。</font>_ 3. _<font style="color:#060607;">深挖阶段:对每个选项进行更深入的思考,想象实际执行这些活动的场景。 </font>__<font style="color:#060607;">• 去徒步:想象自己在大自然中呼吸新鲜空气,享受运动的乐趣。 </font>__<font style="color:#060607;">• 尝试一家新餐厅:想象自己品尝美味佳肴,享受新的餐饮体验。 </font>__<font style="color:#060607;">• 去博物馆:想象自己在博物馆中欣赏艺术作品,增长知识。</font>_ 4. _<font style="color:#060607;">决策阶段:基于前面的思考,选择一个最吸引你的活动。 </font>__<font style="color:#060607;">• 例如,如果你发现天气晴朗,你可能会决定去徒步,因为你喜欢户外活动,而且有一个风景优美的徒步路线吸引了你。</font>_ _<font style="color:#060607;">通过这个思维树的过程,你不仅列出了所有可能的活动,还对每个活动进行了详细的评估和想象,最终帮助你做出了一个满意的决策。这个过程就像你在思考问题时逐步深入,最终找到最佳解决方案。</font>_ ::: ## **Prompt攻击与防范** **Prompt攻击**是指劫持语言模型输出的过程,它允许黑客使用模型说出任何他们想要的话。在提示词注入攻击中,攻击者会尝试通过提供高喊恶意内容输入,来操纵语言模型的输出。通俗来讲就是,设计prompt引导模型回答出它不应该回答的内容。 **Prompt防范**是指通过设计prompt来防范prompt攻击

写的真好 又学到了

写的真好 又学到了
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: HswOAuth/llm_course#101
No description provided.