提示词工程完全指南:从基础到Agent应用的技术全景
系统性综述提示词工程技术,深入剖析原理机制,提供正例反例,并探索在Agent开发中的实战应用
引言
提示词工程(Prompt Engineering)是解锁大语言模型(LLM)能力的关键技术。随着Agent系统的兴起,提示词技术从简单的指令演变为复杂的能力编排系统。本文将系统性地介绍14种核心提示词技术,从基础到高级,从理论到实践,帮助开发者构建更强大的AI应用。
一、基础提示词技术
1. Zero-Shot Prompting(零样本提示)
原理与机制
零样本提示是指不提供任何示例,直接让模型完成任务。模型完全依赖预训练知识。
机制:
1 | 输入: 任务描述 + 问题 |
正例 ✅
1 | # 场景:简单分类任务 |
为什么有效:
- 任务简单明确
- 预训练数据中包含大量情感分析样本
- 无需额外上下文
反例 ❌
1 | # 场景:复杂业务规则 |
失败原因:
- 业务规则不在预训练数据中
- 缺少必要上下文
- 任务需要领域知识
Agent开发应用
1 | # OpenClaw Agent中的使用 |
适用场景:
- ✅ 简单分类任务
- ✅ 通用知识问答
- ✅ 格式转换
- ❌ 领域专业任务
- ❌ 需要特定规则的任务
- ❌ 多步骤推理
2. Few-Shot Prompting(少样本提示)
原理与机制
通过提供少量示例,让模型学习任务模式和输出格式。
机制:
1 | 输入: 任务描述 + 示例1 + 示例2 + ... + 新问题 |
理论基础:In-Context Learning(上下文学习)
正例 ✅
1 | prompt = """ |
为什么有效:
- 示例清晰展示输出格式
- 3个示例足够建立模式
- 任务复杂度适中
反例 ❌
1 | # 错误示例1:示例不一致 |
1 | # 错误示例2:示例过多 |
Agent开发应用
1 | # OpenClaw技能路由示例 |
最佳实践:
1 | # 优化:使用动态Few-Shot |
适用场景:
- ✅ 格式化输出任务
- ✅ 分类和抽取任务
- ✅ 需要特定输出格式的场景
- ⚠️ 注意示例质量和一致性
- ⚠️ 控制示例数量(通常3-5个足够)
3. Role-Based Prompting(角色提示)
原理与机制
通过设定角色身份,激活模型在特定领域的知识和表达方式。
机制:
1 | 输入: 角色定义 + 任务 |
理论基础:Persona-based Generation
正例 ✅
1 | prompt = """ |
为什么有效:
- 角色定义清晰具体
- 指定了专业背景
- 明确了输出要求
反例 ❌
1 | # 错误示例1:角色过于宽泛 |
1 | # 错误示例2:角色与任务不匹配 |
1 | # 错误示例3:角色定义矛盾 |
Agent开发应用
1 | # 多角色Agent系统 |
实战案例:角色扮演对话系统
1 | class RolePlayConversationAgent: |
适用场景:
- ✅ 领域专业问答
- ✅ 多角色对话系统
- ✅ 代码审查(扮演不同角色)
- ✅ 教育辅导(扮演导师角色)
- ⚠️ 确保角色与任务匹配
- ⚠️ 避免角色特征矛盾
二、推理增强技术
4. Chain-of-Thought (CoT) Prompting(思维链)
原理与机制
通过显式的推理步骤,引导模型逐步思考,提高复杂问题的解决能力。
机制:
1 | 输入: 问题 + "让我们一步步思考" |
理论基础:Emergent Reasoning Ability
2026年最新研究(arXiv:2603.14602):
Chain-of-Thought prompting增加了对表格数据的注意力,进一步通过表格调优增强。
正例 ✅
1 | prompt = """ |
为什么有效:
- 显式推理步骤
- 每步都有计算验证
- 逻辑清晰可追溯
高级技巧:Zero-Shot CoT
1 | # 无需示例,只需添加"让我们一步步思考" |
反例 ❌
1 | # 错误示例1:跳过推理 |
1 | # 错误示例2:推理步骤混乱 |
Agent开发应用
1 | # OpenClaw任务规划Agent |
高级应用:Self-Consistency with CoT
1 | class SelfConsistencyAgent: |
适用场景:
- ✅ 数学计算问题
- ✅ 逻辑推理任务
- ✅ 多步骤任务规划
- ✅ 复杂决策制定
- ⚠️ 增加token消耗
- ⚠️ 简单任务可能不需要
5. Tree-of-Thought (ToT) Prompting(思维树)
原理与机制
将推理过程建模为树结构,允许探索多个推理路径,通过评估选择最优解。
机制:
1 | 问题 |
正例 ✅
1 | prompt = """ |
为什么有效:
- 系统性探索多个路径
- 通过评估剪枝无效分支
- 最终找到最优解
反例 ❌
1 | # 错误示例:简单问题使用ToT(过度设计) |
Agent开发应用
1 | # 决策制定Agent |
代码生成中的应用
1 | class CodeGenerationAgent: |
适用场景:
- ✅ 复杂决策制定
- ✅ 创意问题解决
- ✅ 代码架构设计
- ✅ 游戏策略(24点、数独等)
- ⚠️ 计算成本高
- ⚠️ 简单问题不适用
6. ReAct Prompting(推理+行动)
原理与机制
结合推理(Reasoning)和行动(Acting),让Agent在思考的同时执行工具调用。
机制:
1 | Thought: 思考下一步 |
理论基础:Synergizing Reasoning and Acting
正例 ✅
1 | prompt = """ |
为什么有效:
- 明确的思考-行动-观察循环
- 工具调用有理有据
- 可解释性强
反例 ❌
1 | # 错误示例1:缺少观察步骤 |
1 | # 错误示例2:Thought和Action不匹配 |
Agent开发应用
1 | # OpenClaw Agent核心实现 |
高级应用:带反思的ReAct
1 | class ReflectiveReActAgent(ReActAgent): |
适用场景:
- ✅ 需要工具调用的任务
- ✅ 多步骤问题解决
- ✅ 信息检索和整合
- ✅ 交互式决策制定
- ⚠️ 需要精心设计的工具集
- ⚠️ 错误可能累积
三、结构化输出技术
7. Structured Output Prompting(结构化输出)
原理与机制
通过明确的格式约束,让模型生成结构化数据(JSON、XML、表格等)。
机制:
1 | 输入: 任务 + 格式定义 + 示例 |
正例 ✅
1 | prompt = """ |
为什么有效:
- JSON Schema清晰定义
- 枚举值明确
- 示例展示完整结构
反例 ❌
1 | # 错误示例1:格式定义模糊 |
1 | # 错误示例2:复杂嵌套无示例 |
Agent开发应用
1 | # OpenClaw配置解析Agent |
高级应用:动态Schema生成
1 | class DynamicSchemaAgent: |
适用场景:
- ✅ API响应生成
- ✅ 数据提取和转换
- ✅ 配置文件生成
- ✅ 报表数据结构化
- ⚠️ 需要严格的Schema定义
- ⚠️ 复杂嵌套需要示例
8. Program-of-Thoughts (PoT) Prompting(程序化思维)
原理与机制
将推理过程表达为可执行的程序代码,通过代码执行获得精确结果。
机制:
1 | 输入: 问题 |
正例 ✅
1 | prompt = """ |
执行结果:
“””
LLM输出:
全班平均分:82.20
1 |
|
Agent开发应用
1 | # 数据分析Agent |
结果解释:
"""
code = self.llm.generate(prompt)
result = self.execute_code_safely(code)
return {
"code": code,
"result": result,
"explanation": self.explain_result(result)
}
使用示例
agent = DataAnalysisAgent()
analysis = agent.analyze_with_code(
data_description=”””
销售数据CSV文件,包含列:
- date: 日期
- product: 产品名称
- quantity: 销售数量
- revenue: 收入
“””,
question=”找出销售额前5的产品及其占比”
)
生成的代码:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv(‘sales.csv’)
# 计算每个产品的总销售额
product_sales = df.groupby(‘product’)[‘revenue’].sum()
# 找出前5
top5 = product_sales.nlargest(5)
# 计算占比
total_revenue = product_sales.sum()
percentage = (top5 / total_revenue * 100).round(2)
print(“Top 5 Products:”)
for product, revenue in top5.items():
print(f”{product}: ${revenue:.2f} ({percentage[product]}%)”)
# 可视化
top5.plot(kind=’bar’)
plt.title(‘Top 5 Products by Revenue’)
plt.tight_layout()
plt.savefig(‘top5_products.png’)
1 |
|
问题 → 路径1 → 答案A
→ 路径2 → 答案A
→ 路径3 → 答案B
→ 路径4 → 答案A
投票:答案A (3票) vs 答案B (1票)
结果:答案A
1 |
|
为什么有效:
- 多路径减少随机错误
- 投票提高可靠性
- 可以评估置信度
反例 ❌
1 | # 错误示例:简单问题使用自一致性(过度) |
Agent开发应用
1 | # 关键决策Agent |
适用场景:
- ✅ 高风险决策
- ✅ 复杂推理问题
- ✅ 需要置信度的场景
- ⚠️ 计算成本高
- ⚠️ 增加响应时间
10. Generated Knowledge Prompting(生成知识提示)
原理与机制
先让模型生成相关知识,再基于这些知识回答问题。
机制:
1 | 问题 |
正例 ✅
1 | prompt = """ |
为什么有效:
- 先激活相关知识
- 确保回答基于事实
- 提高专业性
反例 ❌
1 | # 错误示例:简单事实性问题 |
Agent开发应用
1 | # 专家系统Agent |
适用场景:
- ✅ 专业领域问答
- ✅ 教育辅导
- ✅ 技术文档生成
- ⚠️ 增加token消耗
- ⚠️ 简单问题不适用
11. Directional Stimulus Prompting(定向刺激提示)
原理与机制
通过特定的关键词或短语,引导模型朝特定方向思考。
机制:
1 | 问题 + 刺激词(如"从安全角度") |
正例 ✅
1 | prompt = """ |
为什么有效:
- 多角度全面分析
- 刺激词明确方向
- 避免遗漏重要方面
反例 ❌
1 | # 错误示例:刺激词过多 |
Agent开发应用
1 | # 代码审查Agent |
{code}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{aspect_prompts.get(aspect, f"从【{aspect}】角度分析:")}
列出问题并给出改进建议。
"""
reviews[aspect] = self.llm.generate(prompt)
return reviews
# 使用示例
reviewer = CodeReviewAgent()
review = reviewer.review_code(
code=user_code,
aspects=["security", "performance", "readability"]
)
适用场景:
- ✅ 多维度分析
- ✅ 代码审查
- ✅ 方案评估
- ✅ 风险分析
- ⚠️ 需要选择合适的角度
- ⚠️ 避免角度过多
12. Automatic Prompt Engineering (APE)(自动提示词工程)
原理与机制
使用LLM自动生成和优化提示词,通过评估选择最优提示。
机制:
1 | 任务描述 |
正例 ✅
1 | class AutoPromptEngineer: |
为什么有效:
- 自动化提示词设计
- 基于数据驱动优化
- 可以持续改进
Agent开发应用
1 | # Agent技能提示词优化器 |
适用场景:
- ✅ 大规模部署场景
- ✅ 需要持续优化
- ✅ 有充足测试数据
- ⚠️ 需要评估基础设施
- ⚠️ 计算成本高
五、Agent专用技术
13. Multi-Turn Prompting(多轮对话提示)
原理与机制
维护对话历史,让模型理解上下文,实现连贯的多轮交互。
机制:
1 | 对话历史 = [ |
正例 ✅
1 | class ConversationAgent: |
为什么有效:
- 保持上下文连贯
- 支持指代消解
- 用户体验自然
反例 ❌
1 | # 错误示例1:历史过长 |
Agent开发应用
1 | # OpenClaw多轮任务执行 |
高级应用:智能历史压缩
1 | class SmartHistoryAgent(ConversationAgent): |
适用场景:
- ✅ 聊天机器人
- ✅ 任务执行Agent
- ✅ 教育辅导系统
- ⚠️ 需要管理历史长度
- ⚠️ 注意隐私和安全
14. Metacognitive Prompting(元认知提示)
原理与机制
让模型反思自己的思考过程,进行自我评估和改进。
机制:
1 | 初始回答 |
正例 ✅
1 | class MetacognitiveAgent: |
为什么有效:
- 显式反思过程
- 识别并弥补不足
- 提高回答质量
反例 ❌
1 | # 错误示例:简单问题使用元认知 |
Agent开发应用
1 | # OpenClaw任务反思Agent |
高级应用:持续学习循环
1 | class ContinuousLearningAgent: |
适用场景:
- ✅ 复杂任务执行
- ✅ 持续学习系统
- ✅ 质量要求高的场景
- ⚠️ 增加计算成本
- ⚠️ 简单任务不适用
六、技术对比与选择指南
6.1 技术对比矩阵
| 技术 | 复杂度 | Token消耗 | 准确性提升 | 适用场景 |
|---|---|---|---|---|
| Zero-Shot | ⭐ | ⭐ | - | 简单通用任务 |
| Few-Shot | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | 格式化输出 |
| Role-Based | ⭐⭐ | ⭐⭐ | ⭐⭐ | 专业领域问答 |
| CoT | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 推理任务 |
| ToT | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 复杂决策 |
| ReAct | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 工具调用 |
| Structured | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | 数据提取 |
| PoT | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 计算任务 |
| Self-Consistency | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 高风险决策 |
| Generated Knowledge | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 专业问答 |
| Directional Stimulus | ⭐⭐ | ⭐⭐ | ⭐⭐⭐ | 多角度分析 |
| APE | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 大规模部署 |
| Multi-Turn | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | 对话系统 |
| Metacognitive | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 质量保证 |
6.2 选择决策树
1 | 任务类型? |
6.3 组合使用策略
1 | # 组合示例1:Few-Shot + CoT + Structured Output |
七、实战案例:构建OpenClaw提示词系统
7.1 系统架构
1 | class OpenClawPromptSystem: |
7.2 动态技术选择
1 | class AdaptivePromptSelector: |
八、最佳实践与注意事项
8.1 提示词设计原则
清晰性原则
1
2
3
4
5
6
7
8
9# ✅ 好
prompt = """
任务:提取文本中的日期
输入格式:自由文本
输出格式:YYYY-MM-DD
"""
# ❌ 差
prompt = "把日期找出来"一致性原则
1
2
3
4
5
6
7
8
9# ✅ 好:示例格式一致
示例1:输入:"..." 输出:{...}
示例2:输入:"..." 输出:{...}
示例3:输入:"..." 输出:{...}
# ❌ 差:格式不一致
示例1:Input: "..." Output: {...}
示例2:输入:"..." 结果:[...]
示例3:"..." → {...}最小化原则
1
2
3
4
5
6
7
8
9# ✅ 好:只提供必要信息
prompt = "分析情感:{text}"
# ❌ 差:冗余信息
prompt = """
你是一个AI助手,由XXX公司开发...
(100行无关信息)
现在分析情感:{text}
"""
8.2 常见陷阱
过度工程
1
2
3
4
5# ❌ 简单问题复杂化
simple_question = "1+1=?"
# 使用ToT + Self-Consistency
# 问题:浪费资源示例偏差
1
2
3
4
5
6# ❌ 示例不够代表性
示例1:输入:"好" 输出:"positive"
示例2:输入:"很好" 输出:"positive"
示例3:输入:"非常好" 输出:"positive"
# 问题:缺少negative示例忽略约束
1
2
3
4
5
6
7
8
9
10
11# ❌ 没有明确约束
prompt = "生成代码"
# 可能输出:
# - Python
# - JavaScript
# - Java
# 不确定
# ✅ 明确约束
prompt = "生成Python 3.10+代码,使用类型注解"
8.3 性能优化
缓存策略
1
2
3
4
5
6
7
8
9
10
11
12class PromptCache:
def __init__(self):
self.cache = {}
def get_or_generate(self, prompt_hash: str,
generator: callable):
if prompt_hash in self.cache:
return self.cache[prompt_hash]
result = generator()
self.cache[prompt_hash] = result
return result并行处理
1
2
3
4
5
6
7
8
9import asyncio
async def parallel_self_consistency(prompt: str, n: int):
tasks = [
llm.generate_async(prompt, temperature=0.7)
for _ in range(n)
]
results = await asyncio.gather(*tasks)
return vote_for_best(results)Token优化
1
2
3
4
5
6
7
8
9
10
11
12
13def optimize_prompt(prompt: str, max_tokens: int):
"""优化提示词以减少token"""
# 移除冗余空白
prompt = " ".join(prompt.split())
# 压缩示例(保留关键信息)
prompt = compress_examples(prompt)
# 使用缩写
prompt = use_abbreviations(prompt)
return prompt
九、未来趋势
9.1 自动化提示词工程
2026年的趋势是完全自动化的提示词优化:
1 | class AutoPromptOptimizer: |
9.2 多模态提示词
1 | # 多模态CoT |
9.3 个性化提示词
1 | class PersonalizedPromptEngine: |
十、总结
提示词工程是AI Agent开发的核心技能。本文系统性地介绍了14种提示词技术:
基础技术:
- Zero-Shot - 简单快速
- Few-Shot - 格式学习
- Role-Based - 领域专业
推理增强:
4. Chain-of-Thought - 逻辑推理
5. Tree-of-Thought - 复杂决策
6. ReAct - 工具调用
结构化输出:
7. Structured Output - 数据提取
8. Program-of-Thoughts - 精确计算
高级技术:
9. Self-Consistency - 提高可靠性
10. Generated Knowledge - 知识激活
11. Directional Stimulus - 多角度分析
12. APE - 自动优化
Agent专用:
13. Multi-Turn - 对话系统
14. Metacognitive - 自我反思
关键要点
- 没有万能技术:根据任务选择合适的技术组合
- 平衡成本与质量:简单问题用简单技术
- 持续优化:基于反馈不断改进提示词
- 注重可解释性:保留推理过程便于调试
- 安全第一:注意隐私保护和恶意输入
实践建议
- 从简单技术开始,逐步增加复杂度
- 建立提示词库,积累最佳实践
- 使用A/B测试验证效果
- 记录性能数据,持续优化
- 关注最新研究,保持技术更新
参考文献
- Wei et al. “Chain-of-Thought Prompting Elicits Reasoning in LLMs” (2022)
- Yao et al. “ReAct: Synergizing Reasoning and Acting” (2022)
- Yao et al. “Tree of Thoughts” (2023)
- Wang et al. “Self-Consistency Improves CoT Reasoning” (2022)
- Zhou et al. “Large Language Models Are Human-Level Prompt Engineers” (2022)
- arXiv:2603.14602 - “$PA^3$: Policy-Aware Agent Alignment through CoT” (2026)
- arXiv:2603.15402 - “A Closer Look into LLMs for Table Understanding” (2026)
- arXiv:2603.16867 - “Efficient Reasoning on the Edge” (2026)
本文基于2025-2026年最新研究和实践经验撰写,代码示例参考OpenClaw实现。
持续更新中…