AI 提示词工程指南 2026

很多人把提示词工程理解成背口诀:记住几个框架、几句咒语,模型就会突然变聪明。实际用下来会发现,同一句“万能提示词”换个任务就失灵。原因不复杂——提示词工程的本质不是话术,而是把需求交代清楚的工程方法:你要什么、依据什么、不能做什么、交付成什么样,四件事说全了,多数模型都能给出像样的结果;说不全,再强的模型也只能靠猜。
本文按实操顺序展开:先划清提示词的能力边界,再给出一个可直接套用的基础结构,然后按写作、编程、分析、长文四类场景讲进阶手法,最后讲输出不对时怎么定位问题、怎么把好用的提示沉淀成模板。
一、先划清边界:提示词能改变什么、改变不了什么
动手写提示词之前,先分清哪些问题是提示词能解决的,哪些不是。这一步省下的时间,比任何技巧都多。
提示词能改变的:
- 任务的理解口径。 同一份材料,你要它挑错、要它改写、要它提炼结论,产出完全不同。口径靠提示词定。
- 输出的形态。 结构、长度、格式、语气、用不用表格,都可以在提示词里钉死。
- 思考的路径。 可以要求它先列已知条件再下结论,先给方案再评估,或者只给结果不展开。
- 材料的取舍。 可以划定只用你给的资料、优先引用哪一部分、忽略哪些内容。
提示词改变不了的:
- 模型不知道的事实。 你没提供的内部数据、没贴出来的原文,它只能现编——这是“一本正经胡说”的主要来源,不是态度问题,是材料问题。
- 知识的时效。 模型对训练之后发生的事没有可靠信息,涉及最新动态要么给它材料,要么用带联网检索的产品,并对关键结论做核查。
- 精确计算与计数。 长串算术、字数统计、批量计数这类事,语言模型本质上是在“估”,重要场合要复核或交给真正的工具算。
- 互相冲突的要求。 又要全面又要极简、又要通俗又堆术语,写进同一条提示里,它只会随机牺牲一项。
由此得到一条总原则:提示词负责把需求和材料交代清楚,不负责给模型变出它没有的知识。 答非所问,多半是交代不清;言之凿凿却查无此事,多半是没给材料还要求确定答案。
另外要提醒的是,各家模型的“脾气”确实不同:有的对长指令跟随更稳,有的对格式约束更敏感,有的在长上下文里对中段信息的利用明显弱一些。所以同一条提示词换个模型,效果有出入是常态,后文讲模板复用时会提到要标注验证过的模型。
二、基础结构:任务、背景、约束、输出格式四件套
不需要记复杂的英文缩写框架。日常九成的任务,把下面四件事写全就够了。
2.1 四件套速查表
| 要素 | 回答的问题 | 缺了会怎样 | 写法提示 |
|---|---|---|---|
| 任务 | 到底要它做什么 | 泛泛而谈,抓不住重点 | 用动词开头,一次只给一个核心任务 |
| 背景 | 事情发生在什么场景、给谁用 | 深浅失当,口径跑偏 | 交代受众、用途,以及手头已有的材料 |
| 约束 | 不能做什么、必须守什么 | 越界发挥,顺手编造细节 | 把“不要”写明,并给“拿不准时怎么办”留出口 |
| 输出格式 | 交付物长什么样 | 回来一大段散文,还得自己二次整理 | 结构、长度、载体(表格/清单/JSON)、语气一次说清 |
四件套里最容易被漏掉的是约束,尤其是给模型留“诚实的出口”:要求它“资料里没有的信息直接写‘无依据’,不要推测填充”,幻觉会明显收敛。只喊“要准确”没有用,模型不知道用什么方式对你负责,给它具体的处置规则才有效。
2.2 一个完整的示例
场景:小区门口的宠物店要贴一份猫咪寄养须知。
只给任务的写法是:“帮我写一份宠物寄养须知。”模型只能交出一份放之四海皆准的模板:接送时间怎么算、生病了怎么办、喂食按谁的标准——全靠它猜,猜的还多半与店里的实际规矩对不上,你得逐条返工。
四件套的写法是这样的:
- 任务: 写一份《猫咪寄养须知》,打印出来,入店顾客签字带走一份,店内墙上贴一份。
- 背景: 我们是社区宠物店,只接体重 5 公斤以内、疫苗齐全的家猫,顾客多为周边住户,出差寄养以 3 到 7 天为主。
- 约束: 不承诺任何医疗处理,生病只写“第一时间联系主人,并按主人预留的兽医地址送医”;不写价格,价格另有价目表;语气友好,但收费与责任的边界要写明确,不留歧义。
- 输出格式: 分“入店前”“寄养期间”“接回时”三部分,每部分用短条目列完;全文 600 字以内;最后附一行需顾客签字确认的事项。
两个版本产出的差距不在文采,在返工量。前者你拿到的是毛坯,后者基本可以直接打印。区别就是四件套把模型原本要猜的地方,逐项堵上了。
2.3 三个常被漏掉的细节
- 材料和指令分开。 待处理的原文、数据、代码,用三横线或成对标签圈出来,和指令分置两处。不然模型容易把材料里的句子误当成命令,或者把你的要求当成材料的一部分复述出来。
- 否定约束写具体。 “不要编造日期和数字,原文没有的标注‘待核实’”,比“内容要真实可靠”有效得多。
- 长度给区间。 “300 到 500 字”比“简短一点”可执行;但也别把长度卡得太死,内容完整优先时,宁可写“以讲清为准,不超过 800 字”。
三、进阶手法:按场景选,不要全堆上
手法不是越多越好。一条提示里同时塞角色扮演、示例、思维链、自我反思,结果往往是篇幅爆炸、重点稀释。下面按四类高频场景,各挑最对症的手法讲。
3.1 写作场景:先定骨架,再填血肉
长文写作最忌一次成型。更稳的做法是分步交付:先只要大纲,确认方向和详略之后再逐节展开。第一步跑偏,后面全是浪费;骨架对了,单节写坏重写一节即可,成本低得多。
风格要求别用形容词。“写得活泼一点”“专业一些”这类词,每个模型的理解都不一样。换成给样本:贴一段你认可的文字,说明“照这个语气和句式密度写”。风格样本本质上是背景材料,比形容词精确一个量级。
改稿类任务则相反,要把“不许动什么”写进约束。比如把内部通知改成对外文案时,明确“事实信息(时间、范围、处理方式)一字不改,只调整语气和结构”,能避免它改稿时顺手把关键事实也“润色”掉。
3.2 编程场景:上下文给全,验收说清
让模型看代码时,三样东西缺一不可:报错信息的原文、相关的代码段、运行环境(语言版本、框架、部署方式)。只贴代码问“为什么跑不起来”,它只能猜最常见的几种原因,来回拉扯。
输出结构建议钉成两段:先定位原因,再给修改。只要代码不要解释,表面省事,下次遇到同类问题你还是不会判断;要它讲清触发条件,你顺带把这类坑学会了。
举个具体的例子。下面这个汇总 CSV 金额的函数,遇到空行就报错:
import csv
def total_amount(path):
with open(path, newline='') as f:
rows = csv.DictReader(f)
return sum(float(r['amount']) for r in rows)报错是 ValueError: could not convert string to float: ''。一条合格的提问应该这样组织:贴上代码和报错原文,然后说清要求——指出是哪种数据触发的、为什么;只改异常处理部分,不动函数签名,不引入新库;改完说明对正常输入的行为与原来一致。最后这句就是验收标准:编程场景里把“怎么算改对”写进提示,比事后再验省事得多。
3.3 分析场景:先定口径,再给样本
分类、打标、归因这类任务,质量瓶颈不在模型,在口径。类别边界不清,换谁来分都分不齐。所以顺序是反的:先在提示里把类别清单、归类规则、疑难情况的处置写死,再让它动手。
口径光用文字描述还不够稳,这正是少样本最对症的地方:给两三条你分好的样本,它照着模仿。注意样本质量比数量重要,边界情况的样本最值钱。比如把客服工单分成四类,可以这样给样本:
- “快递三天没有揽收记录,能帮我催一下吗” → 物流进度
- “杯子到手发现杯口有个豁口” → 商品质量
- “上周买的时候比现在贵了几十块,能退差价吗” → 价格与售后
然后接上待分类的工单列表,要求用表格输出分类结果,并追加一条约束:拿不准的单独标“待人工确认”,不要硬分。这条约束看着不起眼,却是分析类任务里防出错的关键——被迫二选一时,模型不会承认犹豫,只会随便挑一个,还显得很笃定。
另一个防幻觉的硬办法是要求结论挂依据:每条结论后面标注它来自哪条数据,数据里没有的写“无数据支持”。写分析报告、做用户反馈归纳时,这一条能挡掉大半无中生有。
3.4 长文场景:分段喂,滚动记,锚点问
处理几万字的材料,别指望一股脑塞进去它就能全记住。各家模型对超长上下文的实际利用参差不齐,塞在中段的信息最容易被忽略。可行的办法是工程化拆解:
- 分段处理。 按章节逐段给,每段先让它提要点和存疑处,你确认后再进入下一段。
- 滚动摘要。 维护一份“已确认要点清单”,每轮把清单连同新一段材料一起给它,让结论始终建立在已确认的信息上,而不是它对前文的模糊印象。
- 锚点提问。 问具体问题时指明依据范围,“只依据第三部分的表格数据回答”,比“根据全文回答”可靠得多。
- 重要约束放末尾复述。 超长提示里,开头的约束容易被冲淡,关键要求在结尾再出现一次,执行率明显更高。
3.5 两个被说滥的手法,摆正位置
分步思考。 对推理、排查、方案比较类任务确实有用,要求它“先列已知与未知,再逐步推演,最后给结论”,能减少跳步出错。但对查定义、改句子这类简单任务,纯属浪费篇幅。另外不少新一代推理型模型内部已经自动展开思考过程,再外显地命令它“一步步想”,收益有限甚至会干扰它自带的节奏。结论:按任务复杂度选,推理题开,简单题关。
角色设定。 它的实质是背景信息的一种:告诉模型“以一线仓库管理员的口径回答”,主要影响它关注哪些细节、用什么词,不会让它凭空多出从业资格。写营销文案、模拟面试官提问这类场景,角色设定很对症;但涉及医疗、法律、财务的实质性结论时,角色扮得再资深,产出也只能当草稿,必须人工复核。把角色当风格开关用,别当资质证明用。
四、输出不对时:先定位,再动手改
提示词写不好的人有个共同习惯:输出不满意就整段重写,或者在原提示后面不停打补丁,最后谁也说不清哪句起了作用。正确的做法和调代码一样:先定位故障在哪一环,一次只改一处,改完重测。
4.1 问题定位流程
输出不满意时,按这个顺序往下查,前一项排除了再看下一项:
- 先看任务。 这条提示里是不是只有一个核心任务?塞了三个任务,它必然顾此失彼。拆开,一次做一件。
- 再看材料。 它“编”出来的内容,是不是恰好是你没给它的信息?是的话,补材料,或者明确写“没有依据就标注无依据”。
- 再看约束是否打架。 又要详细展开又要 100 字以内、又要通俗又要满篇术语,这类冲突它只会随机牺牲一项。砍掉次要的,或写明优先级。
- 再看格式是否可执行。 既要严格 JSON 又要每条附解释,格式必然破裂。两个要求二选一,或者先出内容、再单独让它转格式。
- 最后才怀疑模型。 前四项都排除、同一提示连试两次仍不达标,才考虑是当前模型不擅长这类任务:换模型,或换思路(拆得更小、给它样本、把计算部分交给工具)。
常见症状可以对着这张表快速归因:
| 症状 | 多半出在哪一环 | 先改什么 |
|---|---|---|
| 答非所问 | 任务含糊,或多个任务打架 | 一次一个任务,动词开头重写 |
| 一本正经地编造 | 材料缺失,又没留“不知道”的出口 | 补材料;加“无依据标注待核实” |
| 正确的废话,通篇笼统 | 背景缺失 | 补受众、用途和具体场景 |
| 格式总是不对 | 格式要求含糊或自相矛盾 | 给一份填好的样例,或改用更宽松的载体 |
| 同一提示时好时坏 | 留白太多,随机发挥空间过大 | 收紧约束、补样本、关键要求在末尾复述 |
| 越改越乱 | 在老对话里层层叠补丁 | 重写一版干净提示,另开新对话验证 |
最后一条值得单独强调:长对话里反复追加“再长一点”“语气再正式点”,上下文会越堆越拧巴。当你发现自己在打第三个补丁时,停下来,把最终要求整理成一版完整提示,另开对话从头验证,往往一次就过。
4.2 分清是提示的问题,还是模型的问题
定位流程走到第五步时,有两个小实验可以帮你定性:
- 交叉验证。 把同一条提示原样丢给另一家模型。对方答得明显好,说明是模型适配问题:回到原模型时,把隐含要求写得更显式(它对暗示的领会弱一些),或干脆这类任务就固定用对方。两家都答不好,基本可以断定问题在提示本身,回去查前四项。
- 缩小复现。 把任务砍到最小:只处理一条数据、只改写一段话。最小版就错,是口径没对齐或模型能力不逮;最小版对、大批量错,是材料组织的问题,改分段和滚动摘要那一套(见 3.4)。
这两个实验各花不了两分钟,能避免你在错误的方向上耗半天。
五、模板化与复用:把一次性提问变成资产
调试好的提示如果只用一次,下次还得从头再来。真正拉开效率差距的,是把高频任务沉淀成模板。
模板的结构很简单:固定部分加变量部分。 固定部分是任务句式、输出格式和通用约束,写好之后不动;变量部分是每次要替换的主题、材料、受众,用醒目的占位符标出来。一个原创的例子是读书笔记卡片模板:
把下面这段读书摘录整理成笔记卡片,供我日后围绕检索使用。
约束:只用摘录里出现的信息,不补充外部知识;摘录没讲清的,标注“原文未展开”。
输出:每张卡片三部分——一句话结论、原文依据(摘录原句)、可追问点(留空,我自己填)。
摘录如下:
---
---复用模板有三条经验值得注意:
- 标注验证环境。 在模板开头留一行备注:这是在哪个模型上调通的、最后修改日期。模型隔段时间就会更新,同一模板效果漂移是常事,核心模板值得每隔一阵回测一遍。
- 把“为什么”写进注释。 团队共用模板时,只给模板不给原理,接手的人换个场景就不敢改、不会改。每个关键约束后面带一句理由,模板才真的能传下去。
- 不在多,在高频。 别一上来就建几十个模板的仓库。先把每周都会重复的三五类任务模板化——周报整理、会议纪要、工单分类、改稿润色这一类——收益来得最快,维护成本也最低。
六、两条底线
最后是两件和技巧无关、但必须守住的事。
敏感信息不进公共模型。 密码、密钥、身份证号、客户名单、未公开的经营数据,不要贴进面向公众的在线服务。工作场景确实需要处理时,先脱敏,或者使用签有数据处理协议的企业版服务。这条没有技巧可讲,只有习惯。
重要结论必须人工复核。 数字、日期、人名、引文出处,是模型最容易编造的四类信息。凡是产出要对外发布、要拿去做决策的,这四类逐项回到原始来源核对一遍。提示词写得再好,也替代不了这一步——它降低的是出错概率,不是免除核查义务。