Skip to content

Prompt Engineering

不是"写更好的问题",而是理解 LLM 的推理机制并系统性设计输入以控制输出。Prompt Engineering 是 LLM 应用开发中最基础、最普适的技能——它决定了你是把 GPT-4 用成 GPT-3,还是把 GPT-3 用成 GPT-4。

Overview

Prompt Engineering(提示工程)指通过精心构造输入文本(Prompt)来引导大语言模型产生期望输出的技术与方法论。它不修改模型参数,完全通过输入层面的设计来释放模型能力。

随着模型能力增强,Prompt Engineering 的重心已从" tricks 和 hacks"转向系统性设计模式:清晰的指令结构、恰当的上下文组织、以及利用模型内在推理能力的策略性引导。

Core Techniques

基础范式

技术描述适用场景
Zero-shot直接给出任务指令,不提供示例模型能力已足够强的简单任务
Few-shot提供 1-5 个输入-输出示例需要特定格式、风格或复杂映射的任务
System Prompt在对话开头设定角色、规则、约束需要持续行为控制的对话/Agent 场景
Role Prompting让模型扮演特定角色("你是一位资深医生...")需要领域专业知识或特定口吻

高级技术

技术核心思想效果
Chain-of-Thought (CoT)在示例中展示推理步骤,引导模型逐步思考数学、逻辑、多步推理任务准确率提升 20-40%
Self-Consistency多次采样取多数表决进一步降低推理错误,计算成本换取可靠性
Tree of Thoughts (ToT)维护多个推理路径,评估后选择最优复杂决策、游戏、规划任务
ReAct推理(Reasoning)+ 行动(Acting)交替Agent 场景,模型自主决定何时调用工具
Prompt Chaining将复杂任务拆分为多个子 Prompt 串行执行提高可靠性,降低单 Prompt 复杂度

The Prompt Structure Formula

一个生产级 Prompt 的标准结构:

[角色定义] → [任务描述] → [输入数据] → [输出格式] → [约束条件] → [示例]

具体要素

  1. 角色(Role):"你是一位专业的数据分析师..."
  2. 任务(Task):清晰、具体、可验证的目标描述
  3. 上下文(Context):模型需要知道但输入中未包含的背景信息
  4. 输入(Input):待处理的具体数据
  5. 输出格式(Output Format):JSON、Markdown、表格、特定字段——越具体越好
  6. 约束(Constraints):长度限制、禁止内容、必须包含的元素
  7. 示例(Examples):Few-shot 的核心,展示期望的输入-输出映射

Common Patterns

RAG Prompt 模板

基于以下检索到的上下文信息回答问题。如果上下文不足以回答,请明确说明。

上下文:
{retrieved_chunks}

问题:{user_question}

要求:
- 仅基于上下文回答
- 如果信息不足,回答"根据现有信息无法确定"
- 引用来源编号 [1], [2]...

结构化输出 Prompt

将以下用户评论分析为 JSON 格式:
{
  "sentiment": "positive|neutral|negative",
  "topics": ["topic1", "topic2"],
  "urgency": 1-5,
  "action_required": true|false
}

评论:{user_comment}

Agent 编排 Prompt(ReAct 风格)

你可以使用以下工具:
- search(query): 搜索网络信息
- calculator(expression): 计算数学表达式
- code_interpreter(code): 执行 Python 代码

每步思考后,以以下格式输出:
Thought: [你的推理过程]
Action: [工具名]([参数])
Observation: [工具返回结果]

最终答案以 "Final Answer:" 开头。

Anti-Patterns & Pitfalls

反模式问题修正
过度指令10 条以上的约束让模型困惑聚焦 3-5 条核心约束
模糊目标"分析一下"——分析什么?明确输出格式和评估标准
忽视 Token 限制Prompt 占满上下文窗口精简示例,使用变量替换
静态 Prompt一套 Prompt 走天下A/B 测试、动态组装、版本管理
假设模型知道"像之前那样做"每次对话独立,提供完整上下文
过度依赖 Jailbreak用 trick 绕过安全限制设计合法方式达成目标

Evaluation & Iteration

Prompt Engineering 是一个迭代优化过程:

  1. 建立评估集:20-50 个代表性输入,覆盖边界情况
  2. 定义成功标准:准确率、格式合规率、幻觉率
  3. A/B 对比:每次只改一个变量
  4. 版本管理:用 Git 管理 Prompt 模板,记录变更和效果
  5. 监控生产指标:真实用户输入的分布可能与测试集不同

工具生态

  • PromptLayer / LangSmith:Prompt 版本管理与 A/B 测试
  • Weights & Biases Prompts:与训练流程集成的 Prompt 追踪
  • OpenAI Evals:标准化评估框架

Why It Matters

  • 零成本性能提升:同样的 GPT-4,好 Prompt vs 差 Prompt 的效果差距可达 2-3 倍——无需重新训练
  • 应用开发的基础设施:所有 LLM 应用(RAG、Agent、代码生成)的底层能力
  • 模型能力的风向标:Prompt 技术的演进(CoT → ReAct → ToT)反映了我们对模型推理机制理解的深化
  • 与模型迭代的互补关系:模型变强会降低某些 Prompt 技巧的必要性,但系统性设计原则永远适用

Relationships

Open Questions

  • 随着模型推理能力增强(o1/R1 类模型),传统的 Few-shot CoT Prompt 是否会被模型自主推理取代?
  • Prompt Engineering 是否会像 SQL 一样成为开发者的标准技能,还是被更高层的抽象(可视化编排工具)替代?
  • 多模态 Prompt(图文混合输入)的设计范式尚未成熟——最佳实践是什么?
  • 如何量化 Prompt 的"鲁棒性"——即对输入微小变化的敏感程度?

Sources

AI Knowledge Base — 持续积累