什么是 系统提示词(System Prompt)?
系统提示词(System Prompt)是由模型供应商定义权限语义、用于规定持久行为、任务范围、工具策略、响应规则和低优先级输入处理方式的高权限指令层。
工作原理
指令权限由供应商定义
不同供应商、模型家族和编排框架使用的消息角色与优先级并不相同。有些 API 区分 system、developer、user、assistant 和 tool,有些通过独立参数传入系统指令,也有框架会在内部合并多层内容。应用必须遵循当前供应商契约并保留角色元数据,不能把所有消息压成一个字符串。系统提示词通常高于用户指令,但仍不能覆盖供应商自身的安全策略。
适合写入系统层的内容
系统层适合放长期稳定的产品规则,包括支持范围、事实锚定策略、工具选择条件、拒答或升级方式、不确定性处理和输出要求。单次请求事实应放在用户或数据字段中,避免每次重写系统层。冲突处理要明确,规则不能重复、模糊或彼此矛盾;同时保持足够简洁,以控制 token 成本并让每项要求都可独立测试。
必须由代码强制的控制
不要把秘密写入系统提示词,也不要假设用户永远无法恢复其内容。模型可能泄露、转述或依据敏感文本行动,提示注入也可能重定向行为。身份认证、授权、工具白名单、参数校验、数据访问、限流、审计日志和高风险操作审批都必须由确定性代码实现。模型选择的工具和参数只能视为提议,必须再次通过策略检查。
版本管理与回归覆盖
系统提示词应与工具定义、输出 schema、模型标识和应用策略共同版本化。发布测试集需要覆盖允许请求、超范围请求、证据缺失、用户指令冲突、直接和间接注入、工具提权以及拒答展示。输出不稳定时应进行重复试验并与基线比较;上线后还需监控真实结果,因为离线通过无法发现所有分布变化。
主要特点
- 使用供应商定义、通常高于用户消息的指令权限
- 表达持久产品行为,而不是单次请求的用户数据
- 可规定范围、事实锚定、拒答、升级、工具和输出策略
- 消耗输入 token,并可能影响延迟、缓存和可用上下文
- 必须与周边应用契约共同版本化和回归测试
- 不能保存秘密,也不能替代确定性的访问与操作控制
常见用途
- 定义客服助手的业务范围、来源策略和升级行为
- 说明 Agent 可以在什么条件下提议工具调用及所需证据
- 要求回答基于来源、披露不确定性并返回来源标识
- 统一产品工作流中的拒答与澄清方式
- 在应用代码强制权限的同时维持稳定响应契约
示例
Loading code...常见问题
系统提示词总是拥有最高权限吗?
不是。并不存在统一的跨平台角色层级,供应商会定义可用指令层和冲突处理方式;供应商或根级策略还可能高于应用提交的 system 或 developer 消息。构建请求时应查阅当前 API 契约并保留角色元数据。
系统提示词能安全隐藏秘密或业务规则吗?
不能。所有模型可见文本都应视为可能被恢复、转述或推断。凭证、私有策略数据和特权逻辑应留在提示词之外;应用只暴露完成任务所需的信息,并在每次模型调用和工具调用前后强制执行访问决策。
系统提示词能阻止提示注入吗?
它可以声明边界并改善正常情况下的指令遵循,但无法消除直接或间接注入。应隔离不可信内容,以最小权限限制工具和数据,在代码中校验模型提议,监控真实结果,并要求高影响操作由人工审批。
系统提示词应该写多长?
在每条长期规则都明确且可测试的前提下越精简越好。多余文字会消耗输入 token、可能增加预填充延迟、挤占用户上下文,并产生更多冲突机会。应通过删减前后的行为评估决定长度,而不是只追求字数。
系统提示词发布前应该怎样测试?
用同一批任务比较基线和候选版本,覆盖允许任务、超范围请求、缺失证据、冲突指令、注入攻击、工具提权和格式要求。权限与 schema 使用确定性检查,开放质量使用校准后的评分准则,波动场景重复试验,高影响结果再由人工复核。