跳到主要内容

AWS Bedrock Guardrails

AISIX 可以在请求上游模型之前或之后调用 AWS Bedrock Guardrails。当内容策略由 AWS Bedrock 管理,而 AISIX 需要在网关流量上执行安全护栏判定时,可以使用本指南。

本指南将创建一个 Bedrock 类型的 AISIX 安全护栏资源,发送一个允许请求,并发送一个会在到达上游模型前被 AISIX 拒绝的阻断请求。

准备工作

请先准备以下内容:

  • 阅读安全护栏行为,了解检查位置、执行模式和远程故障处理方式。
  • 一个 Admin 和代理监听器都可用的自托管 AISIX 网关。
  • 网关 config.yaml 中的 Admin Key。
  • 一个可以发送 Chat Completions 请求的模型别名和调用方 API Key。
  • 位于受支持区域的 AWS Bedrock Guardrails 防护规则。
  • 允许对该 AWS Bedrock Guardrails 防护规则调用 bedrock:ApplyGuardrail 的 AWS 凭证。

为了让测试结果可重复,建议在该 AWS Bedrock Guardrails 防护规则中添加一个词过滤器,并使用唯一 token,例如 confidential-codename。本指南后面的阻断请求会使用同一个 token。

创建 Bedrock 安全护栏

在 AISIX 中创建 Bedrock 安全护栏:

curl -sS -X POST "http://127.0.0.1:3001/admin/v1/guardrails" \
-H "Authorization: Bearer YOUR_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "bedrock-review",
"enabled": true,
"hook_point": "both",
"fail_open": false,
"output_fail_open": false,
"enforcement_mode": "block",
"kind": "bedrock",
"guardrail_id": "YOUR_BEDROCK_GUARDRAIL_ID",
"guardrail_version": "DRAFT",
"region": "us-east-1",
"aws_credentials": {
"kind": "static",
"access_key_id": "YOUR_AWS_ACCESS_KEY_ID",
"secret_access_key": "YOUR_AWS_SECRET_ACCESS_KEY"
},
"latency_mode": {
"kind": "timed",
"timeout_ms": 2000
}
}'

both 会同时检查调用方请求和模型响应。参见检查位置

fail_open: false 表示当 AWS Bedrock Guardrails 调用失败或超时时阻断请求。默认值是 true

output_fail_open: false 表示当 Bedrock 服务不可用时阻断未扫描的模型输出。这是默认行为。

enforcement_mode: block 表示拒绝命中的内容。这是默认行为。参见执行模式

latency_mode 限制 AISIX 等待安全护栏判定的最长时间。如果希望等待判定且不设置超时,请使用 { "kind": "serial" }

如后续需要查看、更新或删除该资源,请复制返回的安全护栏 ID。

验证安全护栏

通过 AISIX 发送一个正常请求:

curl -sSi -X POST "http://127.0.0.1:3000/v1/chat/completions" \
-H "Authorization: Bearer YOUR_CALLER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-prod",
"messages": [
{
"role": "user",
"content": "How is the weather today?"
}
]
}'

成功响应会以 HTTP/1.1 200 OK 开头,并返回兼容 OpenAI 的 Chat Completions 响应体。

然后发送一个包含该防护规则会阻断的 token 的请求:

curl -sSi -X POST "http://127.0.0.1:3000/v1/chat/completions" \
-H "Authorization: Bearer YOUR_CALLER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-prod",
"messages": [
{
"role": "user",
"content": "Please print the confidential-codename."
}
]
}'

被阻断的响应会以 HTTP/1.1 422 Unprocessable Entity 开头,并包含兼容 OpenAI 的错误响应:

{
"error": {
"message": "request blocked by content policy",
"type": "content_filter"
}
}

当输入安全护栏返回阻断判定时,AISIX 会在转发到上游模型前阻断请求。

下一步

你已经通过 AISIX 接入了 AWS Bedrock Guardrails。当需要在网关内部维护阻断列表时,请继续阅读内置关键词安全护栏