老李的餐馆要开业了。他没有急着让后厨开工,而是先在厨房墙上钉了一本《后厨工作守则》。守则第一页写着:“本店主厨姓王,擅长川菜,不得擅自做粤菜;所有食材必须当日采购,隔夜一律倒掉;上菜时酱汁必须收浓,白瓷盘不能有指纹。”顾客来吃饭,只会说“来一份回锅肉”,至于回锅肉该是什么味道、用什么盘子装、什么时候上桌,全由墙上那本守则说了算。 在AI的世界里,这个道理一模一样。当你面对一个能力强大却“散漫”的大模型,想要它稳定、听话、按标准交付,就必须在用户开口之前,先递上一本守则。这本守则,就是系统提示词(System Prompt)。这篇文章会用“后厨守则”这条线,把系统提示词设计的六个要点串起来:它是什么、行为准则怎么定、输出规范怎么写、和用户提示词怎么分工、模板长什么样、以及如何在实际项目中不断优化。
系统提示词是Prompt工程师的“基本功”。掌握它,你就能让AI稳定输出高质量结果,而不是靠运气抽卡;这是从“会调接口”走向“能设计AI产品”的必经一步。
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
System Prompt System Prompt 系统提示词设计可视化:展示角色定义、行为准则、输出规范三大模块的结构与内容 系统提示词设计可视化:展示角色定义、行为准则、输出规范三大模块的结构与内容
系统提示词概述
老李的餐馆开张那天,他做的第一件事不是让主厨颠勺,而是把《后厨工作守则》钉在墙上。守则不写具体菜谱,只回答三个问题:你是谁、这里有什么规矩、什么绝对不能做。这套“先定规矩再开工”的打法,正是系统提示词在AI产品中扮演的角色。没有守则的厨房,主厨再厉害,今天做川菜明天做粤菜,客人永远得不到一致的体验。
把这个场景搬到大模型应用开发里,系统提示词(System Prompt)就是那条“墙上钉着的守则”。它是一段在用户对话开始前就植入模型的系统级指令,用来定义AI的角色、任务和边界。它与用户消息是分离的——用户每次输入都在变,而系统提示词保持不变。换句话说,用户是来“点菜”的,系统提示词是决定“后厨怎么运转”的。
从技术上看,系统提示词通常通过API的system字段传入。它存在于整个会话上下文中,模型每次生成时都会“看到”它。这就意味着,你写在系统提示词里的每一条规则,都会像后厨守则一样持续地约束AI的每个动作。最终模型的输出,是系统提示词与用户提示词共同作用的结果:
回到守则的比喻:一本写得好的后厨守则,能让任何一位临时顶班的大厨都做出味道一致的菜。同理,一套设计良好的系统提示词,能让AI在不同用户、不同请求下,始终保持产品方想要的那个“人设”和“标准”。守则在,风格就在。
- P(输出结果)模型最终返回给用户的那段文本,是整套设计的落脚点,就像端上桌的那盘菜。
- f(模型运算)大模型内部的复杂计算过程,相当于后厨里灶火、锅铲、食材发生化学反应的全过程。
- S(系统提示词)预先设置的后厨守则,定义角色、行为和输出规范,整个会话中都保持稳定。
- U(用户提示词)用户当下的点单内容,灵活多变,是每次对话中变化的部分。
行为准则定义
守则的第一章永远是“纪律红线”:不许徒手抓菜、炸油超过三次必须倒掉、食材不过夜。这些条目有一个共同点——它们不是抽象的“要好好做菜”,而是明确的“什么能碰、什么不能碰”。AI的行为准则也一样,写得越具体,AI就越不会“自由发挥”。
定义AI的行为准则,需要三个层次。第一是角色设定:告诉AI“你是谁”。就像守则第一行写“本店主厨姓王,擅长川菜”,你要让AI知道自己是“资深技术文档工程师”还是“贴心的客服专员”,这决定了它整体说话和思考的基调。第二是规则边界:明确能做什么、不能做什么。比如“禁止使用未经解释的专业术语”“不要替用户做决定”。第三是约束条件:那些硬性的、可验证的底线,例如“如果信息不足,必须明确说不知道,而不是编造”。
写行为准则时,最容易踩的坑是写得太“虚”。好的准则应该像守则条款一样可执行、可验证。一套行为准则,本质上就是一组带条件的规则集合:
用守则的话说:好的纪律条款不是“好好干活”这种空话,而是“看到客人催菜,先安抚再确认时间”这种明确的触发条件。AI的行为准则同理:每一条规则都应该是“当……时,就……”的条件句,这样模型才不会在模糊地带自行发挥。
- C(行为准则集合)AI所有行为规则的总体,相当于守则里的“纪律红线”章节。
- { }(集合符号)把所有规则装进一个集合里,表示它们同时生效、缺一不可。
- rᵢ(单条规则)集合中的某一条具体准则,例如“如果用户问隐私问题,拒绝回答”。
- cond → act(条件到动作)每条规则本质是“如果发生了情况X,就执行动作Y”,清晰的条件映射让AI有据可依。
输出规范设计
守则里的“菜品标准”章节,写得比纪律红线还细:回锅肉必须用白瓷盘装,酱汁要收浓挂在肉片上,上桌温度不得低于60度。没人规定回锅肉能不能吃得开心,但摆盘、温度、酱汁这三点定了,客人拿到的每一份出品都有基本的下限。AI的输出也需要这样的“出品标准”。
输出规范由三要素构成。其一是格式要求:规定输出长什么样。比如“先给结论,再列三个理由”“用Markdown二级标题分节”“每条建议不超过50字”。格式是AI最容易服从、也最容易检验的规范。其二是风格控制:规定说话的语气和调性。比如“使用口语化表达,像朋友聊天一样”“禁止使用感叹号”“文字必须客观中立”。其三是质量标准:规定内容的下限。比如“回答必须包含至少一个数据支撑”“不遗漏问题的任何子问题”“引用资料时必须标注来源”。三要素各司其职,构成一份完整的“出品验收单”:
后厨的出品标准为什么管用?因为它把“做得好吃”这种主观感受,拆成了“温度不低于60度”“酱汁必须收浓”这种可量化的验收项。输出规范设计也是同理——与其写“回答要有用”,不如写“每条回答以'一句话结论'开头,然后分三点展开”。规范越可检验,AI的出品就越稳定。
- O(输出规范)对AI产出物的整体约束,相当于守则里的“菜品标准”全章。
- F(格式要求)规定结构的要素,如分节、列表、字数限制,像盘子、摆盘、分量。
- T(风格控制)规定语气与用词倾向,像菜品的口味基调——咸鲜还是清甜。
- Q(质量标准)规定正确性与完整性下限,像“必须用新鲜食材”的硬性验收标准。
人机分工职责
守则定规矩,顾客负责点菜。大厨不会因为顾客说“多放辣”就把整个菜单改成湘菜,也不会因为顾客说“随便”就真的端上来一碗白米饭。聪明的后厨,一边用守则保证出品下限,一边灵活响应顾客的个性化要求。系统提示词和用户提示词的分工,正是这套逻辑。
系统级职责是提供“稳定底座”:定义AI的角色、行为边界、输出规范,这些在整段对话中保持不变,管的是“这家店是什么店”。用户级职责是表达“灵活需求”:用户每次输入的具体问题、偏好、上下文信息,管的是“这一桌客人想吃什么”。两者协作的边界在于:系统提示词管方法,用户提示词管目标;系统规定“怎么写”,用户规定“写什么”。
当两者冲突时,一般以系统提示词为优先——因为它是产品方精心设计的底线,不应该被用户的偶然输入轻易击穿。但从分工设计上,好的系统提示词会主动为合理的用户请求留出弹性出口。两者的协作关系可以表达为:
守则与点单的默契在于:守则不干涉“辣不辣”这种个性化选择,但会坚持“食材不过夜”这种底线。好的人机分工设计也一样——系统提示词避免过度约束细节,把口味选择权留给用户;但一旦用户的要求触及行为红线,守则会毫不犹豫地站出来说“这道菜,本店做不了”。
- G(协作函数)模型综合守则与点单进行决策的过程,相当于后厨“看单做菜”的调度逻辑。
- S(系统提示词)产品方预置的稳定约束,管“这家店是什么店、底线是什么”。
- U(用户提示词)用户当下的个性化需求,管“这一桌客人此刻要什么”。
- 优先关系当用户请求与系统约束矛盾时,以系统提示词为准,保证产品底线不被突破。
设计模板框架
守则写得多了,老李发现每本守则都有相似的骨架:先是主厨身份,再是纪律红线,然后是菜品标准,最后附几个参考案例。新店开张时,只要把老店的守则拿出来改个名字、换几条特色菜规定,半天就能定稿。系统提示词的设计,同样可以用一套模板来提速。
一个可复用的设计模板包含四个核心要素。角色(Role):定义AI的身份和专长,这是守则的第一行。行为规则(Behavior):列明必须做的和禁止做的,这是纪律红线章节。输出格式(Format):规定答案的结构与风格,这是菜品标准。示例(Example):附上2-3个期望的输入输出范例,这是“参考菜品”——AI看到范例,才知道抽象的规范在实际中长什么样。四要素按固定顺序排列,构成模板的骨架:
模板的意义在于“复用”与“迭代”。老李开第二家店,不会从零开始写守则,而是把老守则改一改;你做一个新AI应用,也不必每次从白纸开始,把上次好用的角色设定、输出格式抄过来,替换规则和示例,就能快速出稿。同时,记得给守则编号——v1、v2、v3,让每一次优化都有清晰的历史记录,出了问题才知道该回退到哪个版本。
- S(系统提示词)最终生成并注入模型的完整系统提示词,即完整版“后厨守则”。
- R(角色设定)第一要素,回答“你是谁”,为AI奠定身份基调。
- B(行为规则)第二要素,回答“你能做什么、不能做什么”,列明行为边界。
- F(输出格式)第三要素,回答“你交出来的东西长什么样”,规定结构与风格。
- E(示例参考)第四要素,用具体范例校准AI的理解,让抽象规则落地。
实践应用落地
守则写好了,不代表一劳永逸。老李发现夏天客人爱点凉菜、冬天爱点炖菜,于是每季度都要修订守则:新增当季特色菜标准,删掉过季的规矩。系统提示词也一样,必须随业务场景变化持续迭代,并在真实使用中验证效果。
场景适配是第一步:不同的业务场景需要不同的守则——客服机器人守则要强调耐心与情绪安抚,内容生成工具要强调原创性与风格统一,代码审查助手则要强调安全与规范。把模板套进场景后,进入迭代优化:准备一批覆盖典型用户问题的测试用例,用A/B测试对比不同版本系统提示词的输出质量,增量修改,避免“一次推翻重写”。最后是效果评估:用一套可打分的标准衡量守则的实际表现,例如输出对格式规范的遵守率、对行为准则的违反次数,把主观感受变成数字:
老李的守则之所以越用越顺手,是因为他每一次修订都基于真实反馈:客人投诉咸了,就加一条“盐分减半”;传菜慢了,就加一条“备菜时间不得超过15分钟”。系统提示词的迭代也是同样的逻辑——让规则跟随数据与反馈进化。记住:好的守则不是写出来的,是改出来的。
- score(综合评分)系统提示词整体效果的量化得分,相当于守则修订时的“绩效评估表”。
- w₁·clarity(清晰度权重)衡量规则是否写得明白,是否能让AI无障碍理解;权重越大,说明你越重视“看得懂”。
- w₂·specificity(具体性权重)衡量规则是否具体可执行,而不是空泛口号;空泛的“好好回答”只能得零分。
- w₃·consistency(一致性权重)衡量多次调用时输出是否稳定,时好时坏的守则再漂亮也价值有限。
AI 应用场景
智能客服机器人的行为守则
阶段:Prompt设计阶段
解决的问题:传统客服机器人要么机械答非所问,要么被用户激怒后说出不当言论。通过系统提示词预置行为准则——“你是一个耐心的客服专员,禁止与用户争执,当用户表达不满时先道歉再解决问题”——让AI在高压对话中保持专业,守住品牌底线。
具体案例:某电商平台的售前机器人,系统提示词规定了“若用户提及物流延迟,先致歉并主动提供补偿方案选项”的规则边界。上线后,机器人应对投诉场景的满意率从62%提升到89%,且从未出现辱骂或推诿责任的回答。
内容工具的风格统一控制
阶段:输出规范设计阶段
解决的问题:同一个写作AI,不同用户使用时输出风格飘忽不定,有人得到营销腔、有人得到学术腔。通过输出规范三要素(格式+风格+质量)的约束,让AI始终保持品牌统一的调性,并对接用户个性化需要。
具体案例:一家科技媒体用系统提示词约束AI写稿助手:“输出格式为'摘要+三个论点+收尾金句';风格要求客观克制、禁止夸张词汇;质量标准为每条论点必须有数据支撑。”编辑初审通过率直接从35%提升到78%。
代码生成助手的模板化落地
阶段:模板设计与迭代阶段
解决的问题:开发团队需要AI助手生成的代码风格一致、安全合规,但每个工程师的提问方式不同,输出质量参差不齐。通过模板四要素(角色+规则+格式+示例)固定产出标准,再配合版本管理跟进迭代。
具体案例:某后端团队用统一系统提示词模板约束代码助手:“你是一位资深Java工程师;禁止使用已废弃的API;必须包含单元测试;输出格式为'思路说明+核心代码+测试用例'。”并附上两个规范代码示例。团队review代码的返工率下降约45%。
Python 演示
class SystemPromptBuilder: """系统提示词模板构建工具——模拟"后厨守则"的四要素组装流程""" def __init__(self): self._role = "" self._rules = [] self._output_format = "" self._examples = [] self._build_count = 0 def set_role(self, role_text: str): """设置角色设定(要素一:R)""" self._role = role_text return self def add_rule(self, rule_text: str): """添加一条行为规则(要素二:B)""" self._rules.append(rule_text) return self def set_output_format(self, format_text: str): """设置输出格式(要素三:F)""" self._output_format = format_text return self def add_example(self, example_text: str): """添加一条示例(要素四:E)""" self._examples.append(example_text) return self def build(self) -> str: """组装完整的系统提示词文本""" self._build_count += 1 lines = ["# 角色"] lines.append(self._role) lines.append("") if self._rules: lines.append("# 行为准则") for i, rule in enumerate(self._rules, 1): lines.append(f"{i}. {rule}") lines.append("") if self._output_format: lines.append("# 输出格式") lines.append(self._output_format) lines.append("") if self._examples: lines.append("# 示例") lines.extend(self._examples) return "\n".join(lines) def main(): prompt = (SystemPromptBuilder() .set_role("你是一位资深技术文档工程师,擅长把复杂概念讲得通俗易懂。") .add_rule("禁止使用未经解释的专业术语") .add_rule("每条回答必须包含一个生活化比喻") .add_rule("如果信息不足,明确指出缺失信息") .set_output_format("输出分三段:先用比喻引入,再展开技术细节,最后总结核心要点。") .add_example("例如:系统提示词就像餐厅的后厨守则...") .build()) print(prompt) print(f"---\n已构建 {len(prompt.splitlines())} 行系统提示词") if __name__ == "__main__": main()
class SystemPromptBuilder:定义一个提示词构建器,相当于“守则模板编辑工具”。self._role = ""用下划线前缀表示私有属性,存储角色设定(要素R)。def set_role(self, role_text: str):链式方法,设置AI角色,返回self以支持连续调用。.add_rule("禁止使用未经解释的专业术语")添加一条行为规则,对应“纪律红线”。.set_output_format(...)设置输出格式,对应“菜品标准”。.add_example(...)添加参考示例,让AI理解抽象的规范。def build(self) -> str:把四个要素拼接成完整提示词文本,就像打印守则定稿。return self链式调用模式,让构建过程像填表一样清晰。
常见误区
误区我要把能想到的规则全部写进去,写得越周全,AI就越听话,所以系统提示词应该尽可能长、尽可能细。
正解过长的系统提示词会稀释关键指令的权重,模型可能抓不住重点,还会消耗更多上下文窗口和成本。就像后厨守则如果写了一千条,大厨反而记不住哪条最重要。好的守则只保留最关键的红线,每条规则一句话讲清“条件+动作”,让核心指令在上下文里保持高可见度。
为何常见:新手容易把“周全”误解为“有效”,以为覆盖更多细节就能减少AI的随机性,却没意识到信息过载同样会干扰模型的理解。
误区只要我告诉AI“你是一位资深编辑”,它自然就知道该怎么做了,不需要再写输出格式和行为规则。
正解角色设定只是守则的第一行,它定基调但不定标准。就像守则写了“主厨擅长川菜”,但没说辣度怎么控制、摆盘怎么弄、食材底线是什么,大厨依然会自由发挥。角色+行为规则+输出格式+示例四要素缺一不可,尤其示例对AI理解抽象规范至关重要。
为何常见:因为角色设定最简单、最像一句话指令,新手很容易产生“定义角色就能解决问题”的错觉,忽视了行为边界和输出规范才是真正控制质量的部分。
误区系统提示词是一份一次性交付的文档,写完测试没问题就可以长期使用,不需要再动。
正解守则要随季节菜单不断修订,系统提示词同样需要持续迭代。真实用户的问题永远不会按你预设的测试用例出牌。要用测试集跑A/B对比,每次只改一个变量,记录版本号,让提示词随业务反馈逐步进化,而不是追求“一步到位”。
为何常见:人天生抗拒反复修改已完成的工作,尤其当第一个版本看起来“工作正常”时,更容易忽略长尾场景中的失灵,直到线上出问题才被迫返工。
误区反正用户会描述自己的需求,我只要在系统提示词里写一句“你是一个助手”就够了,剩下的让用户自己在提问里说清楚。
正解用户提示词每轮都在变化、且不可控,不可能承担稳定约束的职责。就像顾客点单再具体,也不会主动说“请不要用手抓菜”。系统提示词的价值恰恰在于提供用户不会主动提供、但产品方必须保证的底线规则。两者是“守则+点单”的分工关系,谁也不能替代谁。
为何常见:新手容易高估用户描述需求的能力和意愿,也低估了AI面对模糊指令时自由发挥的幅度,导致输出质量完全依赖于用户提问的随机质量。
误区只要系统提示词写得够好,任何问题都能解决,包括超出模型知识边界的事实性问题和需要强大推理能力的复杂任务。
正解系统提示词是“约束表达”的框架,而不是“能力增强器”。它的职责是让模型在已有能力范围内稳定发挥,而不是让模型具备它本不具备的能力。就像守则写得再完美,也不能让不会颠勺的帮厨变成大厨。遇到模型能力天花板,要换更强的模型或引入外部工具,而不是无限堆砌提示词。
为何常见:Prompt工程被广泛宣传后,容易被神化为“一句话拯救一切”的银弹,新手拿它当万能钥匙,忽略了模型本身的硬边界。
面试题
Q1. 系统提示词的核心定位是什么?
- A.在用户对话前预设的系统级指令← 正确答案
- B.用户每次提问时的临时要求
- C.用于训练模型的历史数据文本
- D.只控制输出格式的一种模板
答案:A。系统提示词是在对话开始前注入的系统级指令,定义AI的角色、规则与输出规范。选项B是用户提示词,C是训练数据的特质,D只是输出规范中的一个子集,三者都不是系统提示词的完整定位。就像后厨守则是开工前钉在墙上的,而不是顾客现点的菜。
Q2. 系统提示词与用户提示词产生冲突时,一般应如何处理?
- A.用户提示词因为更具体而优先执行
- B.系统提示词因为预先设定而优先执行← 正确答案
- C.两方内容以随机概率融合后输出
- D.由模型根据对话状态自行决定执行
答案:B。系统提示词是产品方设计的稳定底线,具有优先权。选项A错在用户请求虽具体但不可控,C和D把决策交给随机或模型自主判断,会导致底线被偶然击穿。就像顾客要求“不用盘子直接上菜”,后厨守则依然会坚持菜品必须装盘。
Q3. 在系统提示词中写“你是一位资深技术文档工程师”,属于哪个要素?
- A.角色设定← 正确答案
- B.规则边界
- C.输出格式
- D.质量标准
答案:A。这句话直接定义AI的身份与专长,是模板四要素中的“角色(R)”。规则边界管能做什么不能做什么,输出格式管结构,质量标准管内容下限。就像守则第一行写“本店主厨姓王,擅长川菜”,这定的是身份,不是纪律也不是摆盘。
Q4. 行为准则中“如果信息不足,必须明确说不知道”属于?
- A.角色设定
- B.规则边界← 正确答案
- C.风格控制
- D.模板结构
答案:B。这是一条“条件→动作”的约束条款,规定了行为边界:什么情况下做什么动作。“角色设定”是身份定义,“风格控制”管语气,“模板结构”是四要素的组织方式。就像守则里“食材不够时,必须提前告知客人”属于纪律条款,不属于厨师简介。
Q5. 输出规范的三要素是什么?
- A.格式要求、风格控制、质量标准← 正确答案
- B.角色设定、规则边界、约束条件
- C.系统职责、用户职责、协作边界
- D.场景适配、迭代优化、效果评估
答案:A。输出规范O=(F,T,Q)即格式、风格、质量三个维度。选项B是行为准则的内容,C是人机分工的内容,D是实践落地的内容。就像后厨的“出品标准”包含摆盘(格式)、口味(风格)、新鲜度(质量)三个方面,缺一不可。
Q6. 关于系统提示词设计的模板四要素,下列哪项正确?
- A.角色、行为规则、输出格式、示例← 正确答案
- B.用户提示词、对话历史、模型参数
- C.模型名称、API密钥、服务地址
- D.异常处理、日志记录、熔断机制
答案:A。模板四要素是角色R、行为规则B、输出格式F、示例E。选项B属于用户侧的运行时信息,C是API调用配置,D是后端工程关注点,均不属于提示词内容设计。就像一本守则的骨架是“主厨身份+纪律+菜品标准+参考菜品”。
Q7. 为什么系统提示词不宜写得过长?
- A.过长会稀释关键指令并增加成本← 正确答案
- B.模型无法阅读超过固定长度的文本
- C.越短的提示词模型理解越准确
- D.系统提示词有严格的字数硬限制
答案:A。过长的提示词会让关键规则在上下文中被稀释,且消耗token成本。选项B错误,模型能读长文本只是效果下降;C绝对化,适度细节仍有必要;D不存在普遍硬限制。就像守则写一千条,大厨反而记不住哪条是最重要的红线。
Q8. 冲突处理原则中,系统提示词应如何为用户请求留出弹性?
- A.在规则中明确允许范围内自由变化← 正确答案
- B.让所有用户请求都绕过系统约束
- C.完全忽略用户请求中的个性化需求
- D.把决策权全部移交给用户上下文
答案:A。好的系统提示词会为合理的用户请求预设弹性出口,例如个性化语气或偏好调整,但红线内的自由度让给用户。选项B会导致底线被击穿,C忽略用户体验,D彻底放弃系统约束。就像守则不干涉“辣不辣”,但坚持“食材不过夜”。
Q9. 关于系统提示词与用户提示词的分工,下列哪些说法正确?
- A.系统提示词负责定义稳定规则← 正确答案
- B.用户提示词负责表达具体需求← 正确答案
- C.系统提示词可以完全替代用户提示词
- D.冲突时系统提示词拥有优先权← 正确答案
答案:ABD。系统提示词是稳定底座,管“守则”;用户提示词是灵活输入,管“点单”,两者互补不可替代,故A、B正确、C错误。系统约束是产品底线,冲突时应优先,D正确。就像顾客的点单再具体,也不能替代厨师的纪律红线。
Q10. 迭代优化系统提示词时,最推荐的实践方法是什么?
- A.用测试集对比不同版本的输出质量← 正确答案
- B.每次修改后凭个人直觉判断好坏
- C.只增加新的规则而从不删除旧规则
- D.让最终用户直接编辑系统提示词
答案:A。正确的迭代方式是准备覆盖典型场景的测试集,使用A/B对比量化不同版本的表现差异。选项B主观且不可复现,C会导致提示词无限膨胀稀释重点,D让用户改守则等于放弃产品控制权。就像守则修订要基于客人真实反馈,而不是主厨的心情。