技巧

提示词工程技巧:何时用什么

对比十五种提示词工程技巧,从少样本、思维链到 ReAct、提示词链和压缩,并给出选择每一种的规则。

译自英文原文。代码、提示词和模型输出保留英文。

技巧是一种刻意设计的方式,用来组织一个提示词或一连串提示词,以解决朴素指令解决不了的问题。每种技巧都有 token、延迟或复杂度方面的成本。关键在于使用能奏效的最轻量的那一种。

技巧一览

技巧 作用 成本
少样本提示词 展示期望输出的示例 每次调用的 token
角色提示词 设定专业身份、受众和语气 极低
上下文注入 补充模型缺少的事实 每次调用的 token
输出约束 固定篇幅、格式和允许的取值 极低
结构化输出提示词 返回符合 schema 的数据 极低
思维链 在回答前逐步推理 输出 token、延迟
自洽性 采样多个答案并取多数 多次调用
提示词分解 把问题拆成子问题 设计工作量
提示词链 把子任务作为独立的提示词依次运行 多次调用
ReAct 推理与工具调用交替进行 多次调用、工具
迭代式优化 通过度量改进提示词 你的时间
提示词精修 修改措辞以提高清晰度和精确度 你的时间
提示词评估 依据标准给输出打分 一个测试集
提示词测试 每次改动后重新运行检查 自动化
提示词压缩 在不损失含义的前提下删除 token 极低

塑造单个提示词的技巧

少样本提示词。 加入输入输出对。最适合需要判断的场景和自定义风格。指南:少样本提示词。

角色提示词。 开头说明模型是谁、在和谁说话。它选择的是一种语域,并不增加知识。指南:系统提示词与角色提示词。

上下文注入。 把答案所依赖的文档、记录或搜索结果放进分隔符中,并指示模型据此作答。当上下文是自动获取时,这就成为 RAG 提示词。

Answer using only the policy in the tags. If it does not say, reply "not covered".

<policy>
{{policy_text}}
</policy>

输出约束与结构化输出。 指定格式、字段、篇幅,以及数据缺失时怎么办。指南:结构化输出提示词。

推理类技巧

思维链。 要求模型在给出答案之前先演算问题。对于不在内部推理的模型,它在多步逻辑和算术上有帮助。内置推理的模型本来就在这样做,告诉它们“一步一步地思考”收效甚微。

自洽性。 把同一个推理提示词运行多次,取最常见的答案。在只有一个正确结果的问题上,用成本换取准确率。

两者都在思维链提示词与自洽性中介绍。

使用多个提示词的技巧

提示词分解。 把一个难题拆成若干更小、每个都能答好的问题,再把答案合并起来。

提示词链。 把这些部分作为独立的调用运行,把每个输出传给下一步。每个提示词都保持简单并且可测试。指南:提示词链与分解。

ReAct。 让模型在推理与行动之间交替:它判断自己需要什么,调用工具,读取结果,然后继续。这是大多数 AI 智能体背后的循环。指南:ReAct 提示词。

改进提示词的技巧

迭代式优化与精修。 在测试集上运行提示词,找出失败之处,改动一处,再度量。指南:迭代式提示词优化。

评估与测试。 定义什么是“好”,为它打分,并在提示词每次变化时重新运行检查。指南:提示词测试与评估。

提示词压缩。 删除冗词、重复和不必要的上下文,以降低成本和延迟。指南:token 优化。

如何选择

沿着这份清单从上往下,在第一个能解决问题的步骤停下。

  1. 写一条清晰的指令,并带上输出格式。 大多数问题到这里就结束了。
  2. 补上缺失的背景。 如果回答泛泛,或事实有误。
  3. 加入示例。 如果风格或判断不对。
  4. 要求推理。 如果任务需要多个逻辑步骤,而模型不是推理模型。
  5. 把任务拆成一条链。 如果一个提示词承担了太多事情。
  6. 给模型工具。 如果它需要实时数据或需要执行操作。
  7. 多次采样。 如果在单一答案问题上,准确率值得多次调用。

添加任务并不需要的技巧,只会让提示词更长、更慢、更难调试。

组合技巧

技巧可以叠加。一个典型的生产提示词会用到角色、注入的上下文、两个示例和一个 schema。一个典型的智能体会在由这类提示词组成的链上使用 ReAct。每次只加一种技巧并度量,这样你就知道是哪一个物有所值。

从扎实的基础开始

技巧放大的是提示词本身,并不能修复它。在添加任何技巧之前,先用 PromptFlowEngine 提示词分析器检查,清除含糊的措辞、冲突和缺失的格式,并使用提示词优化器来整理结构。