高级提示词工程技术¶
本指南介绍了 58 种有研究支持的提示词工程技术,并映射到 Instructor 实现。本指南基于 The Prompt Report(由 Learn Prompting 发布,分析了 1,500 多篇关于提示词工程的学术论文)。
提示词技术地图¶
下图展示了不同的提示词技术如何相互关联以及何时使用它们
flowchart TD
A[Choose Prompting Technique] --> B{Have Examples?}
B -->|No| C[Zero-Shot Techniques]
B -->|Yes| D[Few-Shot Techniques]
C --> C1[Role Prompting]
C --> C2[Emotional Language]
C --> C3[Style Definition]
C --> C4[Follow-Up Generation]
D --> D1[Example Ordering]
D --> D2[Example Selection]
D --> D3[Example Generation]
A --> E{Need Reasoning?}
E -->|Yes| F[Thought Generation]
F --> F1[Chain of Thought]
F --> F2[Step-Back Prompting]
F --> F3[Thread of Thought]
A --> G{Complex Problem?}
G -->|Yes| H[Decomposition]
H --> H1[Least-to-Most]
H --> H2[Tree of Thought]
H --> H3[Plan and Solve]
A --> I{Need Verification?}
I -->|Yes| J[Self-Criticism]
J --> J1[Self-Verification]
J --> J2[Chain of Verification]
J --> J3[Self-Refinement]
A --> K{Want Multiple Perspectives?}
K -->|Yes| L[Ensembling]
L --> L1[Self-Consistency]
L --> L2[Meta-CoT]
L --> L3[Specialized Experts]
classDef category fill:#e2f0fb,stroke:#b8daff,color:#004085;
classDef technique fill:#d4edda,stroke:#c3e6cb,color:#155724;
classDef decision fill:#fff3cd,stroke:#ffeeba,color:#856404;
class A,C,D,F,H,J,L category
class C1,C2,C3,C4,D1,D2,D3,F1,F2,F3,H1,H2,H3,J1,J2,J3,L1,L2,L3 technique
class B,E,G,I,K decision
何时使用各种技术¶
目标 | 推荐技术 |
---|---|
提高准确性 | 思维链, 自我验证, 自洽性 |
处理复杂问题 | 分解, 思维树, 从易到难 |
生成创意内容 | 角色提示, 情感语言, 风格定义 |
验证事实正确性 | 验证链, 自我校准 |
使用少量示例优化 | KNN 示例选择, 主动提示 |
处理不确定性 | 不确定性路由思维链, 自洽性 |
零样本¶
这些技术无需示例即可提高模型性能
技术 | 描述 | 用例 |
---|---|---|
情感语言 | 在提示词中添加情感色彩 | 创意写作, 情感共鸣响应 |
角色分配 | 为模型指定特定角色 | 专家知识, 专业视角 |
风格定义 | 指定写作风格 | 具有特定语调或格式的内容 |
提示词优化 | 自动优化提示词 | 结果的迭代改进 |
视角模拟 | 让模型采纳不同视角 | 多方利益相关者分析 |
模糊性澄清 | 识别并解决不明确之处 | 提高响应的精确度 |
查询重复 | 要求模型重述任务 | 更好地理解任务 |
后续问题生成 | 生成澄清性问题 | 深入探索主题 |
少样本¶
在提示词中有效使用示例的技术
技术 | 描述 | 用例 |
---|---|---|
示例生成 | 自动创建示例 | 示例数据有限的领域 |
示例排序 | 示例的最优排序 | 提高模式识别能力 |
KNN 示例选择 | 选择与查询相似的示例 | 领域特定的准确性 |
Vote-K 选择 | 高级基于相似性的选择 | 复杂模式匹配 |
思维生成¶
鼓励模型进行类人推理的方法
零样本推理¶
技术 | 描述 | 用例 |
---|---|---|
类比思维链 | 使用类比生成推理 | 复杂问题解决 |
回溯提示 | 首先考虑更高层次的问题 | 科学和抽象推理 |
思维线 | 鼓励分步分析 | 生成详细解释 |
表格思维链 | 以表格格式构建推理 | 多因素分析 |
少样本推理¶
技术 | 描述 | 用例 |
---|---|---|
主动提示 | 标注不确定示例 | 提高边缘案例的准确性 |
自动思维链 | 选择多样化的示例 | 广泛的领域覆盖 |
基于复杂度的思维链 | 使用复杂示例 | 具有挑战性的问题类型 |
对比思维链 | 包含正确和错误情况 | 错误检测和避免 |
思维记忆 | 使用高确定性示例 | 关键应用中的可靠性 |
不确定性路由思维链 | 选择最确定的推理路径 | 不确定性下的决策 |
提示词挖掘 | 生成模板化提示词 | 高效的提示词工程 |
集成¶
组合多个提示词或响应的技术
技术 | 描述 | 用例 |
---|---|---|
一致的、多样化的集合 | 构建一致的示例集 | 稳定的性能 |
批量上下文示例 | 高效的示例批量处理 | 性能优化 |
步骤验证 | 验证单个步骤 | 复杂工作流 |
最大化互信息 | 信息论优化 | 信息密集的输出 |
元思维链 | 合并多个推理链 | 复杂问题解决 |
专业专家 | 使用不同的“专家”提示词 | 多领域任务 |
自洽性 | 选择最一致的推理 | 逻辑准确性 |
通用自洽性 | 领域无关的一致性 | 常识任务 |
任务特定选择 | 根据任务选择示例 | 专业领域任务 |
提示词改写 | 使用同一提示词的不同变体 | 稳健的输出 |
自我批评¶
模型验证或改进自身响应的方法
技术 | 描述 | 用例 |
---|---|---|
验证链 | 生成验证问题 | 事实核查, 准确性 |
自我校准 | 询问答案是否正确 | 置信度估计 |
自我改进 | 自动生成反馈并改进 | 迭代改进 |
自我验证 | 对多个解决方案评分 | 质量评估 |
逆向思维链 | 重构问题 | 复杂推理验证 |
累积推理 | 生成可能的步骤 | 彻底分析 |
分解¶
分解复杂问题的技术
技术 | 描述 | 用例 |
---|---|---|
函数式分解 | 将子问题实现为函数 | 模块化问题解决 |
忠实思维链 | 使用自然语言和符号语言 | 数学推理 |
从易到难 | 解决越来越复杂的子问题 | 教育应用 |
规划与解决 | 生成结构化计划 | 项目规划 |
思维程序 | 使用代码进行推理 | 算法问题 |
递归思维 | 递归地解决子问题 | 分层问题 |
思维骨架 | 生成大纲结构 | 写作, 规划 |
思维树 | 搜索可能的路径 | 决策树, 探索 |
使用 Instructor 实现¶
所有这些提示词工程技术都可以通过以下方式使用 Instructor 实现:
- 定义合适的 Pydantic 模型来捕获预期结构
- 在模型的 docstring 或字段描述中加入提示词技术
- 将修补后的 LLM 客户端与响应模型一起使用
import instructor
from openai import OpenAI
from pydantic import BaseModel, Field
# Example implementing Chain of Thought with a field
class ReasonedAnswer(BaseModel):
"""Answer the following question with detailed reasoning."""
chain_of_thought: str = Field(
description="Step-by-step reasoning process to solve the problem"
)
final_answer: str = Field(
description="The final conclusion after reasoning"
)
client = instructor.from_openai(OpenAI())
response = client.chat.completions.create(
model="gpt-4",
response_model=ReasonedAnswer,
messages=[
{"role": "user", "content": "What is the cube root of 27?"}
]
)
print(f"Reasoning: {response.chain_of_thought}")
print(f"Answer: {response.final_answer}")
参考资料¶
* 基于 The Prompt Report: A Systematic Survey of Prompting Techniques