📘 **TELUS Agriculture & Consumer Goods** 如何通过 **Haystack Agents** 转变促销交易

LLM 提示入门指南

如何设计自然语言提示词以从大型语言模型中获得最佳答案

大型语言模型(LLMs)使得人人都可以与 AI 交互——无需编写代码,而是使用自然语言提示词。语言现在可以作为复杂模型的接口,这使得我们有必要更仔细地研究我们使用的提示词。

正确使用时,生成模型可以为企业带来极具价值的成果。因此,为了利用 LLM 的巨大潜力,尤其是当您希望将其集成到产品中时,正确设计提示词是必不可少的。这就是为什么围绕“提示词工程”这个主题形成了一个完整的行业。在这篇文章中,我们将解释我们对这项技术的看法,并分享提示词的宜与忌。

什么是提示词?

提示词是给 LLM 的指令。如果您与 ChatGPT 这样的 LLM 互动过,您就使用过提示词。理想情况下,提示词会引出正确、形式和内容恰当且长度合适的答案。

本质上,提示词就是将您的意图打包成一个自然语言查询,从而使模型返回所需的响应。

如何构思好的提示词

好的提示词遵循两个基本原则:清晰度和具体性。清晰度指使用简单、明确的语言,避免行话和过于复杂的词汇。因此,与其让您的查询简短而有力,不如采取迂回的方式,使您的观点对 LLM 足够清晰。

不清晰提示词的示例

谁赢得了选举?

清晰提示词的示例

哪个政党赢得了 2023 年巴拉圭大选?

另一方面,具体性指的是对上下文的需求。告诉您的模型尽可能多的信息,以便回答您的问题。有时,这甚至可能接近讲故事的范畴。

不具体提示词的示例

为我的自传生成一系列标题。

具体提示词的示例

为我的自传生成十个标题。这本书讲述了我作为一名冒险家不平凡的生活经历,遇到了许多不同的人物,最终在园艺中找到了平静。

让我们来看一些让我们的提示词更好的技巧。

提示词工程技巧

提示词不是一门科学,称之为“工程”可能有些夸张。但是,LLM 的研究人员和用户已经发现了一些能持续改进模型响应的技巧。

明确“要”做什么,而不是“不要”做什么

这一点实际上延续了我们的具体性主题,因为“要”的指令本质上比“不要”更具体。所以,与其告诉模型不要做什么,不如明确说明我们希望它做什么——如果我们知道是什么的话。

让我们想象一下,在我们之前的例子中,我们希望确保 LLM 不会生成过长的标题(因为这些模型往往会这样做)。与其说:

不要让标题太长

最好具体说明:

每个标题的长度应在两个到五个单词之间。

使用少样本提示

在我们的例子中,我们要求一个特定项目(自传标题)且长度特定(两到五个单词)。这种没有具体示例的指令被称为“零样本提示”。

然而,大多数模型都受益于“少样本提示”,即您提供一些示例供模型学习期望的模式。在我们的提示词中,我们可以添加一些现有的标题作为示例,以帮助模型更好地理解我们的需求。

以下是一些示例:漫漫自由路,愿望饮,我知笼中鸟为何歌唱。

以有意义的方式构建您的提示词

引号、项目符号、换行等元素使人类更容易解析文本。您猜怎么着?LLM 也是如此。让我们将这一见解应用到我们之前的例子中,再次详细说明完整的提示词。

Generate a list of ten titles for my autobiography. The book is about my journey as an adventurer who has lived an unconventional life, meeting many different personalities and finally finding peace in gardening. Each title should be between two and five words long.

### Examples of great titles ###  
      
- “Long walk to freedom”  
- “Wishful drinking”  
- “I know why the caged bird sings”

现在我们已经完善了提示词,LLM 的输出是什么样的?以下是 ChatGPT 的回复:

An output of a list of ten titles in the ChatGPT interface. The titles are: 1. Trails of Wanderlust: Roaming Hearts, 2. Serendipity’s Wild Ride: Life Unmapped, 3: Journeys Beyond Borders: Seeking Home, 4. Tales Unraveled: Nomadic Chronicles, 5. Discoveries in Unexpected Places, 6. From Vagabond to Green Thumb, 7. Ripples of Adventure: Tilling Tranquility, 8. Seeking Skies, Finding Roots, 9. Footprints and Seedlings: Unconventional Harmony, 10. Chasing Horizons, Cultivating Serenity

“寻觅天空,寻根”太搞笑了,我绝对会考虑读这本书。

使用引导词

有时,最简单的技巧是最有效的。东京大学的研究人员表明,指示模型在响应之前“一步一步地思考”可以产生更准确的结果,并帮助模型纠正自己的错误。这种方法被称为使用“引导词”,因为我们温和地引导模型制定更有效的解决问题的计划。

模型被迫将其解决方案分解为多个更易于管理的步骤,而不是允许其随意猜测。看到这个简单的技巧如何提高模型的性能是很惊人的。这是一个需要一点递归思维的数学难题的例子:

ChatGPT input and output: The prompt “Add 1 and 3 and then divide by the latter and then add the former” elicits the answer “2” from the model.

LLM 自信地给出了错误的答案。以下是我们要求它“一步一步地思考”时发生的情况:

ChatGPT input and output: The prompt “Add 1 and 3 and then divide by the latter and then add the former. Let’s think step by step:” elicits the answer “Step1: Add 1 and 3. Result: 4, Step 2: Divide by the latter. Result: 4/3 = 1.333…, Step 3: Add the former. Result: 1.333…+1=2.333…. The final answer is 2.333…” from the model.

这次,最终答案是正确的。

提示词的陷阱

除了这些改进技术,了解指令中的哪些元素会误导模型也很有帮助。例如,有些人会尝试在提示词中加入要求简短、一个词的答案的请求,以防止模型冗长。

然而,如最后一个例子所示,在 LLM 方面,更冗长的答案可能并非坏事——而是这些模型用来得出正确响应的一种技术。LLM 可能很快就会学会不分享它们的思考过程。在此期间,我们应该允许它们自由发挥,并避免要求一个词的答案。

另一个问题是当您超出模型的上下文长度时。由于这些大型 Transformer 模型的性质,LLM 的“上下文窗口”(即它可以一次处理的文本部分)包括提示词和响应。如果您超出模型的上下文长度,其输出将下降。

虽然这是一个引人入胜的主题,但它也相当复杂——不同模型的上下文长度差异很大,而且即使测量提示词的长度也不是一件容易的事。只需记住,如果提示词的长度成为一个问题,您应该考虑将问题分解成更小的步骤。

成为更优秀的提示词使用者

本文在很大程度上借鉴了 Vladimir Blagojevic 关于“使用 Haystack 提示 LLM”的网络研讨会。在其中,Vladimir,他是 deepset 的核心工程团队成员,深入探讨了提示词的艺术,并展示了我们用于 NLP 的开源框架 Haystack 如何提供恰到好处的工具来正确进行提示词设计。

有关如何构思出色提示词的更多技巧,请参阅我们的提示词工程指南

提示词在 Agents 中也扮演着重要角色:这是最新的引人入胜的趋势,让您可以利用 LLM 的力量。Agents 接收一种“超级提示词”,指示 LLM 将其推理分解为可管理的步骤,并将这些步骤委派给它认为最能解决任务的工具。请参阅我们关于 Agents 的博客文章以了解更多信息。

最后,您不一定总是需要自己编写提示词。前往我们的PromptHub,在那里您可以找到各种应用的提示词,您可以直接使用它们,或者根据自己的喜好进行调整,以从您的 LLM 中获得最佳答案。