提示词工程完全指南:从入门到精通
提示词工程(Prompt Engineering)是与大语言模型对话的核心技艺。本指南系统梳理从基础概念、核心原则、常用技术到实战调优的完整方法论,帮你写出"听得懂、做得到、可复用"的提示词。
目录
1. 什么是提示词工程
提示词工程是通过设计与优化输入文本,引导大语言模型(LLM)输出符合预期结果的工程实践。它不是"咒语"或"玄学",而是一套可学习、可度量、可复用的方法体系。
为什么重要
- 杠杆最大:一行提示词的改动,常常比微调模型带来更显著的效果提升。
- 成本最低:相比训练/微调,提示词迭代几乎零成本。
- 可控性最强:明确指令 > 模糊表达 > 模型"猜测"。
它解决什么问题
| 问题 | 提示词工程的解法 |
|---|---|
| 模型回答跑题 | 明确角色、范围与边界 |
| 输出格式混乱 | 指定结构(JSON / Markdown / 表格) |
| 推理错误或跳步 | 引导链式思考(CoT) |
| 风格不一致 | 给出示例(Few-shot) |
| 答案发散 | 限制候选、设置温度与拒绝策略 |
2. 提示词的基本元素
一条完整的提示词通常包含:
- 角色(Role):你希望模型扮演谁。
- 任务(Task):要做什么。
- 上下文(Context):背景信息、受众、约束。
- 输入(Input):用户提供的内容。
- 输出格式(Output Format):结构、长度、风格。
- 示例(Examples):1~5 个高质量示例。
- 约束与兜底(Constraints):禁止事项、不知道时怎么办。
- 推理要求(Reasoning):要不要先推理再回答。
不是每个提示词都要全部具备,但要"按需取用"。
3. 七大核心原则
这些原则按"性价比"排序,越靠前越应优先用上。
原则 1:清晰明确(Clarity)
- 不好的写法:写一个关于猫的故事。
- 更好的写法:写一个 300 字、第一人称、温情风格的短故事,主角是一只流浪的橘猫,主题是"回家"。
技巧:
- 用具体名词替代抽象词("温情风格" → "海明威式简洁、温暖结尾")。
- 给出可衡量的标准(字数、读者年龄、字数范围)。
原则 2:赋予角色(Role Prompting)
给模型一个"专家人设",可以显著提升回答质量与稳定性。
你是一名有 10 年经验的高级 Python 后端工程师,擅长代码审查和性能优化。
请从可读性、性能、潜在 bug 三个维度审查下面的代码……
原则 3:分解任务(Task Decomposition)
复杂任务拆成"流水线",每一步只做一件事。
步骤 1:从用户输入中提取关键实体。
步骤 2:将实体映射到数据库表字段。
步骤 3:生成 SQL 语句。
步骤 4:检查 SQL 语法并给出执行计划建议。
原则 4:提供示例(Few-shot)
示例是最强的"格式与边界说明"。一条好示例胜过十句解释。
将输入转换为 JSON:
示例 1:
输入:姓张名三,22 岁,来自北京。
输出:{"name": "张三", "age": 22, "city": "北京"}
示例 2:
输入:姓李名四,30 岁,住在上海。
输出:{"name": "李四", "age": 30, "city": "上海"}
现在请处理:
输入:……
原则 5:约束格式(Format Constraints)
明确输出结构,可以直接对接下游系统。
严格按以下 JSON Schema 输出,不要任何额外文字:
{
"summary": "string, 50 字以内",
"tags": ["string"],
"score": "number, 0-10"
}
原则 6:要求推理(Reasoning Elicitation)
在需要严谨的场景,要求模型"先思考再回答"。
请一步一步推理:先列出已知条件,再推导结论,最后再下最终判断。
原则 7:自我校验(Self-Verification)
让模型检查自己的输出,是高级用户的常用技巧。
在给出最终答案之前,请:
1. 检查是否回答了用户的全部问题;
2. 检查事实是否准确;
3. 检查格式是否符合要求。
若发现问题,请重新作答。
4. 常用提示词技术
4.1 Zero-shot(零样本)
不提供示例,直接让模型完成任务。适合简单、模型已擅长的任务。
将下面这句话翻译成英文:今天天气真好。
4.2 Few-shot(少样本)
提供 1~5 个示例,提升模型对格式/风格的把控。示例质量 > 示例数量。
4.3 Chain-of-Thought(CoT,链式思考)
引导模型"一步一步想",显著提升推理、计算、逻辑题表现。
小明有 5 个苹果,吃了 2 个,又买了 3 倍的数量。
最后他有几个苹果?请一步步推理。
4.4 ReAct(推理 + 行动)
让模型在"思考-行动-观察"循环中执行任务,常用于 Agent。
可用工具:
- search(query): 搜索互联网
- calc(expression): 计算表达式
任务:特斯拉 CEO 最新净资产是多少美元?
思考 1:我需要先查到他的净资产数字。
行动 1:search("Elon Musk net worth 2026")
观察 1:……
4.5 Self-Consistency(自一致性)
对同一问题采样多次答案,取多数投票或最一致结果,提升稳定性。
4.6 Prompt Chaining(提示词链)
把多步任务拆成多个提示词,前一步输出作为下一步输入。
提示词 A:抽取实体 → 提示词 B:情感分析 → 提示词 C:生成摘要
4.7 Retrieval-Augmented Prompting(RAG 提示)
把检索到的外部知识拼到提示词中,让模型"基于给定材料回答",减少幻觉。
【参考资料】
{检索到的相关文档片段}
【问题】
基于以上资料,回答:……
要求:
- 只基于资料中的事实作答;
- 如果资料没有答案,请直接说"资料不足以回答"。
4.8 Tree of Thought(思维树)
让模型同时探索多条推理路径,挑选最优解。
4.9 Reflection(反思)
让模型对自己的输出做批评与改进,是当前最强的"质量提升器"之一。
请先生成答案 A,再以严格的审校专家身份指出 A 中的 3 个问题,
最后基于反思重写为答案 B。
5. 结构化提示词模板
下面这套模板覆盖了 90% 场景,可直接复用。
# 角色
你是一名 [具体角色],擅长 [专业领域]。
# 任务
[用一句话说清楚要做什么]
# 上下文
- 用户背景:[……]
- 业务背景:[……]
- 已知信息:[……]
# 输入
[用户提供的内容]
# 输出要求
- 格式:[Markdown / 表格 / JSON]
- 长度:[字数 / 条数]
- 受众:[……]
- 语气:[专业 / 口语 / 幽默]
# 约束
- 必须:[……]
- 禁止:[……]
- 如无法回答:[兜底策略]
# 示例(可选)
输入:……
输出:……
# 推理步骤(可选)
1. …
2. …
6. 不同任务类型的写法
6.1 文本生成
要点:角色 + 受众 + 长度 + 风格 + 明确主题。
6.2 信息抽取
要点:定义字段 + Schema + 严格 JSON 输出 + 缺失值兜底。
6.3 文本分类
要点:标签集封闭 + 类别互斥 + 给出"边界示例"。
6.4 问答 / RAG
要点:参考资料 + "基于资料"约束 + 不知道就说不知道。
6.5 代码生成
要点:语言 + 框架 + 输入输出示例 + 边界条件 + 注释要求。
6.6 翻译
要点:源语言 + 目标语言 + 风格 + 术语表 + 直译/意译偏好。
6.7 摘要
要点:长度比例 + 保留要点 + 输出结构(标题/要点/数字)。
6.8 角色扮演
要点:人设 + 语气 + 背景知识边界 + 不越权。
7. 常见陷阱与避坑指南
| 陷阱 | 现象 | 解决 |
|---|---|---|
| 指令模糊 | 输出跑题 | 用具体名词 + 可量化标准 |
| 过度限制 | 输出僵化 | 区分硬约束 vs 软约束 |
| 示例冲突 | 输出摇摆 | 示例风格保持一致 |
| 缺少兜底 | 模型硬编 | 明确"如果不知道,请说……" |
| 上下文溢出 | 模型忽略前文 | 把关键信息放在最前/最后 |
| 提示词过长 | 边际收益下降 | 用结构化分块 + 引用 |
| 一味要求 CoT | 简单题变慢 | 简单任务不必"一步一步" |
| 没有示例 | 风格不稳 | 关键场景给"金标准"示例 |
8. 迭代与评估方法
8.1 黄金法则:像产品经理一样迭代
- 明确目标:什么叫"好"?定 3-5 条可衡量的标准。
- 准备测试集:准备 10-50 条覆盖典型/边界/对抗样本。
- 跑 baseline:用当前提示词跑测试集,记录得分。
- 定位问题:按失败样本分类(格式/事实/风格)。
- 改一条:一次只改一个变量,对比结果。
- 回归:确保不破坏之前通过的样本。
8.2 A/B 测试
同一任务,准备 2-3 个提示词版本,随机采样,对比评估。
8.3 LLM-as-Judge
用一个更强的模型当裁判,对输出打分。提示词:
你是严格的评审员,根据以下标准给答案打分(1-10):
- 准确性(5 分)
- 完整性(3 分)
- 格式(2 分)
请只输出:{"score": <int>, "reason": "<一句话原因>"}
9. 进阶:让模型"自我进化"
9.1 自动优化器(如 DSPy、TextGrad)
把提示词当作可学习的参数,用算法自动搜索最佳组合。
9.2 元提示(Meta-Prompt)
让模型帮你优化提示词本身:
我有一个任务:[任务描述]
我现在的提示词是:[当前提示词]
我的测试样本是:[样本]
模型当前输出:[输出]
我期望的输出:[期望]
请你作为提示词工程专家,重写我的提示词,让模型输出更接近期望。
只输出新的提示词。
9.3 多智能体协作
把任务拆给不同角色的 Agent,互相校验。例如:
- 生成 Agent → 写初稿
- 评审 Agent → 找问题
- 修正 Agent → 重写
- 仲裁 Agent → 决定是否通过
10. 实战示例集
10.1 代码审查助手
# 角色
你是一名资深 Java 工程师,专注于代码审查与性能优化。
# 任务
审查用户提交的代码,从以下维度给出建议:
- 正确性
- 可读性
- 性能
- 安全性
- 可测试性
# 输出格式
使用 Markdown,每个维度一个二级标题。
对每个问题,给出:问题描述 + 严重程度(高/中/低)+ 改进建议 + 改进后代码。
# 约束
- 不要复述代码原文。
- 如无问题,请明确说"无明显问题"。
10.2 客服工单分类
# 角色
你是电商客服主管,负责将用户工单分类并评估紧急程度。
# 标签集(必须从中选择,不可新增)
- 类别:物流、售后、退款、商品咨询、活动、其他
- 紧急度:低、中、高、紧急
# 输出格式(严格 JSON)
{
"category": "string",
"urgency": "string",
"reason": "string, 30 字内"
}
# 输入
{{ticket_text}}
# 决策步骤
1. 提取用户核心诉求;
2. 匹配最贴近的类别;
3. 根据关键词(投诉/法律/立即等)评估"紧急度";
4. 给出 JSON 输出。
10.3 营销文案改写
# 角色
你是一名擅长小红书风格的文案撰稿人。
# 任务
将用户提供的"卖点列表"改写成 3 条小红书爆款文案。
# 要求
- 风格:亲切、有 emoji、有"干货"价值感;
- 长度:每条 80-120 字;
- 开头必须有"钩子";
- 结尾必须带"互动引导"。
# 示例
卖点:无线耳机,30 小时续航。
文案:🎧 通勤党狂喜!这个耳机续航真的离谱……快来评论区告诉我你的通勤神器!
# 输入
{{bullet_points}}
11. 速查清单
写提示词前,问这 10 个问题:
- 我是否给出了明确的角色?
- 我是否给出了可量化的任务?
- 我是否提供了必要的上下文?
- 我是否说明了输出格式?
- 我是否给出了示例(如适用)?
- 我是否说明了禁止事项与兜底策略?
- 我是否要求模型先推理(如适用)?
- 我是否考虑边界/对抗样本?
- 我是否能离线评估效果?
- 我是否能版本化提示词?
评论