PromptQuorumPromptQuorum
主页/提示词工程/系统提示与用户提示:有什么区别
Fundamentals

系统提示与用户提示:有什么区别

·8 min read·Hans Kuepper 作者 · PromptQuorum创始人,多模型AI调度工具 · PromptQuorum

系统提示定义AI模型在整个会话中的思维和行为方式;用户提示定义它现在做什么。了解区别、何时使用各自、它们如何相互作用,以及为什么PromptQuorum同时显示两者。

系统提示与用户提示:核心区别

系统提示定义AI在整个会话中的思维方式;用户提示定义它在特定请求中做什么。 简言之:系统提示是AI的永久工作描述,用户提示是该工作中的单个任务。

每个LLM会话都同时拥有两者。系统提示(通常对最终用户隐藏)在开始时运行一次,设置模型的个性、约束和角色。用户提示按请求运行,指定任务或问题。两者都是文本,两者都遵循提示工程原则,两者都需要精心设计以实现可靠的输出。

关键要点

  • 系统提示为整个会话定义模型的角色、约束和行为 — 设定一次,用于所有请求
  • 用户提示为每次交互定义特定任务 — 由用户提供,每个请求都会改变
  • 根据PromptQuorum在GPT-4o、Claude 4.6 Sonnet和Gemini 1.5 Pro上的测试,系统提示占行为一致性的约70%;用户提示塑造特定输出
  • ChatGPT和Claude等应用中隐藏的系统提示包含隐藏逻辑 — PromptQuorum向您显示所有内容
  • 具有隐藏系统提示的本地LLM(Ollama、LM Studio)会导致调试问题 — 通过透明性解决
  • 不好的系统提示迫使用户提示工作更努力;好的系统提示使每个用户提示工作得更好

系统提示和用户提示在API堆栈中的位置?

系统提示位于应用层;用户提示位于交互层。 当您通过OpenAI API调用GPT-4o时,端点接受两个独立输入:`system`(持久指令)和`messages`(每个请求的用户输入)。这同样适用于通过Anthropic API的Claude 4.6 Sonnet、通过Google API的Gemini 1.5 Pro,以及通过Ollama或LM Studio运行的任何本地LLM。

所有模型都支持系统+用户提示模式:

  • 模型层: 基础LLM(GPT-4o、Claude 4.6 Sonnet、Gemini 1.5 Pro、LLaMA 3.1、Mistral Large)— 都接受系统和用户提示
  • API层: 开发者使用的接口 — OpenAI API、Anthropic API、Google API、Ollama REST端点、LM Studio — 都将系统和用户公开为独立字段
  • 应用层: 构建在API之上的产品(ChatGPT、Claude.ai、Gemini、PromptQuorum、您的自定义应用)— 开发者决定使用哪个系统提示
  • 用户交互层: 最终用户看到的内容 — 聊天输入、任务规范 — 这成为用户提示

什么是系统提示?

系统提示是一组持久指令,定义语言模型在整个会话期间的行为。 它在开始时在任何用户输入之前发送给模型一次。系统提示指定模型的角色、通信风格、约束和默认行为。所有后续用户提示都在该系统提示的背景下处理。

精心设计的系统提示通常包括:

  • 角色定义: "您是Python专家"、"您是技术作者"、"您是财务顾问" — 建立模型的角色和专业知识
  • 约束: "不提供医学建议"、"不引用2024年后的内容"、"拒绝有害代码的请求" — 对行为设置硬性限制
  • 输出格式: "以JSON响应"、"使用Markdown"、"提供编号步骤" — 定义答案应如何构建
  • 通信风格: "简洁直接"、"使用初学者类比"、"采用专业语气" — 塑造声音和语气
  • **范围边界:" "仅回答Python问题"、"忽略政治问题"、"仅处理技术支持" — 定义模型会和不会做什么
  • 交互规则: "提出澄清问题"、"始终引用来源"、"明确承认不确定性" — 管理模型如何处理边界情况

系统提示示例

您是SaaS产品的客户支持专家。您的角色是帮助客户解决技术问题、回答功能问题和处理账单询问。约束:(1)不要承诺退款 — 仅支持人员可以授权退款。(2)不要共享内部文档。(3)不要推测未来功能。(4)如果问题在3次交互后仍未解决,始终提供升级给人工代理的选项。风格:同情、清晰、以解决方案为中心。格式:使用编号步骤作为程序;箭头列表表示选项;markdown代码块表示技术示例。范围:回答API、设置、故障排除、功能和账单问题。拒绝法律建议、免费升级或产品范围外的支持。

这是用于客户支持聊天机器人的生产级系统提示:

什么是用户提示?

用户提示是按请求输入 — 最终用户为单个交互提供的特定任务、问题或指令。 它在系统提示之后发送给模型,并在系统提示的约束和角色定义的背景下进行评估。单个会话可以有许多用户提示;系统提示保持不变。

用户提示通常包括:

  • 具体的任务或问题: "总结这篇文章"、"撰写产品副本"、"调试此错误" — 该交互的具体请求
  • 该请求的背景: "对于B2B受众"、"对于初学者"、"对于文档" — 澄清这是为了谁和什么
  • 此任务的其他指令: "在200字内"、"附带示例"、"专业语气" — 为此特定要求细化输出
  • 示例(如需): "这是一个很好的例子:" — 教模型您想要的风格
  • 此任务的约束: "不提及定价"、"避免行话"、"用中文" — 限制仅适用于此请求的内容

用户提示示例

我一直在尝试通过SAML 2.0设置单点登录(SSO),但我们的Okta集成一直返回"签名验证失败"错误。我按照设置指南,上传了元数据文件,但仍然不工作。您能否逐步指导我完成故障排除步骤?

这是发送给上面定义的客户支持聊天机器人的完整用户提示:

系统提示与用户提示:一目了然

维度系统提示用户提示
范围整个会话单个请求
设定者开发者/产品团队最终用户
频率开始时一次每个请求
定义角色、约束、风格、行为此请求的任务、上下文、格式
可见性通常对用户隐藏始终对用户可见
更改很少(需要应用更新)每次交互
提示工程%一致输出质量的约70%一致输出质量的约30%
覆盖风险难以覆盖 — 持久、开发者控制易于调整 — 用户按请求控制
最适合角色一致性、安全防护栏、输出格式特定任务的细节、上下文、少样本示例

什么使系统提示有效?

系统提示必须具体、分层和约束导向,以在所有用户交互中产生一致的行为。 最好的系统提示是详细的 — 它们不仅指定模型应该做什么,还指定它应该拒绝什么、它应该如何格式化答案以及哪些约束普遍适用。

有效系统提示的五项原则:

  • 1. 显式角色定义: 不要假设模型知道它的工作。在开始时说"您是角色"。比较:"帮助写作"(模糊)与"您是专门为LinkedIn活动撰写B2B SaaS产品描述的技术文案撰写者"(具体)。
  • 2. 约束优先设计: 在列出它应该做什么之前,列出模型必须NOT做什么。"不编造统计数据"、"不使用夸张"、"不建议未列出的功能" — 明确的拒绝产生一致的边界。
  • 3. 格式规范: 每个系统提示都应定义输出格式:JSON、Markdown、项目符号列表、编号步骤或纯文本。没有格式规范的系统提示会迫使每个用户提示重复指定它。
  • 4. 范围边界: 定义您将处理的请求范围。"仅回答API问题"、"提供Python建议"、"支持故障排除" — 明确的范围防止域外答案。
  • 5. 跨模型测试:多个模型 — GPT-4o、Claude 4.6 Sonnet、Gemini 1.5 Pro上测试系统提示。某些模型对约束更严格;其他模型以不同方式解释风格。稳健的系统提示在所有三个模型上始终工作。

为什么系统提示被隐藏 — 你如何查看它们?

PromptQuorum有一个关键功能:一个切换开关,向您显示所有系统提示,包括本地LLM后端中隐藏的提示。 当使用Ollama或LM Studio时,这特别重要,因为隐藏的系统逻辑在历史上曾导致意外的行为和调试噩梦。

当您将LM Studio或Ollama连接到应用程序时,本地模型中的隐藏系统指令会导致:

  • 信任问题: 您不知道模型在下面遵循什么指令。您对其响应的"为什么"没有可见性。
  • 调试问题: 您的本地LLM返回意外输出。您重写用户提示。仍然是错的。没有看到系统提示,您无法诊断问题。
  • 模型间的不一致: 您在GPT-4o和Ollama上运行相同的提示。不同的答案。没有看到两个系统提示,您无法判断差异是模型能力还是隐藏指令。
  • 监管和审计风险: 企业部署需要透明度。如果法规要求"什么指令推动这个AI决定?"而系统提示被隐藏,您无法合规。

PromptQuorum系统提示切换

PromptQuorum包含可切换的界面:"显示系统提示"。启用后,您会看到在每个模型上运行的实际系统提示 — GPT-4o、Claude 4.6 Sonnet、Gemini、Ollama、LM Studio、所有这些。这在将一个提示同时分派到多个本地后端时特别有价值。

当系统提示被隐藏时会发生什么?一个真实的例子

PromptQuorum本身是用Claude Code构建的 — 开发者遇到了一个严重的问题。Claude Code配备了大量隐藏的系统指令,指导代码生成、安全行为和质量检查。当Claude Code生成功能时,这些隐藏的指令被烘烤进去了。但当相同的代码需要在没有隐藏系统逻辑的本地LLM(Ollama、LM Studio)上运行时,一切都破裂了。隐藏的"特殊酱汁"不可移植。

解决方案:使所有系统提示可见。开发者需要看到模型遵循什么指令 — 不要猜测或盲目调试。

实用食谱:三个生产系统提示

这是三个系统提示,您可以调整以供自己使用:

食谱1:客户支持机器人

您是SaaS产品的1级支持专家。您的角色:帮助客户进行故障排除、回答账户和计费问题、向高级支持升级复杂问题。约束:(1)不要承诺退款 — 仅高级支持可以批准退款。(2)不要共享内部文档。(3)承认您不知道的地方。输出格式:程序使用编号步骤、选项使用项目符号列表、示例使用markdown代码块。语调:专业、同情、以解决方案为中心。在3次失败的解决方案尝试后升级。范围:账户访问、计费、功能、设置、集成、故障排除。拒绝:法律、税务或会计建议。

食谱2:数据分析师

您是高级数据分析师。您的角色:分析数据集、识别趋势、提供建议。约束:(1)始终引用数据源。(2)没有证据不要假设因果关系。(3)量化不确定性 — 如果信心低,请说出来。(4)不要超越数据进行推断。输出格式:执行摘要(3个关键发现)+带表格的详细分析+建议。包括信心水平。语调:清晰、精确、数据驱动。范围:仅分析提供的数据。拒绝:编造数据、用推测覆盖不确定性。

食谱3:代码审查者

您是代码审查专家。您的角色:评估代码的正确性、性能、可维护性和安全性。约束:(1)指出优点和缺点。(2)建议具体改进,而不是通用建议。(3)尊重作者的选择 — 解释"为什么",而不是要求。(4)不要建议过度优化。(5)将安全问题标记为严重。输出格式:摘要+带代码片段的逐行反馈。使用markdown代码块。语调:尊重、建设性。范围:代码审查仅。拒绝:范围外的重构或架构变更。

相关阅读

常见问题

什么是系统提示?

系统提示是一组持久指令,定义语言模型在整个会话期间的行为。它在开始时设置一次,适用于所有用户交互。系统提示指定模型的角色、约束、输出格式和通信风格。

什么是用户提示?

用户提示是按请求输入 — 为单个交互提供的特定任务、问题或指令。它由最终用户创建,并随每个请求更改。用户提示在系统提示的规则和角色定义的背景下进行评估。

系统提示与用户提示由谁编写?

开发者和产品团队编写系统提示并在产品中提供。最终用户在与产品交互时编写用户提示。在PromptQuorum等工具中,用户可以看到和编辑两者。

作为最终用户,为什么我应该看到系统提示?

当使用LM Studio或Ollama等本地LLM时,隐藏的系统提示会导致意外行为和调试问题。看到系统提示可以实现信任,让您了解模型的约束,并帮助您编写更好的用户提示。

所有LLM都使用系统提示吗?

是的。所有主要LLM — GPT-4o、Claude 4.6 Sonnet、Gemini 1.5 Pro、Ollama模型、LM Studio — 都支持系统+用户提示模式。有些带有默认系统提示;其他允许您定义自己的。

用户提示可以覆盖系统提示吗?

不直接。系统提示具有结构优先级 — 模型首先处理它们并将其视为持久约束。用户提示不能明确禁用或覆盖系统提示。但是,具有模糊约束的设计不佳的系统提示可能会被忽略(如果用户提示强烈与之矛盾)。设计良好的系统提示包括显式拒绝规则,以抵抗用户覆盖。

如果没有系统提示会发生什么?

模型回退到其默认的训练行为。GPT-4o、Claude 4.6 Sonnet和Gemini 1.5 Pro都在没有系统提示时有内置的基线行为(有帮助、无害、诚实)。模型仍将响应用户提示,但没有角色定义、输出格式约束或范围边界 — 结果会不那么一致,不那么专业。

来源和进一步阅读

使用PromptQuorum将这些技术同时应用于25+个AI模型。

免费试用PromptQuorum →

← 返回提示词工程

系统提示与用户提示:有什么区别 | PromptQuorum