跳到主要内容

提示链

提示链简介

为了提高LLM的可靠性和性能,一个重要的提示工程技术是将任务分解为子任务。一旦这些子任务被确定,LLM将被提示执行一个子任务,然后其响应被用作另一个提示的输入。这就是所谓的提示链,其中一个任务被分解为子任务,以创建一系列提示操作的思想。

提示链对于完成复杂任务非常有用,如果LLM被提示使用非常详细的提示可能会难以应对。在提示链中,链提示在达到最终期望状态之前对生成的响应执行转换或附加处理。

除了实现更好的性能外,提示链还有助于提高LLM应用的透明度、可控性和可靠性。这意味着您可以更容易地调试模型响应中的问题,并分析和改进需要改进的不同阶段的性能。

在构建以LLM为动力的对话助手以及改进应用程序的个性化和用户体验时,提示链特别有用。

提示链的用例

文档问答的提示链

提示链可以在涉及多个操作或转换的不同场景中使用。例如,LLM的一个常见用例涉及回答关于大型文本文档的问题。如果您设计了两个不同的提示,其中第一个提示负责提取相关引用以回答问题,第二个提示以引用和原始文档作为输入来回答给定的问题,那将会很有帮助。换句话说,您将创建两个不同的提示来执行回答文档中给定问题的任务。

下面的第一个提示从文档中提取相关引用以回答问题。请注意,为了简单起见,我们在文档中添加了一个占位符 {{document}}。您可以复制并粘贴维基百科上的文章,例如提示工程页面,来测试提示。由于此任务使用了更大的上下文,我们使用了OpenAI的gpt-4-1106-preview模型。您可以使用其他长上下文LLM,如Claude,来使用提示。

提示1:

您是一个乐于助人的助手。您的任务是帮助回答文档中给定的问题。第一步是从文档中提取与问题相关的引用,由####分隔。请使用<引用></引用>输出引用列表。如果没有找到相关引用,请回复“未找到相关引用!”。

####
{{document}}
####

以下是包括使用user角色传递的问题的整个提示的截图。

PC1

提示1的输出:

<引用>
- Chain-of-thought (CoT) prompting[27]
- Generated knowledge prompting[37]
- Least-to-most prompting[38]
- Self-consistency decoding[39]
- Complexity-based prompting[41]
- Self-refine[42]
- Tree-of-thought prompting[43]
- Maieutic prompting[45]
- Directional-stimulus prompting[46]
- Textual inversion and embeddings[59]
- Using gradient descent to search for prompts[61][62][63][64]
- Prompt injection[65][66][67]
</引用>

第一个提示返回的引用现在可以作为下面的第二个提示的输入。请注意,您可以进一步清理引用,即删除引用。这些引用可以被删除或作为链中另一个提示的一部分利用,但您现在可以忽略这一点。然后,第二个提示接受提示1提取的相关引用,并准备一个对文档中给定问题和那些提取的引用有帮助的响应。第二个提示可以是以下内容:

提示2:

给定从文档中提取的相关引用(由<引用></引用>分隔)和原始文档(由####分隔),请撰写对问题的答案。确保答案准确、友好,并且有帮助。

####
{{document}}
####

<引用>
- Chain-of-thought (CoT) prompting[27]
- Generated knowledge prompting[37]
- Least-to-most prompting[38]
- Self-consistency decoding[39]
- Complexity-based prompting[41]
- Self-refine[42]
- Tree-of-thought prompting[43]
- Maieutic prompting[45]
- Directional-stimulus prompting[46]
- Textual inversion and embeddings[59]
- Using gradient descent to search for prompts[61][62][63][64]
- Prompt injection[65][66][67]
</引用>

提示2的输出:

文档中提到的提示技术包括:

1. 思维链 (CoT) 提示[27]
2. 生成知识提示[37]
3. 由浅入深提示[38]
4. 自洽解码[39]
5. 基于复杂性的提示[41]
6. 自我完善[42]
7. 思维树提示[43]
8. 探询式提示[45]
9. 定向刺激提示[46]
10. 文本倒置和嵌入[59]
11. 使用梯度下降搜索提示[61][62][63][64]
12. 提示注入[65][66][67]

这些技术各自采用独特的策略,以增强或指定与大型语言模型的交互,从而产生期望的结果。

正如你所看到的,简化和创建提示链是一种有用的提示方法,其中响应需要经历多个操作或转换。作为一项练习,可以设计一个提示,从响应中删除引用(例如,[27]),然后将其作为最终响应发送给你应用程序的用户。

你也可以在这份文档中找到更多利用 Claude LLM 的提示链示例。我们的示例受到并改编自他们的示例。