From 8471f1a31fe42d6addb68485c75ac2ff454b9fb2 Mon Sep 17 00:00:00 2001 From: Cindy Zhang <144266143+xyyy9@users.noreply.github.com> Date: Wed, 3 Jan 2024 18:49:37 -0800 Subject: [PATCH] Update prompt_chaining.zh.mdx --- pages/techniques/prompt_chaining.zh.mdx | 101 +++++++++++++++++++++++- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/pages/techniques/prompt_chaining.zh.mdx b/pages/techniques/prompt_chaining.zh.mdx index c6ddc4f..0d37f3f 100644 --- a/pages/techniques/prompt_chaining.zh.mdx +++ b/pages/techniques/prompt_chaining.zh.mdx @@ -1,3 +1,100 @@ -# Prompt Chaining +# 链式提示 -This page needs a translation! Feel free to contribute a translation by clicking the `Edit this page` button on the right side. \ No newline at end of file +## 简介 + +为了提高大语言模型的性能使其更可靠,一个重要的提示工程技术是将任务分解为许多子任务。 确定子任务后,将子任务的提示词提供给语言模型,得到的结果作为新的提示词的一部分。 这就是所谓的链式提示(prompt chaining),一个任务被分解为多个子任务,根据子任务创建一系列提示操作。 + +链式提示可以完成很复杂的任务。LLM可能无法仅用一个非常详细的提示完成这些任务。在链式提示中,提示链对生成的回应执行转换或其他处理,直到达到期望结果。 + +除了提高性能,链式提示还有助于提高LLM应用的透明度,增加控制性和可靠性。这意味着您可以更容易地定位模型中的问题,分析并改进需要提高的不同阶段的性能。 + +链式提示在构建LLM驱动的对话助手和提高应用程序的个性化用户体验方面非常有用。 + +## 链式提示使用示例 + +### 文档问答中的链式提示 + +提示链可以用于不同的场景,这些场景可能涉及多个操作或转换。例如,LLM的一个常见用途是根据大型文本文档回答问题。想要更好阅读大文本文档,可以设计两个不同的提示,第一个提示负责提取相关引文以回答问题,第二个提示则以引文和原始文档为输入来回答给定的问题。换句话说,可以创建两个不同的提示来执行根据文档回答问题的任务。 + +下面的第一个提示根据问题从文档中提取相关引文。请注意,为了简化,我们为文档添加了一个占位符`{{文档}}`。要测试此提示,您可以从维基百科复制并粘贴一篇文章,例如这个关于[提示工程](https://zh.wikipedia.org/wiki/提示工程)的页面。由于此任务使用了较长的上下文,我们使用了OpenAI的`gpt-4-1106-preview`模型。您也可以将此提示与其他长上下文LLM(如Claude)一起使用。 + +提示1: +``` +你是一个很有帮助的助手。你的任务是根据文档回答问题。第一步是从文档中提取与问题相关的引文,由####分隔。请使用输出引文列表。如果没有找到相关引文,请回应“未找到相关引文!”。 + +#### +{{文档}} +#### +``` + +这是整个提示的截图,包括通过`user`角色传递的问题。 + + + +提示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] + +``` + +在第一个提示中返回的引文现在可以用作下面第二个提示的输入。您可以对这些引文进行清理,比如移除引用标志。可以在提示链中新建另一个提示来移除或使用这些引用标志,但现在您可以忽略这些。然后,第二个提示接收由第一个提示提取的相关引文,并根据文档和这些提取的引文生成一个有帮助的回答。第二个提示可以是以下内容: + +提示2: +``` +根据从文档中提取的相关引文(由分隔)和原始文档(由####分隔),请构建对问题的回答。请确保答案准确、语气友好且有帮助。 + +#### +{{文档}} +#### + + +- 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. Chain-of-thought (CoT) prompting[27] +2. Generated knowledge prompting[37] +3. Least-to-most prompting[38] +4. Self-consistency decoding[39] +5. Complexity-based prompting[41] +6. Self-refine[42] +7. Tree-of-thought prompting[43] +8. Maieutic prompting[45] +9. Directional-stimulus prompting[46] +10. Textual inversion and embeddings[59] +11. Using gradient descent to search for prompts[61][62][63][64] +12. Prompt injection[65][66][67] + +每一种技术都采用独特的策略来增强或明确与大型语言模型的互动,以产生期望的结果。 +``` + +如您所见,简化并创建提示链是一种有用的提示方法,其中响应需要经过多个操作或转换。作为练习,您可以自由设计一个提示,它会在将响应作为最终回应发送给应用程序用户之前,移除响应中的引用标志(例如,`[27]`)。 + +您还可以在这份[文档](https://docs.anthropic.com/claude/docs/prompt-chaining)中找到更多关于提示链的示例,这些示例利用了Claude LLM。我们的示例灵感来源于并采用了他们的示例。