Prompt Engineering详解
Prompt Engineering 详解
概述
Prompt Engineering(提示词工程) 是设计和优化输入给大语言模型(LLM)的提示词,以获得更准确、更符合预期输出的技术。
💡 提示: 核心思想
大模型的输出质量很大程度上取决于输入的质量。好的 Prompt = 好的结果。
为什么需要 Prompt Engineering
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 输出不准确 | 问题描述模糊 | 明确任务目标 |
| 格式混乱 | 缺少格式约束 | 指定输出格式 |
| 缺少深度 | 上下文不足 | 提供背景信息 |
| 推理错误 | 一步到位太难 | 引导逐步思考 |
一、基础提示技术
1.1 Zero-shot Prompting
定义:不提供任何示例,直接向模型提问。
1 | |
适用场景:简单任务、模型已经训练过的常见任务。
优点:简单直接
缺点:复杂任务效果差
1.2 One-shot Prompting
定义:提供 1 个示例,引导模型理解任务格式。
1 | |
1.3 Few-shot Prompting
定义:提供多个(通常 3-5 个)示例,让模型学习模式。
1 | |
📝 注意: 最佳实践
- 示例要多样化,覆盖不同情况
- 示例格式要与期望输出一致
- 3-5 个示例通常足够,太多可能造成干扰
二、推理增强技术
2.1 Chain of Thought (CoT) - 思维链
定义:引导模型展示推理过程,逐步得出答案。
基础 CoT
1 | |
模型输出:
1 | |
Few-shot CoT
1 | |
⚠️ 重要: CoT 适用场景
- 数学计算
- 逻辑推理
- 多步骤问题
- 需要解释过程的任务
2.2 Zero-shot CoT
定义:不提供示例,仅通过魔法短语触发推理。
魔法短语:
- “Let’s think step by step”(让我们一步一步思考)
- “请逐步分析”
- “让我们仔细推理”
1 | |
2.3 Tree of Thought (ToT) - 思维树
定义:探索多个推理路径,自我评估选择最优解。
graph TD
A[问题] --> B[思路1]
A --> C[思路2]
A --> D[思路3]
B --> E[评估: 可行]
C --> F[评估: 不可行]
D --> G[评估: 可行但复杂]
E --> H[深入探索]
H --> I[最终答案]
Prompt 示例:
1 | |
2.4 Self-Consistency(自一致性)
定义:多次采样答案,选择出现频率最高的结果。
1 | |
三、角色与上下文设定
3.1 角色设定(Role Prompting)
定义:指定 AI 扮演特定角色,影响其回答风格和专业度。
1 | |
常用角色模板:
| 角色 | 描述 |
|---|---|
| 技术专家 | “你是一位资深的 [领域] 专家” |
| 代码审查员 | “你是一位严格的代码审查员” |
| 产品经理 | “你是一位用户导向的产品经理” |
| 教师 | “你是一位耐心的编程教师” |
3.2 系统提示(System Prompt)
定义:设置模型的行为准则和约束条件(API 调用时的 system 角色)。
1 | |
3.3 上下文注入
定义:在 Prompt 中提供相关背景知识(RAG 场景的核心)。
1 | |
四、输出控制技术
4.1 格式约束
JSON 格式
1 | |
Markdown 格式
1 | |
4.2 长度控制
1 | |
4.3 分隔符使用
使用明确的分隔符避免 Prompt 注入和内容混淆:
1 | |
常用分隔符:
###---"""<text></text>[START][END]
五、高级技术
5.1 ReAct(Reasoning + Acting)
定义:推理与行动交替进行,适合 Agent 场景。
1 | |
5.2 Generated Knowledge Prompting
定义:让模型先生成相关知识,再基于知识回答问题。
1 | |
5.3 Directional Stimulus Prompting
定义:提供提示词暗示,引导模型输出方向。
1 | |
六、Prompt 模板库
6.1 代码审查模板
1 | |
输出格式:
| 问题 | 严重程度 | 位置 | 修改建议 |
|---|
1 | |
请设计一个技术方案,要求:
背景
[问题描述]
输出要求
- 需求分析:明确功能和非功能需求
- 架构设计:整体架构图(Mermaid)
- 技术选型:框架、中间件选择及理由
- 核心流程:关键流程时序图
- 数据设计:核心表结构
- 风险评估:潜在风险及应对策略
1 | |
你是一位经验丰富的 Debug 专家。
错误信息
[错误日志]
相关代码
[代码片段]
请分析
- 错误的直接原因
- 根本原因分析
- 解决方案(给出具体代码)
- 如何避免类似问题
---
## 七、最佳实践
### 7.1 Prompt 设计原则
| 原则 | 说明 |
|------|------|
| **明确具体** | 避免模糊表述,明确任务目标 |
| **结构清晰** | 使用分隔符、编号组织内容 |
| **提供示例** | 复杂任务用 Few-shot 引导 |
| **迭代优化** | 根据输出效果不断调整 |
| **控制长度** | 避免过长导致信息丢失 |
### 7.2 常见错误
| 错误 | 示例 | 改进 |
|------|------|------|
| 过于模糊 | "帮我写代码" | "用 Java 实现一个线程安全的 LRU 缓存" |
| 缺少上下文 | "这个报错怎么解决" | "Spring Boot 3.x 启动报错:[具体错误]" |
| 期望过高 | "写一个完整的电商系统" | 拆分为多个小任务逐步实现 |
### 7.3 调试技巧
1. **打印思考过程**:加入 "请展示你的推理过程"
2. **要求自我检查**:加入 "请检查答案是否正确"
3. **分步验证**:复杂任务拆分为多轮对话
---
## 八、工具与资源
### 在线工具
| 工具 | 用途 |
|------|------|
| [PromptPerfect](https://promptperfect.jina.ai/) | Prompt 优化 |
| [OpenAI Playground](https://platform.openai.com/playground) | 在线测试 |
| [LangSmith](https://smith.langchain.com/) | Prompt 管理与追踪 |
### 学习资源
- [Prompt Engineering Guide](https://www.promptingguide.ai/)
- [OpenAI Prompt Engineering](https://platform.openai.com/docs/guides/prompt-engineering)
- [Learn Prompting](https://learnprompting.org/)
---
## 相关笔记
- 大模型学习路线
- LLM应用开发
- RAG技术详解
Prompt Engineering详解
https://zmmmmy.github.io/2026/01/12/Prompt Engineering详解/