提示词工程(Prompt Engineering)使用指南
本文聚焦“如何让模型更好理解与输出”。核心在于:给足上下文、约束清晰、输出可复用。
一、问题的本质
观察两个实际案例:
案例A - 模糊指令:
帮我写个用户反馈分析
结果:泛化的方法论描述,缺乏具体可执行性。
案例B - 结构化指令:
你是一位专业的用户体验分析师。请分析以下用户反馈,
识别TOP3问题,评估严重程度(高/中/低),并给出改进建议。
反馈数据:[具体内容]
输出格式:JSON
结果:
{
"top_issues": [
{"问题": "加载速度慢", "严重程度": "高", "建议": "优化图片加载,使用CDN"},
{"问题": "按钮不明显", "严重程度": "中", "建议": "增强视觉对比度"}
]
}
差异在于:后者明确了角色、范围、评估标准和输出格式。结构化表达让模型更容易对齐预期。
二、常见误区
1. 指令越简洁越好
“简洁”不等于“模糊”。有效指令需要必要上下文。
2. 单次长篇输入
把需求挤在一段里,会降低理解度。分层表达效果更好。
3. 忽略输出规范
未指定输出格式会导致结果不一致,提升后续处理成本。
三、优化方法
方法1:角色定义
优化前:
分析这份报告
优化后:
你是一位资深的数据分析师,拥有金融行业背景。
请分析这份季度财报,重点关注:
1. 营收增长趋势
2. 成本控制效果
3. 潜在风险点
说明:角色让模型采用更贴合场景的视角与框架。
方法2:结构化指令
优化前:
帮我写一封邮件给客户说产品延期了但是质量会更好希望他们理解
优化后:
任务:撰写产品延期通知邮件
背景:
- 产品原定3月1日发布
- 因质量优化需延期至3月15日
- 客户为VIP企业客户
要求:
1. 诚恳道歉
2. 说明延期原因(质量提升)
3. 强调附加价值
4. 提供补偿方案
语气:专业、诚恳
字数:150-200字
方法3:提供示例
优化前:
把这些数据整理成表格
优化后:
请将数据整理成以下格式的表格:
示例:
| 日期 | 销售额 | 环比增长 | 备注 |
|------|--------|----------|------|
| 3月1日 | 10万 | +5% | 促销活动 |
现在处理这些数据:[your data]
方法4:逐步分析
优化前:
这个方案可行吗?
优化后:
请分析这个营销方案的可行性。
分析步骤:
1. 列出方案的核心要素
2. 评估每个要素的优势和风险
3. 对比行业实践
4. 给出可行性评分(1-10分)
5. 提供优化建议
请逐步展示分析过程。
方法5:明确输出格式
请以以下格式输出分析结果:
## 核心发现
- 发现1:[具体内容]
- 发现2:[具体内容]
## 数据支撑
[表格形式展示]
## 行动建议
1. 短期(1周内):[具体行动]
2. 中期(1月内):[具体行动]
## 风险提示
[潜在风险及应对措施]
四、实践案例
案例1:市场调研
基础版:
写个市场调研报告
优化版:
角色:市场分析师
任务:撰写中国咖啡市场调研报告
数据来源:
<data>
- 市场规模:2023年800亿,年增长15%
- 主要玩家:瑞幸(30%)、星巴克(25%)、本土品牌(45%)
- 消费者画像:25-35岁占60%,一线城市占40%
</data>
分析框架:
1. 市场现状(规模、增速、格局)
2. 竞争分析(波特五力模型)
3. 消费者洞察(需求、偏好、趋势)
4. 机会与挑战
5. 战略建议
输出要求:
- 专业术语准确
- 数据支撑观点
- 逻辑层次清晰
- 字数800-1000字
案例2:代码调试
基础版:
这段代码有bug,帮我改
优化版:
你是一位Python专家,精通性能优化。
问题描述:
- 函数在处理大数据时内存溢出
- 数据量:100万条记录
- 当前内存使用:8GB
代码:
[paste your code]
请按以下步骤解决:
1. 识别内存泄漏点
2. 解释问题原因
3. 提供优化方案
4. 给出优化后的代码
5. 说明性能提升预期
要求:
- 保持代码可读性
- 添加必要注释
- 提供测试示例
五、高级技巧
1. 预填充技术
请分析用户增长数据并输出JSON格式:
{
"增长率": "15%",
"新增用户": 5000,
"留存率": "72%"
}
通过预填充开头部分,模型更容易按既定格式续写,输出更一致。
2. 分步链式提示
- 第一步:“列出影响用户留存的TOP5因素”
- 第二步:“针对第1个因素,设计3个改进方案”
- 第三步:“评估方案2的ROI,给出实施计划”
3. 对比验证
请用两种不同方法解决这个问题:
方法A:传统approach
方法B:创新approach
然后对比两种方法的优劣。
六、通用模板
# 角色
你是[领域]的[职位]专家
# 任务
[具体要做什么]
# 背景
[相关信息和约束条件]
# 步骤
1. [第一步]
2. [第二步]
3. [第三步]
# 输出
- 格式:[JSON/表格/列表]
- 长度:[字数要求]
- 风格:[正式/专业]
# 示例
[提供期望的输出示例]
七、常见问题对照表
问题类型 |
错误示例 |
正确做法 |
模糊指令 |
“帮我优化一下” |
“优化这段文案的转化率,目标用户为25-35岁职场人群” |
缺乏上下文 |
“这个怎么解决” |
“在React项目中,组件渲染过慢,如何优化” |
格式不明 |
“整理成表格” |
“整理成3列表格:日期、金额、备注” |
角色不清 |
“分析一下” |
“作为数据分析师,用SWOT框架分析” |
八、实践建议
1. 构建个人模板库
为常用场景创建标准化模板,提高效率。
2. 迭代优化
- 版本1:基础提问
- 版本2:添加角色
- 版本3:加入示例
- 版本4:细化格式
3. 组合使用
组合使用技巧:角色设定 + 逐步分析 + 格式要求
九、评估标准
一个优秀的prompt应该满足:
- 明确性:任务目标清晰可测
- 完整性:包含必要的上下文信息
- 结构性:信息层次分明
- 可执行性:步骤具体可操作
- 规范性:输出格式明确
十、结构化标签(XML)
部分模型对结构化标记支持较好。用标签组织信息,有助于控制范围与输出。
基础标签结构
<persona>
你是一位用户体验专家,擅长分析用户反馈并提出改进方案
</persona>
<task>
分析以下用户反馈数据,识别主要问题并提出具体改进建议
</task>
<constraints>
- 每个问题必须有量化指标
- 解决方案需考虑成本效益
- 优先级基于用户影响范围
</constraints>
<output_format>
JSON格式,包含问题、严重程度、解决方案
</output_format>
实战对比
传统方式:
分析用户反馈并给出改进建议
使用XML标签方式:
<persona>
你是产品优化专家,拥有10年用户体验设计经验
</persona>
<data>
用户反馈:
1. "页面加载太慢,等了30秒"
2. "找不到购买按钮"
3. "价格显示不清晰"
</data>
<analysis_framework>
1. 问题识别与分类
2. 严重程度评估(基于影响用户数和业务影响)
3. 解决方案设计(技术可行性和成本评估)
4. 实施优先级排序
</analysis_framework>
<output_format>
{
"issues": [
{
"problem": "描述",
"severity": "高/中/低",
"affected_users": "预估影响用户数",
"solution": "具体解决方案",
"implementation_time": "预计实施时间"
}
]
}
</output_format>
高级标签用法
<thinking>
<!-- 内部推理过程,不会显示在最终输出中 -->
需要先分析问题的根本原因,再提出解决方案
</thinking>
<answer>
<!-- 实际输出内容 -->
基于分析,主要问题是...
</answer>
十一、工具与多模态
部分模型支持调用工具以增强能力,例如:
<tools>
- web_search: 获取最新信息
- calculator: 复杂数学计算
- code_executor: Python代码执行
- image_analyzer: 图像内容分析
</tools>
<task>
检索2024年中国咖啡市场数据,计算年增长率,并生成可视化分析报告
</task>
多模态处理示例
<image_analysis>
请分析这张用户界面截图,识别可用性问题
</image_analysis>
<requirements>
1. 识别界面元素布局问题
2. 评估色彩对比度
3. 检查交互元素的可访问性
4. 提供具体改进建议
</requirements>
十二、安全与合规
系统级约束
<system_constraints>
- 禁止生成有害或违法内容
- 保护用户隐私信息
- 拒绝执行可能造成损害的指令
- 明确标注不确定的信息
</system_constraints>
<ethical_guidelines>
- 不提供医疗诊断或法律建议
- 避免偏见和歧视性内容
- 尊重知识产权
- 透明说明AI的局限性
</ethical_guidelines>
敏感信息处理
<data_handling>
- 识别PII(个人身份信息)并进行脱敏处理
- 不存储或传播敏感数据
- 遵守GDPR等数据保护法规
</data_handling>
<example>
输入:"张三的身份证号是123456..."
处理:"[已脱敏个人信息]"
</example>
十三、测试与评估
黄金测试集方法
1. **准备测试集**
- 收集20-50个典型案例
- 涵盖正常、边界和异常情况
- 标注期望输出
2. **评分标准**
- 准确性(0-10分)
- 完整性(0-10分)
- 格式规范(0-10分)
- 响应时间
3. **迭代优化**
- 识别失败模式
- 调整prompt结构
- 重新测试验证
A/B测试框架
<test_setup>
版本A:基础prompt
版本B:优化后的prompt
<metrics>
- 任务完成率
- 输出质量评分
- 用户满意度
- 处理时间
</metrics>
<sample_size>
每版本至少100次测试
</sample_size>
</test_setup>
评估检查清单
评估维度 |
检查项 |
权重 |
准确性 |
信息是否正确 |
40% |
相关性 |
是否回答了问题 |
30% |
完整性 |
是否覆盖所有要点 |
20% |
格式 |
是否符合要求格式 |
10% |
十四、高级优化技巧
长上下文处理
<context_management>
当处理超过10000字的内容时:
1. 使用分段处理策略
2. 保持关键信息的连续性
3. 使用摘要-展开模式
</context_management>
<example>
<document_chunks>
<chunk id="1" priority="high">核心内容</chunk>
<chunk id="2" priority="medium">支撑细节</chunk>
<chunk id="3" priority="low">背景信息</chunk>
</document_chunks>
</example>
Prompt 缓存优化
<cache_strategy>
- 识别重复使用的prompt部分
- 创建模板库减少重复
- 使用变量替换机制
</cache_strategy>
<template name="analysis_template">
<static>
你是[role]专家,擅长[skill]
</static>
<dynamic>
分析内容:{{content}}
输出要求:{{format}}
</dynamic>
</template>
十五、结构化通用模板
<!-- 结构化组织信息的参考模板 -->
<system>
<persona>
你是[领域]的[职位]专家,具备[核心能力]
</persona>
<capabilities>
- 能力1:[具体描述]
- 能力2:[具体描述]
- 能力3:[具体描述]
</capabilities>
</system>
<user_request>
<task>
[明确的任务描述]
</task>
<context>
[相关背景信息]
</context>
<data>
[需要处理的数据]
</data>
</user_request>
<instructions>
<steps>
1. [步骤1]
2. [步骤2]
3. [步骤3]
</steps>
<thinking_process>
在<thinking>标签中保留推理过程(如模型支持)
</thinking_process>
<output_requirements>
- 格式:[JSON/Markdown/Plain Text]
- 长度:[字数范围]
- 风格:[正式/技术/通俗]
- 语言:[中文/英文]
</output_requirements>
</instructions>
<examples>
<example>
输入:[示例输入]
输出:[期望输出]
</example>
</examples>
<constraints>
- [限制条件1]
- [限制条件2]
- [安全约束]
</constraints>
结语
要点回顾:
- 结构化表达:角色、范围、步骤、格式尽量明确
- 可执行与可复用:输出便于复检与落地
- 持续评估:用小型测试集与A/B迭代
- 安全合规:注意个人隐私与法律合规
- 工具配合:在可用场景下接入检索、计算与多模态
建议从最小可用模板入手,结合实际逐步细化。