提示词工程进阶:从入门到系统化

2026-05-18提示词工程Prompt

Prompt 的黄金结构

一个高质量的 System Prompt 通常包含以下要素:

1. 角色定义 — "你是一个 XX 专家"
2. 任务说明 — "你的职责是..."
3. 约束条件 — "不要...,必须..."
4. 输出格式 — "请返回 JSON 格式..."
5. 示例(Few-shot)— "例如:..."
6. 边界处理 — "遇到 X 情况时..."

核心技巧

1. Chain-of-Thought (CoT)

引导模型展示推理过程。简单的"让我们一步一步思考"就能显著提升复杂推理任务的准确率。

  • Zero-shot CoT:在问题后加"让我们一步一步思考"
  • Few-shot CoT:提供带推理步骤的示例

2. Few-shot 学习

在 Prompt 中提供 2-5 个输入输出示例。示例的选择直接影响效果:

  • 示例应与目标问题在格式、难度上接近
  • 示例中的边缘情况能帮助模型处理异常
  • 示例过多可能稀释注意力(5 个以内最佳)

3. Structured Output(结构化输出)

要求 LLM 按 JSON Schema 返回,确保输出可被程序解析:

请以 JSON 格式返回:
{
  "intent": "leave_request | knowledge_query | ...",
  "confidence": 0.0~1.0,
  "entities": { "date": "...", "type": "..." }
}

4. 角色扮演(Role Prompting)

给模型一个具体角色能显著改变输出风格和质量。例如"你是一个资深架构师"vs"你是一个初级开发者"。角色越具体越好。

5. 分隔符(Delimiter)

用明确的标记(---, ```, XML 标签)区分 Prompt 的不同部分,减少混淆:

【系统指令】
你是...

【知识库参考材料】
{retrieved_chunks}

【用户问题】
{query}

系统化 Prompt 管理

当 Prompt 变多时,需要系统化管理:

  • 版本控制:每个 Prompt 都有版本号和变更记录
  • 模板化:用模板引擎(Jinja2、Mustache)动态注入变量
  • A/B 测试:对比不同 Prompt 版本的效果
  • 评估集:建立固定的测试集来量化 Prompt 改进

常见陷阱

  • 过度约束:太多"不要"反而不稳定,用正面指令替代
  • 幻觉放大:要求"如果你不确定就说不知道"比硬约束有效
  • Token 浪费:冗长的示例和指令消耗上下文窗口
  • 位置偏差:模型更关注 Prompt 开头和结尾的内容
未标记