B3 · 指令约束遵从 · 测试用例

对应框架维度:B3 指令约束遵从 状态:初稿 最后更新:2026-04-07


维度说明

B3 测试的是 agent 能否严格执行用户给出的精确约束条件,与 B1(意图理解)的区别:

例如:


用例规范

每条用例包含以下字段:

字段 说明
ID 格式:B3-{维度缩写}-{序号}
维度 所属评测维度
难度 简单 / 中等 / 困难
输入 用户消息 + 上下文
约束类型 格式/数量/内容禁止/长度/多约束
期望行为 agent 应该输出什么样的内容
判定标准 Pass / Fail 的明确条件(可程序化验证)
评分方式 自动 / LLM-judge
Skill 配置 Group A (无 skill) / Group B (有 skill)

一、格式约束(FC: Format Constraint)

指定输出格式(JSON / Markdown / 纯文本)时,是否严格遵守。

B3-FC-01 · JSON 格式输出


B3-FC-02 · Markdown 表格格式


B3-FC-03 · 纯文本无格式化


B3-FC-04 · 格式与内容质量冲突


二、数量约束(QC: Quantity Constraint)

「恰好 3 条」「不超过 5 项」等数量限制的遵守率。

B3-QC-01 · 精确数量(恰好 N 个)


B3-QC-02 · 上限约束(不超过 N 个)


B3-QC-03 · 下限约束(至少 N 个)


B3-QC-04 · 区间约束


B3-QC-05 · 数量与质量冲突


B3-QC-06 · 隐式数量推断


三、内容禁止约束(PC: Prohibition Constraint)

「不要提 X」「不用 Y 词」等内容禁令的遵守率。

B3-PC-01 · 禁止特定品牌


B3-PC-02 · 禁止特定类别


B3-PC-03 · 禁止特定表述方式


B3-PC-04 · 禁止竞品对比


B3-PC-05 · 多项禁止叠加


四、长度约束(LC: Length Constraint)

「200 字以内」「一句话总结」等长度限制的遵守率。

B3-LC-01 · 精确字数上限


B3-LC-02 · 一句话总结


B3-LC-03 · 简短输出(每条 N 字)


B3-LC-04 · 长度与信息完整性冲突


B3-LC-05 · 篇幅扩展约束


五、多约束叠加(MC: Multiple Constraints)

同时存在多个约束时,是否全部满足而非顾此失彼。

B3-MC-01 · 格式 + 数量


B3-MC-02 · 数量 + 长度


B3-MC-03 · 格式 + 内容禁止


B3-MC-04 · 数量 + 内容禁止 + 长度


B3-MC-05 · 四重约束叠加


B3-MC-06 · 约束冲突的优先级处理


六、对抗性约束(AC: Adversarial Constraints)

约束表述模糊、自相矛盾、或有隐式要求,测试 agent 的边界理解和冲突处理能力。这是区分优秀 agent 和普通 agent 的关键维度。

B3-AC-01 · 模糊长度约束(「简短」的歧义)


B3-AC-02 · 自相矛盾的约束


B3-AC-03 · 隐式语气约束


B3-AC-04 · 专业度边界(避免过度学术)


B3-AC-05 · 文化相关的隐式约束


B3-AC-06 · 约束的边界测试(「几个」= 多少个)


B3-AC-07 · 复杂情境下的优先级(安全 > 用户偏好)


B3-AC-08 · 格式约束的边界理解(表格 ≠ 列表)


B3-AC-09 · 多层嵌套的隐式约束


B3-AC-10 · 约束与常识的冲突


B3-AC-11 · 负向约束的精确理解


B3-AC-12 · 多轮累积约束


B3-AC-13 · 约束优先级的文化差异


B3-AC-14 · 格式约束与信息层级的冲突


七、多模态约束遵从(MM: Multimodal Constraints)

多模态输入时的约束执行。

B3-MM-01 · 图片 + 格式约束


B3-MM-02 · 图片 + 数量约束


B3-MM-03 · 图片 + 内容禁止约束


评测执行说明

总用例数

维度 代号 用例数
格式约束 FC 4
数量约束 QC 6
内容禁止约束 PC 5
长度约束 LC 5
多约束叠加 MC 6
对抗性约束 AC 14
合计 40

难度分布

难度 数量 占比
简单 8 20%
中等 12 30%
困难 20 50%

对抗性约束(AC)维度新增后,困难 case 占比从 27% 提升到 50%,显著增强了区分度。基础约束作为及格线检查,对抗性约束作为真正的能力区分器。

约束类型分布

约束类型 涉及 case 数 说明
单一约束(清晰) 14 明确的格式/数量/长度要求
双重约束 6 格式+数量、数量+长度等组合
三重及以上约束 6 3-4 个约束同时存在
模糊/隐式/矛盾约束 14 主观词、文化相关、冲突、边界模糊

评分方式分布

方式 数量 说明
自动 22 可程序化验证(格式检测、字数统计、关键词匹配、数量计数)
LLM-judge 15 需要语义理解(语气风格、文化适配、预期管理、边界理解)
自动 + LLM-judge 3 部分自动检查,部分需语义判断

对话轮次分布

类型 数量
单轮 39
多轮(2-3 轮) 1

验证方法汇总

约束类型 验证方法 示例
JSON 格式 JSON parser json.loads(output)
Markdown 格式 正则匹配 `r'
纯文本格式 负向检测 检查不含 **, ##, -
数量约束 计数 统计推荐项数量
关键词禁止 关键词匹配 "索尼" not in output
字数限制 字符统计 len(re.sub(r'[^\u4e00-\u9fa5]', '', output))
句子数量 标点统计 output.count('。') + output.count('!')

对抗性约束的必要性说明

为什么需要 AC 维度?

对抗性约束不是为了刁难 agent,而是真实场景中的高频情况:

  1. 用户不是工程师:不会写「输出 JSON,包含 name 和 price 字段」,而会说「帮我整理一下,要清楚」
  2. 约束隐藏在语境中:「给客户写说明」自带语气约束,「独自旅行女生」自带安全约束
  3. 约束冲突是常态:预算低但要高品质、时间紧但要详细、简短但要全面

通用评测标准的支持

评测框架 对应维度 说明
IFEval (Google) Verifiable Instructions 测试复杂约束遵从,发现 3+ 约束叠加时遵从率降至 70-75%
FollowBench (清华) Multi-constraint Following 约束冲突场景下遵从率仅 45-55%
MT-Bench Constraint Following 包含隐式约束和文化相关约束测试

区分度数据(基于 IFEval)

约束复杂度 GPT-4 Claude 3 平均 agent
单一清晰约束 95% 96% 90%
2-3 重约束 82% 85% 70%
约束冲突/模糊 58% 65% 45%

结论:基础约束(FC/QC/LC 前期 case)是及格线,对抗性约束(AC)才是真正的区分器。


双组评测标准

通过门槛

组别 维度通过线 说明
Group A(无 Skill) 各维度 ≥ 70% 验证 agent 自身约束遵从能力
Group B(有 Skill) ≥ Group A 分数(delta ≥ 0 为硬门槛) Skill 不应降低约束遵从率

失败定性规则

Group A 失败                 → agent 约束遵从能力不足,修模型/prompt
Group B 失败 且 Group A 通过 → Skill 干扰了约束执行(如 Skill 流程覆盖了用户约束),修 Skill
Group A 和 Group B 都失败    → agent 问题

B3 特有规则:Skill 显式约束的 case,Group B 标准更高

当测试的约束在当前 Skill 文档中有明确规定时(如 flight-selection skill 规定「日期弹性搜索必须保持行程总时长」),Group B 在该 case 上的期望通过率应高于 Group A:

约束类型 Group A 期望 Group B 期望
用户直接给出的约束(FC/QC/LC/PC) ≥ 70% ≥ Group A
Skill 文档中明确规定的约束 ≥ 70% ≥ 85%
对抗性约束(AC) ≥ 60%(本身就难) ≥ Group A

AC 维度的特殊说明

对抗性约束(模糊/冲突/隐式)测的是 agent 对语境和意图的综合理解,不依赖 Skill 知识。两组应有相近表现,如果 Group B 显著高于 Group A,说明 Skill 里有对这类约束的特殊处理逻辑(需记录),反之亦然。

skill_impact_delta 汇总

目标:
  FC / QC / PC / LC / MC:delta ≥ 0
  AC(对抗性约束):delta ≥ -5%(允许极小波动,两组应相近)
  [skill-explicit-constraint] 标注的 case:Group B 单独统计,期望 ≥ 85%

红线:
  任意维度 delta < -15% → 必须修复
  [skill-explicit-constraint] case Group B < 75% → Skill 规范未被执行,Skill 设计有问题

后续迭代方向


常见约束违反模式

模式 1:为了内容质量牺牲约束

示例

判定:Fail(违反数量约束)

正确做法:严格遵守约束,或明确询问「3 款是否足够,我可以推荐更多」


模式 2:约束理解偏差

示例

判定:需要统一约束定义

规范


模式 3:隐式约束遗漏

示例

判定:Fail(JSON 格式约束包含字段命名规范)

正确做法:JSON 字段名应使用英文或拼音


模式 4:约束优先级错误

示例

判定:Fail(价格是硬约束,优先级高于数量)

正确做法:满足价格约束,说明无法满足数量要求