Agent Guardrails

Guardrails 是 agent 系统中控制风险、限制动作边界和触发拦截或审批的保护层,不等于简单内容审核。

#tech / ai #type / concept #status / growing

[!info] related notes

Agent Guardrails

一句话定义

Guardrails 是 Agent 系统里的风险控制层,用来约束它能做什么、什么时候该停、什么时候该触发拦截或审批。它不是”让模型自己注意一点”,而是系统级的硬控制。

核心机制 / 工作原理

Guardrails 挂在四个位置:

1. 输入侧(用户消息进入时)

  • Prompt Injection 检测: 检测用户输入是否试图劫持 Agent 行为
  • 内容安全: 检测是否包含违法、有害内容
  • PII 检测: 检测是否包含个人敏感信息

2. 输出侧(模型回复发出时)

  • 内容审核: 检测模型回复是否包含有害内容
  • 事实性检查: 检测回复是否基于检索内容(RAG 场景)
  • 格式校验: 检测回复是否符合预期格式

3. 工具调用侧(调用工具前后)

  • 权限检查: 当前用户/Agent 是否有权调用此工具
  • 参数校验: 参数是否合法、是否在允许范围内
  • 风险评估: 调用是否需要人类审批
  • 速率限制: 防止工具被过度调用

4. 流程控制侧(handoff、状态转换时)

  • 步数限制: 防止 Agent 无限循环
  • Token 预算: 防止 token 消耗超限
  • 时间限制: 防止执行时间过长

OpenAI Agents SDK 的 Guardrails 实现

OpenAI Agents SDK 中,guardrails 与 Agent 并行执行

# guardrails 和 agent 同时运行
# guardrails 失败时快速终止,不影响正常路径的延迟
@guardrail
async def check_safety(input):
    if contains_pii(input):
        raise GuardrailTripped(“输入包含 PII”)

关键设计:guardrails 不增加正常路径的延迟,只在检测到问题时才介入。

最小例子 / 最小场景

客服 agent 处理退款的 guardrails:

1. 用户输入 → Prompt Injection 检测 → 通过
2. Agent 决定调用 process_refund(amount=5000)
3. → 参数校验: 金额 > 0 ✓
4. → 权限检查: Agent 有退款权限 ✓
5. → 风险评估: 金额 > 1000 → 需要人类审批
6. → 触发 Human-in-the-loop
7. 用户批准
8. → 执行退款
9. → 结果审核: 退款成功 ✓
10. → 回复用户

Guardrails vs 其他安全机制

机制作用点特点
Guardrails运行时自动检查不依赖人工
Human-in-the-loop关键节点暂停依赖人工判断
Permission Boundary工具权限定义静态配置
Content Safety输入/输出内容内容层面

详见 Human-in-the-loop, Permission Boundary

边界与易混淆点

  • Guardrails ≠ 敏感词过滤: Guardrails 是多维度的系统级控制,不只是正则匹配。
  • Guardrails ≠ “让模型注意”: 模型的 system prompt 里写”不要做 XX”不是 guardrail,那是建议。Guardrail 是代码级的硬拦截。
  • Guardrails 的位置: 应该在 Agent Runtime 层实现,而不是散落在各处。
  • Guardrails 的代价: 每个 guardrail 都增加延迟和成本,需要在安全和性能之间权衡。
创建于 2026/5/4 更新于 2026/7/15