大模型关键能力 / 提示工程(Prompt Engineering)
CHAPTER 04 · TOPIC 02

提示工程(Prompt Engineering)

提示工程是与大模型"对话"的艺术和科学——通过精心设计输入文本(prompt),引导模型产生更准确、更有用的输出。这是使用大模型最直接、最频繁的技术能力。本章系统讲解从基础到高级的提示工程方法。

一句话理解

提示工程是与大模型"对话"的艺术和科学——通过精心设计输入文本(prompt),引导模型产生更准确、更有用的输出。这是使用大模型最直接、最频繁的技术能力。本章系统讲解从基础到高级的提示工程方法。

阅读前置

建议完成第 02 章

本文关注

提示词的基本结构、零样本与少样本学习、思维链(Chain-of-Thought, CoT)

所在知识层

能力扩展 · 大模型关键能力

文章导航
主教学视觉提示工程(Prompt Engineering) · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

提示工程是与大模型"对话"的艺术和科学——通过精心设计输入文本(prompt),引导模型产生更准确、更有用的输出。这是使用大模型最直接、最频繁的技术能力。本章系统讲解从基础到高级的提示工程方法。


1. 提示词的基本结构

1.1 提示词的组成

语义 SVG 重绘提示工程(Prompt Engineering)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文System Prompt(系统提示)系统核心定义模型的角色、行为准则和输出格式Context(上下文)提供背景信息、参考文档、历史对话等工具、结果与反馈Instruction(指令)明确告诉模型要做什么
查看原文结构
┌─ System Prompt(系统提示)──────────────────────┐
│  定义模型的角色、行为准则和输出格式              │
└─────────────────────────────────────────────────┘
                    ↓
┌─ Context(上下文)──────────────────────────────┐
│  提供背景信息、参考文档、历史对话等              │
└─────────────────────────────────────────────────┘
                    ↓
┌─ Instruction(指令)────────────────────────────┐
│  明确告诉模型要做什么                            │
└─────────────────────────────────────────────────┘
                    ↓
┌─ Examples(示例)───────────────────────────────┐
│  提供输入-输出示例,帮助模型理解任务格式          │
└─────────────────────────────────────────────────┘
                    ↓
┌─ Output Format(输出格式)──────────────────────┐
│  指定模型输出的格式要求                          │
└─────────────────────────────────────────────────┘

1.2 好的提示词 vs 差的提示词

语义 SVG 重绘提示工程(Prompt Engineering) · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

差的提示词:"写一篇关于AI的文章"模型不知道写多长、面向谁、什么角度、什…
查看原文结构
差的提示词:
"写一篇关于AI的文章"
→ 模型不知道写多长、面向谁、什么角度、什么风格
语义 SVG 重绘提示工程(Prompt Engineering) · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

好的提示词:"你是一位科技专栏作家。请为企业管理者…文章。要求:1500字左右包含3个实际案例语言专业但不晦涩
查看原文结构
好的提示词:
"你是一位科技专栏作家。请为企业管理者写一篇关于AI在客户服务中应用的
文章。要求:
- 1500字左右
- 包含3个实际案例
- 语言专业但不晦涩
- 以'总结与建议'结尾
- 使用 Markdown 格式"
→ 模型有明确的角色、受众、主题、格式和约束

2. 零样本与少样本学习

2.1 零样本(Zero-shot)

仅凭指令描述任务,不提供任何示例:

TEXT
提示词:
"将以下句子分类为正面、负面或中性情感:
'这家餐厅的食物很棒,但服务太慢了'"

模型输出:
"中性(包含正面和负面情感)"

2.2 少样本(Few-shot)

在提示词中提供几个输入-输出示例:

语义 SVG 重绘提示工程(Prompt Engineering) · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

评论:'产品质量很好,物超所值'正面评论:'完全不能用,浪费钱'负面评论:'还行吧,一般般'中性
查看原文结构
评论:'产品质量很好,物超所值' → 正面
评论:'完全不能用,浪费钱' → 负面
评论:'还行吧,一般般' → 中性
语义 SVG 重绘提示工程(Prompt Engineering) · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

现在判断:评论:'客服态度非常差,再也不买了'
查看原文结构
现在判断:
评论:'客服态度非常差,再也不买了' →"

少样本的技巧:

  • 3-5 个示例通常足够
  • 示例要覆盖不同情况和边界条件
  • 示例的顺序影响结果(把最相关的放在最后)
  • 示例的格式要与期望输出一致

3. 思维链(Chain-of-Thought, CoT)

3.1 基本思想

让模型在给出答案之前先展示推理过程:

语义 SVG 重绘提示工程(Prompt Engineering) · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

不使用 CoT:"小明有 5 个苹果,给了小红 2 个…"6 个"(可能出错
查看原文结构
不使用 CoT:
"小明有 5 个苹果,给了小红 2 个,又买了 3 个。他现在有几个苹果?"
→ "6 个"(可能出错)
语义 SVG 重绘提示工程(Prompt Engineering) · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

使用 CoT(Zero-shot Co…"小明有 5 个苹果,给了小红 2 个…请一步步思考。""让我一步步计算:1. 小明初始有 5 个苹果2. 给了小红 2 个:5 - 2 =…
查看原文结构
使用 CoT(Zero-shot CoT):
"小明有 5 个苹果,给了小红 2 个,又买了 3 个。他现在有几个苹果?
请一步步思考。"
→ "让我一步步计算:
   1. 小明初始有 5 个苹果
   2. 给了小红 2 个:5 - 2 = 3 个
   3. 又买了 3 个:3 + 3 = 6 个
   答案:小明现在有 6 个苹果。"

3.2 CoT 的变体

方法核心思想适用场景
Zero-shot CoT加"请一步步思考"通用数学和逻辑推理
Few-shot CoT提供带推理步骤的示例需要特定推理格式
Self-Consistency多次采样取多数投票提高推理准确性
Least-to-Most从最简子问题开始复杂多步骤推理

3.3 Self-Consistency(自洽性)

语义 SVG 重绘提示工程(Prompt Engineering) · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

推理路径 1:答案 A推理路径 2:推理路径 3:答案 B推理路径 4:
查看原文结构
推理路径 1:→ 答案 A
推理路径 2:→ 答案 A
推理路径 3:→ 答案 B
推理路径 4:→ 答案 A
推理路径 5:→ 答案 C
语义 SVG 重绘提示工程(Prompt Engineering) · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

投票:A 出现 3 最终答案为 A比单次推理更可靠
查看原文结构
投票:A 出现 3 次 → 最终答案为 A
→ 比单次推理更可靠

4. 高级提示技术

4.1 Tree-of-Thought(ToT)

让模型探索多条推理路径,评估并选择最优:

TEXT
问题:用 4 个数字通过加减乘除得到 24

Step 1: 生成多个初始思路
  思路 A: 先尝试乘法组合
  思路 B: 先尝试加法组合
  思路 C: 先尝试混合运算

Step 2: 评估每个思路的可行性
  思路 A: 有前景 (7/10)
  思路 B: 一般 (4/10)
  思路 C: 有前景 (6/10)

Step 3: 沿最有前景的思路继续探索
  ...

4.2 ReAct(Reasoning + Acting)

推理行动交替进行(详见智能体章节):

TEXT
Thought: 我需要查找最新的 GDP 数据
Action: 搜索 "2024年全球GDP排名"
Observation: 搜索结果显示美国第一,中国第二...
Thought: 现在我有了数据,可以回答问题了
Action: 生成最终回答

4.3 结构化提示模板

TEXT
# 角色
你是一位资深数据分析师。

# 任务
分析以下销售数据并给出洞察报告。

# 输入数据
{data}

# 分析要求
1. 识别趋势:月度增长/下降趋势
2. 异常检测:显著偏离正常范围的数据点
3. 对比分析:同比/环比变化
4. 预测建议:基于趋势的下一步行动

# 输出格式
## 趋势分析
...
## 异常发现
...
## 对比分析
...
## 行动建议
1. ...
2. ...

5. 结构化输出

5.1 JSON Mode

让模型以 JSON 格式输出:

TEXT
提示词:
"分析以下文本的情感和关键词,以 JSON 格式输出:
文本:'新款手机性能强大,但电池续航一般'

要求输出格式:
{
  'sentiment': 'positive/negative/mixed',
  'keywords': [...],
  'summary': '...'
}"

5.2 结构化生成(Structured Generation)

使用约束解码强制模型输出符合特定 schema:

PYTHON
# 使用 Outlines 或 Guidance 库
from pydantic import BaseModel

class Analysis(BaseModel):
    sentiment: str
    keywords: list[str]
    confidence: float

# 模型输出保证符合 Analysis schema
# 不需要重试或后处理

5.3 XML / Markdown 标记

使用标记来组织和解析提示词:

XML
<document>
这是需要分析的文档内容...
</document>

<question>
请总结文档的三个主要观点。
</question>

<output_format>
请用以下格式输出:
- 观点1: ...
- 观点2: ...
- 观点3: ...
</output_format>

6. 提示工程最佳实践

6.1 核心原则

原则说明
明确具体避免模糊的描述,给出具体的要求和约束
分步骤复杂任务拆分为明确的步骤
提供示例用 few-shot 示例说明期望的输出格式
设定角色给模型一个专业角色,影响输出风格
限制范围明确告诉模型不要做什么
迭代优化基于输出结果不断调整提示词

6.2 常见问题与解决

问题原因解决方案
输出太长未限制长度加"用 200 字以内回答"
输出太短要求不明确加"请详细解释"或给结构
格式不对格式要求不清晰提供明确的格式模板和示例
内容不准确模型幻觉加"基于以下信息回答"(配合 RAG)
风格不对角色设定缺失加"你是一位XX专家"
重复内容temperature 太低提高 temperature 或改 prompt

6.3 提示词管理

在生产环境中,提示词需要版本管理和 A/B 测试:

TEXT
提示词管理最佳实践:
1. 版本控制:每次修改记录变更原因和效果
2. A/B 测试:新提示词与旧提示词对比
3. 模板化:使用变量和模板引擎管理提示词
4. 监控:跟踪不同提示词的模型表现
5. 文档化:记录每个提示词的设计意图和已知问题

7. 本章小结

技术核心方法效果
Zero-shot直接描述任务简单任务足够
Few-shot提供示例显著提升格式和质量
CoT让模型展示推理过程数学和推理提升 30-50%
ToT探索多条推理路径复杂问题更准确
结构化输出JSON/XML/Schema输出可程序化解析

相关章节


延伸阅读

  • Wei, J. et al. (2022). "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models". NeurIPS
  • Kojima, T. et al. (2022). "Large Language Models are Zero-Shot Reasoners". NeurIPS
  • Yao, S. et al. (2023). "Tree of Thoughts: Deliberate Problem Solving with Large Language Models". NeurIPS
  • Wang, X. et al. (2023). "Self-Consistency Improves Chain of Thought Reasoning". ICLR