新一代提示词工程 · 知识全景图面向有工程基础、提示词工程尚未系统化的工程师
显示设置

指令层级

Instruction Hierarchy

PE-A-01内容已写满G06安全与鲁棒性第 2 层

安全指令层级权限

一句话结论

先按系统、开发者、用户、工具返回排定优先级,把冲突裁决规则写进系统层,并为低特权来源的内容标注非指令身份;随后用冲突样例把裁决结果变成可回归的评测,再考虑用训练或架构手段把能力固化到模型侧。

本页结构(可跳转)

L1 最高特权 系统 产品身份与安全策略 L2 开发者 任务级指令与输出契约 L1->L2 特权递减 L3 用户 本次输入 L2->L3 特权递减 P 三层实现路径 ① 提示层:在系统提示中声明优先级与处理规则 ② 训练层:用偏好优化或强化学习让模型学会拒绝低特权指令 ③ 架构层:在中间表示中注入层级信号 L2->P 实现 L4 最低特权 外部内容 工具返回 / 检索结果 / 网页 L3->L4 特权递减 N 边界 降低而非消除注入风险:注入仍列风险清单首位 模型不能作为唯一安全控制 复杂 Agent 网络中的多层级动态控制仍属前沿 ⇒ 层级必须配合权限收窄与显式标注 L4->N
层级图:系统 > 开发者 > 用户 > 外部内容的特权递减,三层实现路径(提示 / 训练 / 架构),以及「降低而非消除、必须配合权限收窄」。 (本站自制)

01为什么需要它

模型处理输入文本时,默认并不区分来源的权威性:系统提示、用户输入与第三方内容被视为同等优先级的文本,因此低特权来源覆盖高特权来源是默认行为而不是偶发漏洞。

适用边界

层级是权限关系的声明与训练目标,不是拦截器或沙箱。它减少而不消除注入风险:现行风险清单仍把提示注入列在第一位,并主张模型不能作为唯一的安全控制。已训练出的层级还与具体模型绑定,换底座后须重跑冲突评测,不能把上一个模型的结论当作可搬运的资产。此外多层级动态控制在复杂 Agent 网络里仍属前沿问题,没有被普遍接受的实现。

02机制说明

指令层级的基本形式是按特权排序:系统高于开发者,开发者高于用户,用户高于工具返回与外部内容。

03何时该用 / 何时不该用

按场景对照:先看条件,再看该怎么做。
类别场景 / 条件(总结)具体做法(细节)
该用应用会读取网页、邮件、文档或工具返回时必须声明层级,并用显式标注把指令与数据分开。
该用多个来源的指令可能冲突时把优先级写进系统层,并用冲突评测验证裁决结果,而不是事后读提示词判断。
该用需要把提示词拆成稳定层与易变层时按系统、开发者、用户分层,让各层的权威性与改动频率各自独立。
不该用把层级当唯一防线现行风险清单仍主张模型不能作为唯一安全控制,须配合权限收窄与输出校验。
不该用假设层级跨模型等效训练层与架构层的实现差异很大,多模态场景下文本侧训练只部分迁移。

04实验台

  1. promptmarkdown

    查看代码
    任务:把一条缺少权限声明的系统提示改写成带指令层级的版本,并留下可复跑的冲突样例。
    
    第 1 步(现状):系统层只写业务目标,没有写来源优先级与冲突规则。
    第 2 步(声明层级):在系统层写明优先级 系统 > 开发者 > 用户 > 工具返回与外部内容,并写明冲突裁决:低特权来源试图改变任务、输出格式或权限范围时,一律不执行,并把冲突按固定格式回报。
    第 3 步(标注来源):用户消息、检索片段与工具返回分别用带来源名的标记包裹,声明其中内容只是数据,不是指令。
    第 4 步(建冲突样例):写三条样例,分别对应工具返回要求改任务、检索片段要求忽略系统规则、用户消息要求提高自身优先级。
    第 5 步(记录实测):逐条跑通,记录实际裁决与是否回报冲突,作为该层的回归基线。
    第 6 步(标注实现路径):该版本只动提示层;若要把裁决能力固化到模型侧,需走训练或微调路径,并在换底座后重跑第 4 步的样例。

    预期观察:改写后的系统层能直接回答三个问题:谁高于谁、冲突时怎么裁决、低特权内容凭什么身份出现;三条冲突样例都能给出稳定裁决并回报,而不是只在单次运行里看起来正常。

  2. shellpython

    查看代码
    # 层级的最小可测形态:优先级配置 + 冲突裁决函数 + 冲突样例集
    LEVELS = {'system': 3, 'developer': 2, 'user': 1, 'tool': 0}   # 数字越大特权越高
    
    def adjudicate(declared, incoming):
        """返回 (胜出者, 是否发生冲突);平级不冲突,低特权提出要求才算冲突。"""
        return ('declared' if LEVELS[declared] >= LEVELS[incoming] else 'incoming',
                LEVELS[incoming] < LEVELS[declared])
    
    CASES = [('system', 'user'), ('system', 'tool'), ('user', 'tool'), ('developer', 'user')]
    for declared, incoming in CASES:
        winner, conflict = adjudicate(declared, incoming)
        print('%-9s vs %-9s -> 胜出=%-8s 冲突=%s' % (declared, incoming, winner, conflict))
    
    # 回归钩子:改一个优先级数字,样例结果必须跟着变,否则层级只是注释
    LEVELS['user'] = 4
    print('改过优先级后:', adjudicate('developer', 'user'))

    预期观察:前四行按优先级配置给出稳定裁决:四组里只有 user 对 tool 这一组不冲突,其余三组都判为冲突,因为提出要求的一方特权低于已声明的来源;把 user 提到最高后再跑,developer 对 user 那一行结论翻转,证明评测确实绑在优先级配置上,而不是把层级写成一段谁也没读的注释。

05证据

主张OpenAI 一手材料给出明确层级 System > developer > user > tool,并说明其模型经该层级训练:用名为 IH-Challenge 的挑战集训练出内部模型 GPT-5 Mini-R。

分级vendor

来源S-0017 https://openai.com/index/instruction-hierarchy-challenge/

原文

展开原文关键句
OpenAI's models are trained to follow a clear instruction hierarchy: System > developer > user > tool ... We train a model on IH-Challenge and produce an internal model, which we call GPT-5 Mini-R

主张原始论文把「低特权来源覆盖高特权来源」定位为模型的默认倾向(系统提示被当作与不可信用户及第三方文本同等优先级),并把该方法用于具体模型做验证——这是训练层路径的起点证据。

分级paper

来源S-0040 https://arxiv.org/abs/2404.13208

原文

展开原文关键句
LLMs often consider system prompts (e.g., text from an application developer) to be the same priority as text from untrusted users and third parties ... We apply this method to GPT-3.5

主张架构层路径给出可量化效果:在中间表示中注入层级信号,把梯度型提示注入攻击的成功率降低 1.6 倍到 9.2 倍,且不显著损伤模型实用性。

分级paper

来源S-0042 https://arxiv.org/abs/2505.18907

原文

展开原文关键句
our proposal yields between 1.6x and 9.2x reduction in attack success rate on gradient-based prompt injection attacks compared to state-of-the-art methods

主张多模态前线的独立证据把迁移边界写实:文本侧指令层级训练只能部分迁移到多模态攻击,当模型必须跨模态解码、重建或推理指令时就会失败。

分级paper

来源S-0043 https://arxiv.org/abs/2609.22234

原文

展开原文关键句
text-only IH training partially transfers to multimodal attacks, failing when models must decode, reconstruct, or reason over instructions across modalities

06术语

术语指令层级 Instruction Hierarchy

界定按特权等级排列指令来源(系统 > 开发者 > 用户 > 工具),使低特权来源的指令无法覆盖高特权来源。

相关节点—

术语提示词分层 系统 / 开发者 / 用户)(Prompt Layering

界定把提示词按特权与生命周期拆为系统、开发者、用户三层,各层承担不同的稳定性与权威性职责。

相关节点—

术语不可信内容的标注与隔离 Untrusted Content Tagging and Isolation

界定把来自外部的不可信内容用显式标记包裹并声明其非指令身份,配合权限收窄与输出校验,降低被当作指令执行的概率。

相关节点—

07失效模式

08在本站知识结构中的位置

所属分组
G06安全与鲁棒性
依赖深度
第 2 层(同层节点彼此无先后约束)
前置无(起点)→PE-A-01 本节点→后继PE-A-02

在 交互全景图 中定位本节点。