把“模型不听话”拆成可调的控制层:输入、上下文、策略、工具、解码、校验、人工和发布
| 控制层 | 能控制什么 | 不能控制什么 | 关键证据 |
|---|---|---|---|
| Intent / Task Router | 识别任务类型、风险等级、是否需要检索、工具或人工 | 不能保证模型最终一定按意图执行 | task_type、risk_tier、routing_reason |
| Prompt / Context | 给模型角色、目标、上下文、格式、引用和边界 | 不能替代权限、事实库、工具校验和法律责任 | prompt_version、context_sources、message_hash |
| Policy Layer | 定义组织规则、拒答边界、例外条件、角色权限 | 不能只靠自然语言规则执行高风险授权 | policy_version、allow / deny reason、exception_id |
| Tool Runtime | 限制可用工具、参数、读写范围、确认门和执行身份 | 不能让模型自己决定是否绕过服务端校验 | tool_name、args、permission_decision、approval_id |
| Decoder / Output Mode | 影响随机性、长度、格式、JSON / schema 和多样性 | 不能让模型知道不知道的事实,也不能保证安全合规 | temperature、top_p、schema_version、parser_result |
| Guardrails / Validators | 检查注入、敏感信息、格式、引用、策略、工具结果一致性 | 不能覆盖所有语义风险,也可能误伤正常请求 | guardrail_policy_version、risk_label、block_reason |
| Human Review / Audit | 为高风险、低置信和例外场景提供责任确认和复盘 | 不能靠人工无限兜底所有设计缺陷 | review_status、approver、evidence_pack_id |
| 请求阶段 | 实时判定 | 可能动作 | Trace 字段 |
|---|---|---|---|
| 入口识别 | 用户是谁、要做什么、影响哪个业务对象、是否进入敏感场景 | 继续、追问、切到受限模式、转人工 | user_role、tenant_id、task_type、business_object_id、risk_tier |
| 上下文装配 | 哪些知识、会话、文件和工具结果可以进入模型上下文 | 过滤、脱敏、截断、隔离不可信片段 | context_sources、acl_snapshot、redaction_rule、untrusted_context_ids |
| 模型生成前 | 用哪个模型、哪套 Prompt / Policy / Decoder 配置,是否允许工具计划 | 路由、降级、固定配置、禁止高风险工具 | model_id、router_policy、prompt_version、policy_version、decoder_profile |
| 工具执行前 | 工具是否在白名单内,参数是否越权,副作用是否需要确认 | 拒绝、dry-run、用户确认、审批、幂等执行 | tool_name、tool_risk、args_hash、permission_decision、approval_id、idempotency_key |
| 输出交付前 | 答案是否有依据、是否泄露敏感信息、是否违反策略或格式 | 放行、改写、补引用、拒答、升级复核 | citation_ids、grounding_score、guardrail_policy_version、block_reason、review_status |
| 交付之后 | 用户反馈、评测样本、事故线索是否需要进入持续改进 | 记录样本、回放、加入 Eval、触发 Runbook | feedback_label、eval_sample_id、incident_id、evidence_pack_id |
控制矩阵不是上线前填一次的表,而是每次请求都会经过的判定链。只有把 task_type、risk_tier、policy_version、tool_permission、guardrail_decision 和 review_status 写入同一条 Trace,才能解释“这次为什么放行、拒绝、降级或转人工”。
| 目标 | 优先控制层 | 典型旋钮 | 观测指标 | 常见误用 |
|---|---|---|---|---|
| 减少幻觉 | Context / Decoder / Eval | 引用要求、检索重排、低温度、事实校验、答案必须带出处 | 忠实度、引用命中、无依据声明率 | 只把 Prompt 写成“不要幻觉” |
| 降低越权风险 | Policy / Tools / Guardrails | 服务端 ACL、工具白名单、参数校验、确认门、敏感字段脱敏 | 越权尝试、拒绝原因、人工确认率 | 用系统 Prompt 代替权限系统 |
| 提高格式稳定性 | Decoder / Parser / Retry | JSON schema、结构化输出、温度降低、解析失败重试、字段枚举 | parse_fail_rate、schema_violation_rate | 让模型自由输出后再人工猜格式 |
| 控制工具副作用 | Tools / Workflow / Audit | dry-run、幂等键、读写分离、审批、补偿、执行状态机 | tool_error_rate、rollback_count、side_effect_incident | 工具调用成功就直接提交写入 |
| 减少安全误伤 | Policy / Guardrails / Review | 场景分级、灰区追问、误拒样本、申诉 / 复核、策略豁免 | false_reject、appeal_success、user_dropoff | 越拦越安全,不看正常任务损失 |
| 控制成本和延迟 | Router / Context / Decoder | 模型分层、上下文预算、max_tokens、缓存、早停、低风险小模型 | cost_per_task、p95_latency、token_per_success | 只换便宜模型,不看质量回归 |
| 提升可追责性 | Trace / Audit / Release | 版本快照、policy_id、tool_args、approval_id、release_gate_id | 可复现率、证据包完整率、归因耗时 | 事故后临时拼日志 |
Prompt 能显著改变行为,但它不是强制执行层。凡是涉及权限、付款、写库、发信、隐私和合规责任,都要有服务端控制和审计证据。
| Policy 类型 | 解决什么 | 工程落点 | 证据字段 |
|---|---|---|---|
| 内容策略 | 哪些主题必须拒答、追问、解释边界或安全改写 | 输入 / 输出分类器、规则表、红队回归集 | policy_version、risk_label、decision |
| 数据策略 | 哪些数据源可进入上下文,哪些字段必须脱敏 | RAG ACL、字段脱敏、租户隔离、日志保留 | data_scope、acl_snapshot、redaction_rule |
| 工具策略 | 哪些用户在什么条件下能调用哪些工具 | 工具注册表、权限引擎、确认门、审批流 | tool_policy、permission_decision、approval_id |
| 发布策略 | 哪些改动需要哪些 Eval、Canary、审批和回滚条件 | Release Gate、风险例外、灰度平台 | release_gate_id、risk_exception、approver |
| 人工策略 | 什么情况必须转人工,谁对最终动作负责 | HITL 队列、SLA、双人复核、职责矩阵 | review_status、owner、handoff_reason |
模型、Prompt、工具和业务边界都会变化。没有 policy_version,就无法解释某次请求为什么当时被允许、拒绝或升级。
| 工具控制点 | 低风险做法 | 高风险做法 | 失败时怎么办 |
|---|---|---|---|
| 工具注册 | 描述用途、输入 schema、输出 schema | 标注风险等级、权限范围、是否可自治 | 未注册工具不可调用 |
| 参数校验 | 类型、必填、枚举、范围检查 | 业务对象权限、敏感字段、危险命令、外发对象检查 | 修复参数、追问或拒绝 |
| 执行身份 | 使用用户身份或受限服务身份 | 按租户、角色、环境和工具范围做最小授权 | 权限拒绝写入 Trace |
| 确认门 | 用户确认低副作用动作 | 人工审批、双人复核、dry-run 和差异预览 | 未确认不执行 |
| 副作用控制 | 幂等键、状态检查、可撤销 | 补偿动作、回滚脚本、外部通知、冻结开关 | 进入事故或人工接管 |
| 旋钮 | 影响什么 | 适合用来做什么 | 不能解决什么 |
|---|---|---|---|
| temperature / top_p | 输出随机性、多样性和稳定性 | 低温度做稳定问答,高温度做创意候选 | 不能保证事实正确或策略合规 |
| max_tokens | 最长输出和成本延迟 | 控制回答长度、避免无限生成 | 不能保证短答案就是正确答案 |
| stop sequences | 生成停止位置 | 模板化输出、分段生成、工具参数截断 | 不能防止语义越权 |
| structured output | JSON、schema、枚举和字段约束 | 工具调用、工作流状态、评测标签 | 不能保证字段内容真实 |
| logprobs / confidence proxy | 候选 token 概率线索 | 检测不确定、触发追问或人工复核 | 不能直接等同于业务风险 |
把温度调低能让输出更稳定,但不会让模型获得缺失证据。结构化输出能降低解析失败,但不代表字段内容可靠。
| 护栏动作 | 适合场景 | 需要记录 | 副作用 |
|---|---|---|---|
| Allow | 低风险、证据足、策略允许 | policy_version、risk_label | 误放时需要回放证据 |
| Rewrite | 语气、格式、敏感字段脱敏、引用补充 | raw_output_hash、rewrite_reason | 可能改变模型原意 |
| Ask Clarification | 意图、对象、权限或风险等级不明 | missing_field、question_reason | 过多追问会伤体验 |
| Block / Refuse | 明确违反策略、越权或危险动作 | block_reason、policy_rule、appeal_path | 误拒会降低信任 |
| Escalate | 高风险、低置信、灰区、例外申请 | review_queue、owner、SLA | 人工队列会成为瓶颈 |
| Log Only | 低风险但需要观测的策略命中 | risk_signal、sample_id | 只记录不处理可能积累风险 |
| 风险等级 | 推荐组合 | 典型上线门槛 | 不建议 |
|---|---|---|---|
| L1 | Prompt + Decoder + 基础 Trace | 基础回归、输出可编辑、用户反馈入口 | 为低风险草稿堆过重审批 |
| L2 | Prompt + Policy + Eval + Guardrails + Canary | 切片评测、引用溯源、误拒误放统计、灰度观测 | 只看总分,不看风险切片 |
| L3 | Policy + Tools + HITL + Audit + Runbook | 权限快照、工具确认门、审计证据包、事故演练 | 让模型自治执行写操作 |
| L4 | 强 Policy + 禁自治 + 双人复核 + 高风险 Eval + 完整证据链 | 专家 / 负责人审批、风险豁免、外部合规要求、回滚和补救预案 | 让模型给最终高风险决策 |
| 检查项 | 最低问题 | 完成标准 |
|---|---|---|
| Prompt 版本 | 这次行为变化来自哪个 Prompt? | prompt_version 可追踪,可回滚,可进入 Eval |
| Policy 版本 | 允许、拒绝、追问、升级的边界在哪里? | policy_version、例外流程和业务 owner 明确 |
| Tool 策略 | 模型能做什么,系统会拦什么? | 工具注册表、权限、确认门、幂等、补偿都落地 |
| Decoder 配置 | 随机性、长度和结构化输出是否符合任务? | 关键配置写入 Trace,并在评测中固定或分组比较 |
| Guardrail 评测 | 误放和误拒分别有多大? | 红队样本、误拒样本、灰区样本持续回归 |
| Human Review | 什么情况必须转人工,谁负责最终动作? | review queue、SLA、审批记录和责任边界明确 |
| Release Gate | 控制层改动凭什么上线? | Prompt、Policy、Tool、Decoder、Guardrail 任一变化都能触发相应评测 |
| 误区 | 为什么危险 | 更稳的做法 |
|---|---|---|
| 把 Prompt 当唯一控制层 | 模型可能被注入、上下文污染或工具副作用绕过 | Prompt 负责软约束,Policy / Tools / Guardrails 负责强约束 |
| 把 Guardrail 当万能过滤器 | 事后拦截可能已经晚了,尤其是工具执行前的风险 | 在输入、上下文、工具前置和输出后置都布控制点 |
| 只优化拒答率 | 拒得多不等于安全,可能误伤正常用户和业务流程 | 同时看误放、误拒、升级率、人工负载和用户完成率 |
| 所有用户同一套策略 | 角色、地区、租户、业务线不同,合法边界也不同 | 把 role、tenant、region、risk_tier 纳入 policy decision |
| 控制层改了不走发布流程 | Prompt、Policy、Tool schema 和 Guardrail 改动都可能造成生产回归 | 控制层版本化,并接入 Eval、Canary 和回滚 |
风险分级决定控制强度,本页决定控制手段。真正的 AI 行为治理不是“模型调得更听话”,而是把 Prompt、Policy、Tools、Decoder、Guardrails、Human Review 和 Release Gate 放进同一套可版本化、可评测、可审计的控制系统。