AI Guardrails 应该放在哪一层:输入、工具和输出的拦截策略怎么设计

Written by

in

很多团队把 Guardrails 理解成“回答生成后再检查一次”。这种做法对明显的违规词可能有效,却拦不住危险工具参数、恶意工具结果和跨租户数据。更合理的做法是把安全策略放进一次请求的多个状态转换中,并为每一层定义不同的处置动作。

五个检查点

输入层检查用户请求、附件类型、租户和权限;计划层检查模型准备执行的意图和风险等级;工具参数层检查 schema、目标资源、范围和副作用;工具结果层检查外部内容是否包含指令、敏感数据或异常大小;输出层检查最终文本、链接、代码和格式是否允许展示。

不同检查点的目标不同。输入层适合做分类和速率控制,工具参数层更适合使用确定性规则,工具结果层需要标记来源和信任等级,输出层则要按 HTML、Markdown、代码或结构化 JSON 的使用场景处理。把所有逻辑塞进一个“安全模型”会让故障难以解释。

先决定失败时怎么办

高风险动作应 fail-closed:无法确认权限或策略时不执行。低风险文本可以降级为说明、要求补充信息或转人工。对外部服务暂时不可用的情况,不要让策略层自动变成放行状态。每次阻断都应记录规则版本、命中的阶段、最小必要摘要和用户可见的原因。

NeMo Guardrails 这类开源工具强调可编程的对话护栏和流程约束,适合帮助团队把规则从提示词中分离出来。但工具不能代替权限系统,Guardrails 放行了一个动作,也不代表工具服务可以跳过最终鉴权。

统一网关可以把模型、租户、工具和策略版本关联起来。使用 top-api.cc 做多模型对照时,建议固定相同的 Guardrails 版本,分别比较“模型生成意图”和“策略实际拦截”的差异,不要把策略升级后的结果误判为模型变好了。

测评要覆盖失败路径

  • 输入中包含敏感信息和外部指令;
  • 模型生成合法意图但工具参数越权;
  • 工具结果带有提示注入或异常链接;
  • 策略服务超时、返回空结果或版本不匹配;
  • 同一动作在不同租户、环境和角色下结果不同;
  • 被阻断后是否泄露过多内部规则。

Guardrails 的质量不只看拦截率,还要看误杀、延迟、可解释性和恢复路径。最好的策略是让低风险请求顺畅通过,把高风险动作停在真正有权限和副作用的边界上。

参考资料:NVIDIA NeMo Guardrails、OWASP GenAI Security Project 以及各工具执行器的权限文档。规则上线前应在隔离环境回放。

如果需要在多个模型和供应商之间保持同一套策略,可以从 top-api.cc 的统一请求入口开始,但工具最终权限仍应由业务服务独立校验。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *