ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

提示工程架构师:从写提示词到搭建稳定提示系统

提示工程架构师:从写提示词到搭建稳定提示系统

身边有不少朋友问我:提示工程到底是一门技术,还是碰运气的玄学?我的回答是,它既不是玄学,也不是背几套模板就能上手的“咒语”。真正有意思的点在于,同样是用大模型写提示词,有人只能交付出一条时灵时不灵的 prompt,有人却能搭出一套稳定运行的提示系统。这两者之间的差距,靠的不是天赋,而是把“努力”用对方向。能把这件事做到极致的人,就是我们今天要聊的提示工程架构师。

我见过一个人靠一段精心设计的提示词,把一个内容审核流程的耗时整体压缩了三分之二;也见过另一个团队,因为模型版本升级后提示词没有同步调整,整个自动化流程瞬间崩盘。同样是写提示词,前者做出的是经得起考验的系统,后者只是在碰运气。这篇文章想聊的,就是成为前者需要做的事情:这个角色到底解决什么问题、需要什么样的能力地图、怎样通过刻意练习一步步进阶,以及在实战中最容易翻车的地方。

1. 提示工程架构师和普通“prompt写手”的分水岭:单点技巧与系统设计的差距

1.1 为什么“一句话提示词”往往不够用

刚接触大模型的人,很容易产生一种错觉:提示词就是“把需求说清楚”。碰到简单任务,这个说法没错;一旦任务稍微复杂一点,比如要求模型同时完成分类、抽取、格式化输出、兜底处理,单条提示词就会变成一团乱麻。

我见过有人为了让模型输出稳定,把规则越堆越多,最后一段提示词写了两千多字,模型反而开始顾此失彼,不是漏掉规则,就是格式错乱。原因很简单:提示词不是法律条文,堆得越密效果不一定越好。模型是在有限上下文里做概率推理,大量相互纠缠的约束会稀释它对关键信息的注意力。

所以真正决定提示词质量的,不是“写得多”,而是“结构是否清晰”。一个成熟的提示工程架构师,会把一段提示词拆成系统角色设定、任务目标、输入输出规范、示例、兜底说明等几个层次,让模型的注意力聚焦在有价值的信息上。

1.2 架构师的三类核心交付物

从交付物上看,普通提示词写手交付的是“一段文字”,提示工程架构师交付的则是一套“体系”。这套体系通常包含三类东西:

第一类是提示模板体系。同一类任务,不会每次重写提示词,而是抽象出变量槽位,比如“任务目标”“用户输入”“示例”,写一个模板,批量复用。

第二类是评估数据集。架构师会为每个提示系统维护一组测试用例,覆盖正常输入、边缘输入和异常输入。改一句提示词之前,先在数据集上跑一遍,用指标判断是变好还是变坏,而不是靠感觉。

第三类是运行时的调度与兜底逻辑。比如多轮任务里,不同步骤分别使用什么提示;模型返回格式异常时怎么重试、怎么降级、怎么记录失败样本。

把这三类东西放在一起,提示工程才从“写句子”变成了“做系统”。这也解释了为什么有的人抄了别人的提示词也用不好:因为真正值钱的从来不是那段话,而是围绕这段话搭起来的评估和改进流程。

2. 三重视角:模型边界、业务拆解、工程化交付缺一不可

2.1 模型视角:知道模型擅长什么、不擅长什么

第一条要补的认知,是大模型的真实能力边界。很多人把模型当成全能助手,什么任务都往里面扔,结果输出质量不稳定,就抱怨“模型不行”。

实际上,不同任务的难度差得很远。改写一段文案、给文本分类,这类偏向语言模式匹配的任务,现阶段的模型普遍做得不错;而需要精确多步推理、需要严格数值计算、需要结合大量实时信息的任务,模型就容易出错或者出现幻觉。

架构师在接手一个需求时,第一件事往往是判断“这个任务适合交给模型做吗?适合用哪种方式做?”比如一个需要查阅最新数据的场景,单靠提示词让模型“回忆”是不靠谱的,更合理的设计是接入检索,把相关资料先拿回来,再让模型基于给定材料回答。提示词只能约束模型的表达方式,无法弥补信息和推理能力的空缺。

这类判断做多了,你还会发现一个规律:同一个模型,对不同任务的敏感度差异很大。温度参数设成0.2还是0.7,对分类任务的影响可能很小,对文案生成的影响却非常明显。理解这类参数与任务的匹配关系,是模型视角中不可缺失的一环。

2.2 业务视角:把“帮我写个XX”拆成可验证的规范

第二个视角,是把业务需求翻译成可验证的输入输出规范。业务方说“帮我把用户反馈自动分类一下”,这句话听起来简单,但真正落到实现层面,问题一个接一个:分成几类?类目定义是什么?一个反馈同时涉及多个问题时如何处理?摘要长度有没有限制?输出用什么格式?异常输入怎么处理?

如果这些问题不先问清楚,提示词写得再漂亮,上线以后也会漏洞百出。我通常的做法是,用一份非常简短的“输入输出契约”把需求定死:输入字段有哪些;输出字段有哪些;每类输出的格式和取值范围是什么;遇到不符合条件的输入时,模型应该做什么。

这份契约有点像软件工程里的接口文档。提示工程之所以叫“工程”,就是因为它的核心工作不只是写提示,而是定义清楚系统边界,让模型在边界内稳定发挥。

2.3 工程视角:让提示词像代码一样可维护

第三个视角,是把提示词当成代码来管理。听起来有点极端,但实际做项目时,提示词的迭代频率很可能比代码还高。今天发现问题调一句话,明天模型升级调一个词,如果没有版本管理,你会发现自己很快说不清“当前线上跑的是哪一版提示词”。

我自己的习惯是,每个提示模板都放进版本仓库,提交信息写清楚改了什么、为什么改、评估指标变化多少。这样既能复盘每次调整的效果,也方便新加入的同事快速理解整个系统的演进过程。

工程视角还有一个容易被忽视的点:成本控制。提示词越长,单次调用消耗的token就越多;模型输出越不稳定,需要的重试次数就越多,成本和延迟都会上升。架构师在取舍提示词细节时,心里要有一本账,不能为了几个点的准确率提升而让成本和延迟翻倍。

3. 从复制粘贴到体系化设计:可复制的四阶段成长路线

3.1 阶段一:模仿期——带着“为什么”拆解优秀提示词

成为提示工程架构师的第一阶段,其实是模仿。但模仿不是简单的复制粘贴,而是拆解。看到一条优秀的提示词,至少问自己五个问题:它设定了什么角色?为什么是这个角色?它给出的任务指令有什么顺序?示例是怎么选取的?为什么用这个格式约束输出?最后还有一句提示是做什么用的?

把这些“为什么”都拆明白了,才算真正看懂了一条提示词。我见过不少人收集了上百条所谓“万能提示词”,结果真到用时一条都不顺手,就是因为在模仿期缺了这层拆解功夫。

这个阶段最适合的练习方式是:拿一个自己工作中的真实小任务,先用最朴素的方式写一版提示词,记下输出效果;然后参考优秀案例的结构,逐步调整。每改一处,跑若干个例子对比,体会不同结构对结果的影响。这个过程不需要太久,但它是建立“提示语感”的基础。

3.2 阶段二:场景化期——建立属于自己的模板库

模仿期之后,你会发现自己能写出“像样的”提示词了,但用起来还要反复调整。这时候就需要进入场景化期:针对自己的工作流,把高频任务抽象成可复用的模板。

比如一个做内容运营的人,经常要处理摘要生成、标题改写、错别字检查,那就分别做三套模板,把任务描述、输出格式、示例都固定成结构体,只留出输入槽位。下次使用时,填槽即可,不用重写。

模板库的好处不止是省时间,它还能帮你沉淀经验。某类任务在什么条件下容易失败、失败后加哪句说明能改善,这些观察单独记在笔记里没有价值,固化到模板里才能持续发挥效用。

3.3 阶段三:评估期——用数据代替感觉

到了这个阶段,你会发现自己的提示词已经“挺好用了”,但想更进一步的时候却不知道从哪里下手。这时候最需要建立的就是评估意识。

评估的概念不需要搞得很复杂。为每个核心任务准备30到50条测试输入,人工跑一版当前提示词,把结果归档作为基线。之后每改一次提示词,把这批输入重新跑一遍,对比输出质量。质量怎么定义?可以是业务方认可的准确率,可以是格式合法率,也可以是你自己打分。关键在于,每一次调整都有可比对的数据。

我团队里的一个实习生一开始也嫌麻烦,觉得“凭感觉调一调不就行了”。结果他花了三天把提示词从一版调到十二版,最后问我“你觉得第几版最好”,我说你自己都判断不了,这三天就是无效努力。后来他建立了50条测试集,一周时间就把效果稳定提升了明显一截。评估体系的价值,是做提示工程最值得花时间投入的一项基础建设。

3.4 阶段四:系统化期——从单条提示走向提示链路

最后一个阶段,是从单条提示词走向提示链路。一个复杂的业务场景,往往不适合用一个巨大的提示词搞定,更合理的做法是拆成多个子任务,分别设计小提示,再把它们串起来。

举个例子,做一份政策文件的要点提炼,如果一步到位让模型“提炼要点并分类并翻译成通俗表达”,很容易顾此失彼。拆成三步就清晰得多:先抽取结构化要点,再做分类归并,最后改写成通俗版本。每一步的提示词都更简单、更稳定,中间还能插入人工检查或程序校验。

到了这一步,你才真正具备“架构”能力:知道如何分析任务、如何切割流程、如何在每个环节设计输入输出接口、如何在链路中加兜底。这个阶段也是普通提示词写手和提示工程架构师之间最明确的分界线。

4. 完整案例拆解:从模糊需求到可运行的提示系统

4.1 需求拆解:一句话需求背后至少有三层信息

光说理论容易飘,我用一个实际做过的案例来走一遍完整流程。这个案例本身不复杂,但非常适合体现架构师的思考方式:为某电商平台的客服团队设计一个“用户反馈分类与摘要系统”,输入是用户反馈文本,输出是三分类标签加一句摘要。

拿到这个需求,我先不是写提示词,而是做需求拆解。三层信息里,第一层是“分类标准”。反馈到底分几类?和业务方对齐后定为三类:功能问题、物流问题、产品问题。第二层是“摘要口径”。摘要要不要保留用户原话里的情绪?长度有没有限制?最后对齐为:一句话客观概括,不超过30个字,不评价对错。第三层是“异常输入策略”。如果输入是空白、纯表情或与三分类完全无关的内容,模型应该直接返回“无法分类”,而不是强行塞进某一类。

这三层信息没对齐之前,任何提示词设计都是空中楼阁。这一步做完,其实系统已经有了一半。

4.2 提示结构设计:系统提示词、用户输入和示例的组织方式

需求明确后,我开始设计提示模板。下面是初版结构,这里给出一个简化示例:

[系统提示词] 你是电商平台用户反馈分析助手。你的任务是对用户反馈进行自动分类,并生成一句话摘要。 分类说明: 1. 功能问题:指App或网站使用过程中出现的报错、卡顿、无法下单等。 2. 物流问题:指发货延迟、包裹丢失、配送地址错误等。 3. 产品问题:指商品质量、功能缺陷、与描述不符等。 如果反馈无法归入以上任何一类,请直接输出 {"category":"无法分类"}。 输出格式(严格使用JSON,不要输出其他内容): {"category":"功能问题"|"物流问题"|"产品问题"|"无法分类", "summary":"不超过30字的一句话概括"} [示例] 用户反馈:我昨天下的单到现在都没发货,物流信息一直不更新。 输出:{"category":"物流问题","summary":"订单发货后物流长时间未更新。"} 用户反馈:手机App一打开就闪退,根本进不去。 输出:{"category":"功能问题","summary":"App打开即闪退,无法正常进入。"} [待处理反馈] {用户反馈原文}

这里有几个设计意图值得展开。系统提示词先给任务再给分类说明,把模型的注意力一级一级地向目标聚焦。示例特意选了三个类别中的两个,并且没有覆盖“无法分类”,因为要让模型通过已有示例理解格式,同时保留对未见情况的泛化能力。输出格式用JSON约束,是为了后续能被程序直接解析,而不是靠肉眼从一段话里捞结果。

如果你对格式解析足够熟悉,会注意到格式说明里其实有更“硬”的约束方式,比如在少样本示例里把JSON的键顺序固定,避免模型随机调整字段顺序。这类细节,就是架构师和写手在实战中拉开差距的地方。

4.3 构建评估集:覆盖正常、边缘与异常输入

模板初版完成后,我没有急着上线,而是先构建了评估集。我准备了40条测试输入,分布大致是:25条正常反馈(三类各有一些)、10条边缘输入(中英文混杂、口语化、带错别字)、5条异常输入(空白文本、纯表情、与业务无关的内容)。

评估集的价值,在这个例子里体现得非常直接。第一轮跑完,正常输入的分类准确率大概在九成,但边缘输入掉到了不足七成,异常输入也经常被强行塞进某一类。如果当时只看那几条精心挑选的“展示样例”,完全发现不了这些问题。

有些问题是提示词本身可以解决的,比如异常输入策略在系统提示词里写得还不够强;有些则是评估集本身的问题,比如某些边缘样本的分类标准连人工判起来都很模糊。这里我会和业务方再对齐一次,要么把边界拉清楚,要么把这类样本从评估集中拆出去单独处理。

4.4 迭代策略:先跑通基线,再逐步收紧

在这个项目里,我的迭代策略是“先跑通,再收紧”。第一轮把分类做对,格式完全正确;第二轮才开始考虑摘要质量;第三轮再针对边缘输入加约束。

每轮迭代只看一个指标,比如第一轮只看“分类准确率”和“JSON解析成功率”。只有在主要指标稳定之后,才会去处理次要指标。原因很简单,同时追多个指标,改一条提示词就可能“按下葫芦浮起瓢”,最后分不清是哪次修改带来的变化。

第三轮的一个典型修改是:把“无法分类”的说明从一段变成两段,再加一条专门的示例。改完以后,异常输入的准确率从六成多一下子提到九成以上。这条示例的成本极低,效果却比在规则里反复强调有效得多,这就是好的示例胜过冗长规则。

4.5 运行效果与复盘:数据会告诉你答案

整个系统上线前,评估集上的数据表现是:正常输入准确率约95%,边缘输入约85%,异常输入约90%,JSON解析成功率接近100%。这个结果不是一次到位的,而是经过四五轮迭代慢慢爬升的。

上线后我还做了一件事:把模型真实返回中的失败样本持续收集起来,每周复盘一次。因为评估集是静态的,真实流量里总有没覆盖到的新表述。复盘后,有选择地把高频新问题补进评估集,再决定要不要调整提示词。这样,整个系统不是在“做完之后等出问题”,而是在持续进化。

5. 提示工程中最容易翻车的五个认知误区与修正方案

5.1 误区一:提示词越长越详细,效果就越好

很多人觉得,要让模型听话,就得把话说得事无巨细。但实际跑下来,你会发现提示词越长,模型反而更容易抓不住重点。上下文窗口虽然是有限的,但模型对越靠前和越靠后的内容关注度并不是等价的,冗长的背景信息会稀释核心指令的权重。

修正方法很直接:把提示词按“任务目标、执行步骤、输出格式、示例”拆开写,并且尽量保持各部分职责单一。想让模型记住某条规则,与其反复唠叨,不如把它写进精心设计的示例里。示例比抽象的规则更容易让模型“看见”你期望的行为。

5.2 误区二:一套提示词打天下,换模型也不管

这是我在实际项目里踩过最贵的一个坑。不同的模型,训练数据、能力结构、指令遵循程度都不一样。上一版模型上表现很好的提示词,换到新版本模型上可能掉好几个百分点,甚至格式解析直接失败。

现在我的做法是,每个项目都明确记录“当前提示词针对哪个模型版本调优”,并在模型升级时主动回归一遍整套评估集。不要等到线上出了问题再回头排查,那种被动定位的成本往往是主动回归的很多倍。

5.3 误区三:结构化输出依赖“运气”

所谓“依赖运气”,就是只在提示词里说“请输出JSON”,却没有给模型足够强的格式约束。结果模型有时输出正经JSON,有时在JSON前后夹带几句解释,解析程序一跑就崩。

修正方案有三层:第一层,在提示词里明确定义输出格式,并给出一个完整示例;第二层,设计解析函数时兼容前后缀噪音,尽可能提取出JSON片段;第三层,在链路中加一道校验,解析失败就自动重试。这三层加在一起,结构化输出的稳定性会高得多。

5.4 误区四:没有评估就调优,凭感觉反复试

主线内容里我已经反复强调过评估的重要性,这里再补一个常见场景:给模型调提示词的时候,手头只有三条测试文本,谁的分辨力强就听谁的。但三条样本通常不足以代表真实业务分布,在三条样本上做得再好,放到线上也可能翻车。

我在复盘计划里给自己定了一条规则:任何一次提示词修改,至少要在30条样本上验证,并且保留实验结果。这会让整个迭代周期拉长,但每一次改动都能沉淀成可引用的经验,而不是一堆“我当时觉得这样改不错”的模糊记忆。

5.5 误区五:把提示工程当成万能解药

提示词能做的事情,其实有一个明确的边界。认知类、需要实时信息类、需要严格多步计算类的任务,不是提示词写得好就能解决的。我曾经遇到一个需求,希望模型在做数据抽取的同时完成一个包含多步骤的数学计算,结果无论怎么调提示词,结果稳定性和可解释性都不达标。

后来换了一个方案:把数学计算拆出来用程序完成,提示词只负责文本理解和字段定位。整体效果立刻稳定,项目两周内就交付了。这件事给我的教训是,好的架构师一定懂得“什么不要用提示词做”。选择正确的技术栈、判断何时引入检索与代码逻辑,跟写好提示词本身同等重要。

5.6 贯穿始终的一条原则:评估优先于灵感

如果只能从这篇文章里带走一条原则,我希望是“评估优先于灵感”。灵感可以让你偶尔写出惊艳的提示词,但只有评估体系能让你持续稳定地产出好结果。把评估当成提示工程的核心基础设施,每一次修改都是在这套体系上做可控实验,你的努力才会形成复利。

5.7 个人体会:努力的方向决定成长曲线

最后说点我自己的体会。提示工程架构师这个角色,看着像是跟大模型打交道,真正做起来其实是在跟“清晰思考”打交道。你需要想清楚任务结构,想清楚模型边界,想清楚验证方式,想清楚兜底方案。这些能力的共同点,都是可以通过刻意练习获得的。

我自己的成长曲线并不是一条直线。前两个月基本是在模仿和拆解别人的案例,进步很快;中间有很长一段时间,自觉“已经会了”,实际却停留在反复调同一个提示词的原地打转。真正让我冲过那个瓶颈的,是开始建立评估集和复盘流程之后。从那以后,每天积累的经验才开始累积成系统能力。

如果你也想走这条路,我的建议其实很简单:挑一个真实业务里的高频小任务,把它做成一个带评估集的提示系统,坚持迭代一个月。这个过程中你会遇到绝大多数提示工程的核心问题,也会形成属于自己的第一套方法论。剩下的,就是在这条路上持续投入努力,让经验一点点累积成别人眼中的“出色”。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进