AWS Bedrock Guardrails
AWS Bedrock Guardrails 是 Bedrock 内置的内容安全护栏,在模型推理的输入和输出双向过滤 —— 拦敏感话题、自动脱敏 PII、检测 prompt injection、阻断有害输出。TT API 把 Guardrails 作为可选能力开放给企业账户。本文讲清楚 Guardrails 拦什么、怎么拦、合规场景怎么配。
一、Guardrails 是什么
双向过滤管道
Guardrails 不是简单的"输出审核"。它在调用链上同时挂两个钩子:
你的请求 → [输入侧 Guardrails] → 模型推理 → [输出侧 Guardrails] → 返回给你
输入侧拦下有问题的 prompt(比如越狱指令、敏感话题),输出侧再拦下模型产生的不合规内容。两层独立,互不依赖。
它具体拦什么
Guardrails 内置 5 类规则,可以单独启用或组合:
| 类别 | 说明 | 典型场景 |
|---|---|---|
| 话题过滤 | 自定义话题黑名单(如政治、医疗诊断、投资建议) | C 端应用避开高风险领域 |
| 敏感词过滤 | 自定义词表 + AWS 内置脏话 / 仇恨言论库 | 品牌安全 |
| PII 检测与脱敏 | 自动识别身份证、信用卡、SSN、电话、邮箱等 | 合规出/入数据 |
| Prompt Injection 防护 | 检测试图绕过 system prompt 的注入模式 | Agent / 工具调用场景必备 |
| 基础内容安全 | 仇恨、暴力、性内容、自残诱导的多维度评分 | 通用 SaaS、教育产品 |
它输出什么
每次请求经过 Guardrails 都会返回结构化判定结果:通过 / 拦截 / 重写(如 PII 脱敏)+ 命中的规则 ID + 置信度。所有判定都进调用日志,方便事后审计。
二、我们如何把 Guardrails 接进来
默认不启用,按需开
Guardrails 是可选能力。默认情况下,你的调用直接走 Bedrock 模型,不经任何过滤——延迟最低、行为最纯净。
启用后,在控制台 → API Key → Guardrails 配置:
- 选模板 —— 我们提供「C 端应用」「企业内部」「教育合规」「金融合规」4 个预设
- 微调规则 —— 在预设基础上加自定义话题黑名单 / 词表 / PII 类别
- 绑定 Key —— 每个 API Key 单独绑定一份 Guardrails 配置,互不影响
性能开销
启用 Guardrails 后,每次调用增加:
- 输入侧 —— ~30-80ms(取决于规则数量和输入长度)
- 输出侧 —— ~50-120ms(流式响应会逐 chunk 检查)
总额外延迟通常 < 200ms。对 chat 场景几乎无感,对延迟极致敏感的场景(如 < 500ms 的 voice agent)需要权衡。
调用方式
Guardrails 启用后对你的代码完全透明——还是同一个 OpenAI 协议入口,请求体不需要改。判定结果通过 response header(X-Guardrails-Action)和 response body 的扩展字段返回,便于你的应用做后续处理。
三、典型合规场景
场景 1:C 端 chatbot 避开高风险话题
教育、心理咨询、健康类产品最容易踩"医疗建议""投资建议"的红线。启用话题过滤 + 内容安全,可以在用户问出"我该吃什么药"时让模型回到通用建议,而不是给出具体诊断。
场景 2:用户输入含 PII,模型不该见
用户上传文档让模型摘要,文档里包含身份证号、手机号、邮箱。开启 PII 脱敏后:
- 输入侧:在送进模型前,PII 被替换成占位符(
{ID_CARD}、{PHONE}等) - 输出侧:如果模型仍然带出了原始信息(罕见但可能),也会被拦下
这条对 GDPR / 个保法合规场景刚需。
场景 3:Agent 框架防 prompt injection
Agent 调用工具时,工具返回的内容会重新拼入 prompt。如果工具读了一封含恶意指令的邮件,恶意指令可能"接管" Agent。Guardrails 的 prompt injection 检测能识别这类模式,阻断越权调用。
场景 4:审计要求"每次调用都有判定记录"
金融、医疗等强监管行业,合规上需要证明"每次 AI 输出都过了内容审核"。Guardrails 把每次判定(命中 / 未命中 / 重写)写进调用日志,配合控制台「调用日志」页能完成审计取证。
常见疑问
启用 Guardrails 会让我的费用增加吗?
Guardrails 按调用次数和处理字符数计费,和模型调用费分开。具体费率挂钩 AWS 官方价格表。一般场景下,Guardrails 费用占总账单的 5-15%。控制台「账单」页可以拆分查看。
预设模板能改成完全自定义吗?
可以。控制台 → API Key → Guardrails → 高级模式,可以完全自己定义话题列表、词表、PII 类别和阈值。强烈建议从预设起步,先跑一周看命中分布,再针对性调整。
拦截了我应该怎么知道?
两种方式:(1)response header X-Guardrails-Action 标记 blocked / rewritten;(2)控制台「调用日志」里这条调用的状态会显示「Guardrails 拦截」并列出命中规则。
Guardrails 会"误伤"正常调用吗?
会,特别是话题过滤阈值调得过严时。我们建议先用预设跑一周,看「调用日志」里被拦下的请求是不是真的应该被拦。调整后通常误伤率 < 1%。