提示工程是一门新兴学科,就像是为大语言模型(LLM)设计的"语言游戏"。通过这个"游戏",我们可以更有效地引导 LLM 来处理问题。只有熟悉了这个游戏的规则,我们才能更清楚地认识到 LLM 的能力和局限。
这个"游戏"不仅帮助我们理解 LLM,它也是提升 LLM 能力的途径。有效的提示工程可以提高大语言模型处理复杂问题的能力(比如一些数学推理问题),也可以提高大语言模型的扩展性(比如可以结合专业领域的知识和外部工具,来提升 LLM 的能力)。
提示工程就像是一把钥匙,为我们理解和应用大语言模型打开了新的大门,无论是现在还是未来,它的潜力都是无穷无尽的。
①人工智能/大模型学习路线
②AI产品经理入门指南
③大模型方向必读书籍PDF版
④超详细海量大模型实战项目
⑤LLM大模型系统学习教程
⑥640套-AI大模型报告合集
⑦从0-1入门大模型教程视频
⑧AGI大模型技术公开课名额
一、六大提高Prompt有效性的策略
这些技巧旨在提供思路,绝非面面俱到,您应随意尝试这里未涉及的创造性思路。
为了获得高度相关的回复,查询需要提供任何重要的细节或上下文信息,否则就要由模型猜测您的意图。
劣质 | 优质 |
---|---|
Excel 中如何相加数字? |
|
在 Excel 中如何对一行金额自动相加?我想对整个工作表的行进行求和,总和显示在右边一列"总计"中。
|
|
谁是总统?
|
2021年墨西哥总统是谁,选举频率是多久一次?
|
|
编写代码计算斐波那契数列。
|
用 TypeScript 编写一个函数来有效地计算斐波那契数列。对代码添加详细注释以解释每个部分的作用及编写方式。
|
|
摘要会议记录。
|
用一段话摘要会议记录。然后用 markdown 列表罗列发言人及每个人的要点。最后,列出会议记录中发言者提出的后续步骤或行动事项(若有)。
|
系统消息可用于指定模型在回复时采用的角色。
三引号、XML标签、标题等分隔符可以帮助标记需不同对待的文本片段。
对于简单的任务,使用分隔符可能不会影响输出质量。然而,任务越复杂,明确任务细节就越重要。不要让 GPT 模型费劲理解您到底在要求什么。
有些任务最好用一系列步骤来表达。明确写出步骤可以让模型更容易遵循。
在所有示例上演示任务的各种变化通常比仅给出说明更高效,但在某些情况下提供示例可能更简单。例如,如果您希望模型模仿回复用户查询的特定风格,而这种风格难以明确表达。这被称为 “few-shot” 提示。
您可以要求模型生成特定目标长度的输出。目标输出长度可以以单词数、句子数、段落数、项目符号数等来指定。但是,指示模型生成特定数量的单词不能高精度实现。模型可以更可靠地生成特定段落数或项目符号数的输出。
如果我们能为模型提供与当前查询相关的可信信息,那么我们可以指示模型使用提供的信息来组成其回答。
鉴于 GPT 模型具有有限的上下文窗口,为了应用此技巧,我们需要某种方法根据问题动态查找相关信息并添加到模型输入中。嵌入可用于实现高效的知识检索。请参阅技巧“使用基于嵌入的搜索实现高效知识检索”以获取更多详细信息。
如果输入补充了相关知识,则可以轻松要求模型在答案中添加引文,引用提供文档的相关段落。输出中的引文然后可以通过与提供文档的字符串匹配来程序化验证。
对于需要大量独立指令集来处理不同情况的任务,首先对查询进行分类以确定所需指令会很有益。这可以通过定义固定类别并针对每个类别硬编码相关指令来实现。该过程也可以递归应用以将任务分解成一系列阶段。这种方法的优点是每个查询只包含执行任务下一阶段所需的指令,这可以与使用单个查询执行整个任务相比降低错误率。这也可以降低成本,因为更大的提示需要更高的运行成本(查看价格信息)。
例如,对于客户服务应用,查询可以划分为以下类别:
根据客户查询的分类,可以为 GPT 模型提供更具体的指令来处理后续步骤。例如,假设客户需要“故障排除”的帮助。
注意,模型被指示在对话状态发生变化时输出特殊字符串。这使我们可以将系统转化为状态机,其中状态确定注入哪些指令。通过跟踪状态、该状态下相关的指令,以及从该状态允许的状态转移,我们可以为用户体验设置更难以用不太结构化的方法实现的约束。
由于 GPT 模型具有固定的上下文长度,因此将整个对话包含在上下文窗口内的用户与助手之间的对话无法无限期地继续。
这一问题有多种解决方法,一种是在输入大小达到预定阈值长度时,使用一个查询来总结对话的一部分,并将之前对话的摘要包含在系统消息中。或者,可以在整个对话的过程中异步地在后台总结之前的对话。
另一种解决方案是动态选择与当前查询最相关的之前对话部分。请参阅技巧“使用基于嵌入的搜索实现高效知识检索”。
由于 GPT 模型具有固定的上下文长度,它们无法在单个查询中概括比上下文长度减去生成摘要长度还要长的文本。
要摘要像书籍这样的非常长文档,我们可以使用一系列查询逐部分摘要文档。部分摘要可以连接在一起生成摘要的摘要。该过程可以递归进行,直到整个文档被摘要。如果为了理解后面部分需要使用前面部分的信息,则可以在摘要某点内容时,将该点之前文本的运行摘要也包括在内,这一技巧也很有用。OpenAI 之前的研究已经研究了使用 GPT-3 变体递归摘要书籍的效果。