对大型语言模型(LLM)进行基础生成调用,需要提供一段文本并接收一个回应。尽管这种方式直接,但输出的质量可能会大相径庭。模型的应答直接反映了它接收到的输入。这就是提示工程的用武之地。提示工程是一种实践,它通过设计和优化给LLM的输入,以获得更准确、相关和有用的输出。可以把LLM看作一个知识渊博、能力出众但又非常遵循字面意思的助手。如果你给出模糊的指令,你就会得到一个模糊或笼统的回答。如果你提供清晰、详细且结构良好的指令,你就能指引模型以高准确度完成特定任务。设想一下为了相同目标,下面两个提示之间的区别:模糊提示“给我讲讲Python。”LLM可能会回应一段关于Python编程语言的笼统的多段落历史,这可能并非你所求。优化提示“向一位有Java背景的程序员解释Python。主要说明语法和面向对象实现方面的三个重要差异。为每一点提供一个简短的代码片段。”第二个提示更加有效,因为它提供了具体的限制和背景信息。它指引模型生成定制化、结构化且立即可用的回应。这就是提示工程的精髓所在:从简单的提问转向精心构建的指令。有效提示的构成尽管提示可以很简单,但一个经过优化的提示通常包含几个不同的组成部分,它们共同指引模型。理解这些部分将帮助你构建自己的提示,以获得更优结果。指令:清晰具体的命令,告知模型要做什么。这是主要任务,例如“总结”、“翻译”、“分类”或“编写代码”。背景:模型准确执行指令所需的背景信息。这可能是一段要总结的文本、用于个性化回应的用户信息,或是技术文档。输入数据:模型应该操作的具体数据。这通常与背景信息一同提供,例如你希望模型审查的代码片段。输出格式:指定模型应如何构造其回应的指令。你可以要求输出为JSON对象、Markdown表格、编号列表或单个句子。通过结合这些元素,你将获得对模型行为很大程度的控制。例如:## 指令 ## 对以下客户评价的情感进行分类。 ## 背景 ## 该用户是销售电子产品的电商平台的客户。 ## 输入数据 ## “笔记本电脑晚到了一天,但性能令人难以置信。我非常满意!” ## 输出格式 ## 返回一个JSON对象,包含两个键:“sentiment”(选项:“positive”、“negative”、“neutral”)和“confidence”(一个介于0.0和1.0之间的浮点数)。这种结构化方法几乎没有模糊空间,并指引模型生成可预测、机器可读的输出。在本章中,我们将了解构建、管理和优化此类提示的工具和技术。我们将首先使用模板引擎创建动态提示,这些提示可以通过程序用变量填充,使其成为应用程序中可重用和可扩展的组成部分。