第 8 章:内置防护栏(Guardrails)与安全策略
在生产环境中,防护栏和审查机制是确保智能体安全可靠运行的必要手段。
构建安全合规应用的重要性
随着智能体被部署到实际业务流程中,安全性和合规性成为核心要求。防护栏(Guardrails) 通过在智能体执行关键点验证和过滤内容,帮助构建安全、合规的 AI 应用。
防护栏的常见应用场景包括:
- 防止个人身份信息(PII, Personally Identifiable Information)泄露。
- 检测和阻止提示注入攻击(Prompt injection attacks)。
- 阻止不适当或有害内容。
- 执行业务规则和合规性要求。
- 验证输出质量和准确性。
开发者可通过中间件(Middleware)在智能体执行的战略点(如开始前、完成后、模型调用或工具调用周围)实现防护栏。LangChain 提供了多种内置防护栏和灵活的中间件系统,支持自定义安全检查。
PII 检测与处理:内置 PIIFilterMiddleware
在智能体应用中,保护敏感用户数据和满足合规性要求至关重要。LangChain 提供了内置中间件用于检测和处理对话中的个人身份信息(PII),适用于医疗、金融等敏感场景或需要清理日志的客户服务智能体。
下表总结了 PII 中间件支持的多种处理策略:
| 策略 | 描述 | 示例 |
|---|---|---|
| redact | 替换为 [REDACTED_TYPE] | [REDACTED_EMAIL] |
| mask | 部分遮盖(如最后 4 位数字) | ****-****-****-1234 |
| hash | 替换为确定性哈希值 | a8f5f167... |
| block | 检测到 PII 时引发异常 | 抛出错误 |
PIIFilterMiddleware 可配置检测类型和应用范围:
pii_type:要检测的 PII 类型,可选内置类型(如email、credit_card、ip、mac_address、url)或自定义类型。strategy:处理检测到的 PII 的方式,默认为"redact"。apply_to_input:是否在模型调用前检查用户消息(默认为True)。apply_to_output:是否在模型响应后检查 AI 消息(默认为False)。apply_to_tool_results:是否在工具执行后检查工具结果消息(默认为False)。
人工参与(Human-in-the-Loop, HITL):高风险决策的审查机制
对于高风险操作,人工参与(HITL)中间件可在执行敏感操作前要求人工批准,是处理高风险决策的有效防护栏。
- 应用场景:适用于金融交易、修改生产数据、发送外部通信等具有重大业务影响的操作。
- 机制:当模型提议需审查的行动(如执行 SQL)时,中间件会暂停执行,利用 LangGraph 的持久性层保存图状态,等待人工决策。
下表总结了 HITL 的中断决策类型及典型用例:
| 决策类型 | 描述 | 示例用例 |
|---|---|---|
| approve | 批准并执行动作 | 发送邮件草稿 |
| edit | 修改后执行动作 | 更改收件人后发送 |
| reject | 拒绝并解释 | 拒绝草稿并说明原因 |
配置方式:通过 interrupt_on 参数将工具动作映射到允许的决策类型。值可为 True(默认中断)、False(自动批准)或 InterruptOnConfig 对象。
资源限制:控制模型调用次数与工具调用次数
为防止智能体陷入无限循环或产生过高成本,LangChain 提供了内置中间件控制资源使用。
- 模型调用限制(ModelCallLimitMiddleware):限制模型调用次数,
thread_limit为整个对话线程允许的最大调用次数(默认无限制)。 - 工具调用限制(ToolCallLimitMiddleware):可全局或针对特定工具限制调用次数,
tool_name指定工具,thread_limit为对话最大调用次数(需 Checkpointer),run_limit为单轮最大调用次数。
下表总结了资源限制的退出行为及适用场景:
| 行为 | 效果 | 适用场景 |
|---|---|---|
| continue | 阻止超限调用并返回错误,智能体继续执行 | 大多数用例 |
| error | 立即引发异常 | 需手动处理限制错误的复杂流程 |
| end | 停止执行并返回消息 | 单工具场景 |
模型回退(Model Fallback):增强鲁棒性
为提升系统鲁棒性,模型回退中间件允许智能体在主要模型失败时自动切换到备用模型,确保即使遇到速率限制、API 错误或临时故障也能继续执行。
- 配置方式:接受一个或多个按顺序排列的字符串或
BaseChatModel实例作为回退模型。 - 目的:增强系统鲁棒性,保证关键任务不中断。
总结
如果将智能体应用比作自动驾驶飞机,防护栏就是飞行安全系统。PII 检测保护乘客隐私,人工参与(HITL)让地面控制在高风险操作前审查批准,资源限制和模型回退则确保飞机不会因燃料耗尽或引擎故障而坠毁,从而保障整个飞行的安全与可靠性。