Prompt工程 进阶 prompt-engineering design-patterns llm best-practices

Prompt设计模式大全:从入门到精通的10种核心模式

AIEng Hub
阅读约 25 分钟

Prompt设计模式大全:从入门到精通的10种核心模式

Prompt工程是构建AI应用的核心技能。掌握设计模式能让你从”试错式”提示编写,进阶到”工程化”的Prompt设计。本文将系统介绍10种经过验证的Prompt设计模式,每种模式都配有实战示例和适用场景分析。

一、为什么需要Prompt设计模式?

1.1 Prompt设计的挑战

在实际开发中,我们经常遇到以下问题:

  • 输出不稳定:同样的Prompt,多次运行结果差异很大
  • 格式难以控制:模型输出格式不符合预期
  • 上下文理解偏差:模型没有准确理解任务意图
  • 复杂任务分解困难:难以让模型完成多步骤推理

1.2 设计模式的价值

维度无模式使用设计模式
可预测性低,结果随机高,输出稳定
可维护性差,难以迭代好,结构化清晰
复用性低,每次重写高,模板化复用
团队协作困难标准化,易协作

二、基础模式(Foundation Patterns)

2.1 零样本提示(Zero-Shot Prompting)

定义:不给示例,直接描述任务要求模型完成。

适用场景

  • 任务定义清晰明确
  • 模型对该任务有足够先验知识
  • 快速原型验证

代码示例

# 零样本分类
prompt = """
请将以下文本分类为正面、负面或中性:

文本:这款手机的电池续航太棒了,用了一整天还有电!

分类:
"""

# 零样本翻译
prompt = """
将以下中文翻译成英文:

原文:人工智能正在改变我们的生活方式。
翻译:
"""

最佳实践

  • 使用明确的指令动词(分类、翻译、总结、提取)
  • 指定输出格式(JSON、列表、段落)
  • 添加约束条件(字数限制、风格要求)

2.2 少样本提示(Few-Shot Prompting)

定义:提供少量示例,让模型学习任务模式。

适用场景

  • 需要特定输出格式
  • 任务有隐含规则需要学习
  • 零样本效果不佳时

代码示例

# 少样本情感分析
prompt = """
请根据以下示例,对文本进行情感分类:

示例1:
文本:这部电影太精彩了,强烈推荐!
情感:正面

示例2:
文本:服务态度很差,等了一个小时。
情感:负面

示例3:
文本:产品质量一般,没有惊喜也没有失望。
情感:中性

现在请分类:
文本:这个餐厅的环境很优雅,但价格偏高。
情感:
"""

# 少样本实体提取
prompt = """
从文本中提取人名、地点和组织:

输入:马云在杭州创立了阿里巴巴。
输出:{"人名": ["马云"], "地点": ["杭州"], "组织": ["阿里巴巴"]}

输入:特斯拉CEO马斯克在德州工厂宣布新计划。
输出:{"人名": ["马斯克"], "地点": ["德州"], "组织": ["特斯拉"]}

输入:李彦宏在北京的百度大厦发布文心一言。
输出:
"""

示例数量建议

任务复杂度建议示例数说明
简单任务1-3个如分类、翻译
中等任务3-5个如格式化提取
复杂任务5-10个如多步推理

三、推理增强模式(Reasoning Patterns)

3.1 思维链(Chain-of-Thought, CoT)

定义:引导模型展示推理过程,而非直接给出答案。

适用场景

  • 数学计算和逻辑推理
  • 多步骤决策问题
  • 需要解释性的场景

代码示例

# 基础CoT
prompt = """
问题:一个农场有鸡和兔子共35只,脚共94只。鸡和兔子各有多少只?

请逐步思考并解答:
"""

# 显式CoT(带示例)
prompt = """
请按照以下示例的格式回答问题:

示例问题:
小明有5个苹果,给了小红2个,又买了3个。小明现在有几个苹果?

思考过程:
1. 初始数量:5个苹果
2. 给小红后:5 - 2 = 3个苹果
3. 又买3个后:3 + 3 = 6个苹果

答案:6个

现在请解答:
问题:一个水池有两个进水管,A管单独注满需6小时,B管单独注满需4小时。同时打开两管,几小时注满?

思考过程:
"""

CoT变体对比

变体描述适用场景
Zero-Shot CoT添加”让我们一步步思考”简单推理
Few-Shot CoT提供推理示例复杂推理
Self-Consistency多次采样取多数需要高置信度
Tree of Thoughts探索多条推理路径创造性问题

3.2 思维树(Tree of Thoughts, ToT)

定义:将推理过程组织为树状结构,探索多个可能的解决路径。

适用场景

  • 需要创造性思维的问题
  • 存在多种解决方案的场景
  • 游戏策略和规划任务

代码示例

prompt = """
问题:用数字3、3、8、8得到24点

请探索不同的计算路径:

路径1:尝试 (8 / (3 - 8/3))
- 8/3 ≈ 2.67
- 3 - 2.67 = 0.33
- 8 / 0.33 ≈ 24 ✓

路径2:尝试 (3 + 3) * (8 - 8)
- 6 * 0 = 0 ✗

路径3:尝试 8 * 3 + 8 - 3
- 24 + 8 - 3 = 29 ✗

最优解:8 / (3 - 8/3) = 24
"""

四、结构化模式(Structural Patterns)

4.1 角色扮演(Role Prompting)

定义:为模型设定特定角色,影响其回答风格和知识调用。

适用场景

  • 需要专业领域知识
  • 特定沟通风格要求
  • 多角色对话系统

代码示例

# 单一角色
prompt = """
你是一位资深Python工程师,拥有10年开发经验。
请review以下代码,指出潜在问题和改进建议:

```python
def calculate(items):
    result = 0
    for i in range(len(items)):
        result += items[i]['price'] * items[i]['quantity']
    return result

"""

多角色讨论

prompt = """ 请模拟一个技术评审会议,包含以下角色:

产品经理(PM):关注用户需求和业务价值 技术负责人(Tech Lead):关注技术可行性和架构 安全专家(Security):关注安全风险和合规

讨论主题:是否应该在产品中集成第三方AI服务?

请每个角色发表观点,最后给出综合建议。 """


**常用角色设定**:

| 角色 | 适用场景 | 关键特征 |
|------|----------|----------|
| 技术专家 | 代码审查、架构设计 | 严谨、专业术语 |
| 教师 | 知识讲解、教程编写 | 耐心、循序渐进 |
| 编辑 | 内容润色、校对 | 细致、语言规范 |
| 顾问 | 商业分析、策略建议 | 全面、数据驱动 |

### 4.2 分隔符与标记(Delimiters and Markers)

**定义**:使用特殊符号或标记明确区分Prompt的不同部分。

**代码示例**:

```python
# XML标签风格
prompt = """
<instruction>
请总结以下文章的主要观点
</instruction>

<article>
[文章内容...]
</article>

<requirements>
- 字数限制:100字以内
- 语言:中文
- 格式: bullet points
</requirements>
"""

# Markdown风格
prompt = """
## 任务
提取文本中的关键信息

## 输入文本
---
{text}
---

## 输出格式
```json
{
  "entities": [],
  "sentiment": ""
}

"""

特殊分隔符

prompt = """

指令

将用户问题分类到以下类别之一

类别

  1. 技术支持
  2. 账单查询
  3. 产品咨询
  4. 投诉建议

用户问题

||||| 我的账户被锁定了,怎么解锁? |||||

分类结果

"""


**分隔符选择指南**:

| 分隔符类型 | 示例 | 适用场景 |
|-----------|------|----------|
| XML标签 | `<tag></tag>` | 复杂结构化数据 |
| Markdown | `## Header` | 文档类任务 |
| 特殊字符 | `###`, `||||` | 简单分隔 |
| JSON | `{"key": "value"}` | 数据交换 |

## 五、输出控制模式(Output Control Patterns)

### 5.1 格式规范(Format Specification)

**定义**:明确指定期望的输出格式。

**代码示例**:

```python
# JSON格式
prompt = """
分析以下产品评论,以JSON格式返回:

评论:这款手机拍照效果很好,但电池续航一般,价格有点贵。

输出格式:
{
  "sentiment": "总体情感",
  "pros": ["优点列表"],
  "cons": ["缺点列表"],
  "rating": "1-5分评分",
  "keywords": ["关键词列表"]
}
"""

# Markdown表格
prompt = """
比较Python和JavaScript的特性,以Markdown表格输出:

| 特性 | Python | JavaScript |
|------|--------|------------|
| 类型系统 | | |
| 执行方式 | | |
| 主要用途 | | |
| 学习曲线 | | |
"""

# 结构化列表
prompt = """
请列出5个提高代码质量的建议,格式如下:

1. [建议标题]
   - 说明:[详细说明]
   - 示例:[代码示例]
   - 收益:[带来的好处]

2. ...
"""

5.2 约束条件(Constraint Specification)

定义:通过约束限制模型的输出范围。

代码示例

# 多重约束
prompt = """
请为一家新开的咖啡店写一段宣传文案。

约束条件:
- 字数:50-80字
- 风格:温馨、文艺
- 必须包含:"手冲"、"慢时光"两个词
- 避免:使用"最好"、"第一"等绝对化用语
- 目标受众:25-35岁白领
"""

# 负面约束
prompt = """
请解释什么是机器学习。

要求:
✓ 使用通俗易懂的比喻
✓ 适合高中生理解
✗ 不要使用数学公式
✗ 不要提及具体算法名称
✗ 不要超过200字
"""

六、上下文管理模式(Context Management Patterns)

6.1 上下文压缩(Context Compression)

定义:在有限的上下文窗口中,高效组织和压缩信息。

代码示例

# 摘要式压缩
prompt = """
基于以下文档摘要回答问题:

文档摘要:
- 主题:云计算安全最佳实践
- 关键要点:1)零信任架构 2)数据加密 3)访问控制 4)审计日志
- 适用对象:企业IT管理员

问题:实施零信任架构的关键步骤是什么?
"""

# 结构化压缩
prompt = """
对话历史(已压缩):
用户:询问产品价格 → 助手:提供价格表 → 用户:询问折扣 → 助手:说明优惠政策

当前问题:批量购买有额外优惠吗?
"""

6.2 检索增强(Retrieval-Augmented Pattern)

定义:结合外部知识库,动态注入相关信息。

代码示例

# RAG风格Prompt
prompt = """
基于以下参考资料回答问题:

[参考资料]
{retrieved_documents}

[用户问题]
{user_question}

[回答要求]
- 优先基于参考资料回答
- 如果参考资料不足,明确说明
- 不要编造信息
"""

七、高级组合模式(Advanced Composition Patterns)

7.1 多阶段管道(Multi-Stage Pipeline)

定义:将复杂任务分解为多个阶段,每个阶段使用专门的Prompt。

代码示例

# 阶段1:意图识别
stage1_prompt = """
分析用户输入,判断意图类别:

用户输入:{input}

可选类别:查询、订购、投诉、咨询、其他
输出格式:{"intent": "类别", "confidence": "高/中/低"}
"""

# 阶段2:信息提取
stage2_prompt = """
从用户输入中提取关键信息:

意图:{intent}
用户输入:{input}

需要提取:产品名称、数量、时间要求
输出:JSON格式
"""

# 阶段3:响应生成
stage3_prompt = """
基于以下信息生成回复:

意图:{intent}
提取信息:{extracted_info}
知识库结果:{knowledge_base_result}

生成友好、准确的回复:
"""

7.2 自我修正(Self-Correction)

定义:引导模型检查并修正自己的输出。

代码示例

prompt = """
请完成以下任务,并进行自我检查:

任务:将以下中文翻译成英文
原文:人工智能的发展日新月异。

步骤1:翻译
[你的翻译]

步骤2:检查
- 准确性:是否准确传达原意?
- 流畅性:是否符合英语表达习惯?
- 完整性:是否遗漏信息?

步骤3:修正(如有需要)
[最终翻译]
"""

八、模式选择决策树

任务分析
├── 是否需要示例?
│   ├── 是 → Few-Shot Prompting
│   └── 否 → Zero-Shot Prompting
├── 是否需要推理过程?
│   ├── 是 → Chain-of-Thought
│   └── 否 → 直接输出
├── 是否需要特定风格/专业知识?
│   ├── 是 → Role Prompting
│   └── 否 → 标准指令
├── 输出格式是否重要?
│   ├── 是 → Format Specification
│   └── 否 → 自由格式
└── 任务是否复杂多步骤?
    ├── 是 → Multi-Stage Pipeline
    └── 否 → 单步处理

九、Prompt设计检查清单

在部署Prompt前,请确认以下事项:

9.1 清晰度检查

  • 指令明确,无歧义
  • 使用具体的动词和名词
  • 避免双重否定
  • 关键信息前置

9.2 完整性检查

  • 包含必要的背景信息
  • 定义了输出格式
  • 说明了约束条件
  • 提供了示例(如需要)

9.3 鲁棒性检查

  • 测试了边界情况
  • 验证了异常输入处理
  • 检查了输出稳定性
  • 评估了安全性风险

十、总结与进阶建议

掌握这10种Prompt设计模式,你已经具备了构建生产级AI应用的基础能力。记住以下核心原则:

  1. 从简单开始:先用Zero-Shot,效果不佳再升级
  2. 示例要典型:Few-Shot的示例要覆盖主要场景
  3. 结构化优先:使用分隔符和格式规范提升可控性
  4. 迭代优化:基于实际反馈持续改进Prompt
  5. 组合使用:复杂任务往往需要多种模式组合

推荐阅读

  • 《Prompt Engineering Guide》官方文档
  • OpenAI Cookbook中的Prompt示例
  • LangChain框架的Prompt模板设计

本文是AIEng Hub Prompt工程系列的第一篇,后续将深入探讨Prompt测试框架和版本管理。欢迎关注我们的技术专栏,获取更多AI工程实践干货。