保护措施
使用 Portkey Guardrails 更加自信地将请求和响应送入生产环境
LLMs 是脆弱的 - 不仅在 API 的正常运行时间或它们不可解释的 400/500 错误中,也在于它们的核心行为。您可能会收到状态码为 200 的响应,但由于输出不匹配,导致您的应用程序管道完全出错。借助 Portkey 的防护措施,我们现在可以完成构建强大且可靠的 AI 应用程序的循环,使其每次都 完全 按照您的要求运行。
使用 Portkey 的防护平台,您现在可以验证您的 LLM 输入和输出是否符合您指定的检查;由于防护措施建立在我们的 Gateway 之上,您可以按照自己想要的方式协调请求 - 动作范围包括 拒绝请求、记录防护结果、创建评估数据集、回退到另一个 LLM 或提示、重试请求 等等。
Portkey 提供的防护措施示例:
正则匹配 - 检查请求或响应文本是否匹配正则表达式模式
JSON Schema - 检查响应 JSON 是否匹配 JSON Schema
包含代码 - 检查内容是否包含 SQL、Python、TypeScript 等格式的代码
...以及更多。
Portkey 目前提供 20 多种确定性的防护措施,如上述所述,以及基于 LLM 的防护措施,如 检测胡言乱语、扫描提示注入 等等。
Portkey 还与您最喜欢的防护平台集成,如 Aporia、SydeLabs、Pillar Security 等等。只需将它们的 API 密钥添加到 Portkey,您就可以在 Portkey 调用中启用它们的防护政策! 有关防护合作伙伴的更多详细信息,请点击这里。
使用 Guardrails
将 Portkey Guardrails 投入生产仅需 4 个步骤:
创建 Guardrail 检查
创建 Guardrail 动作
通过配置启用 Guardrail
将配置附加到请求
让我们详细看看下面:
1. 创建新的护栏并添加检查
在“护栏”页面,点击 创建 并从右侧边栏添加您喜欢的护栏检查。

每个护栏检查都有一个基于其用例的自定义输入字段——只需将相关细节添加到表单中并保存您的检查。
2. 添加保护措施操作
在这里,您将定义保护措施的基本编排逻辑。

有 4 种类型的护栏操作
异步
TRUE
这是默认状态
与 LLM 请求同时异步运行护栏检查。
不会给您的请求增加延迟
当您只想记录护栏检查而不影响请求时非常有用
异步
FALSE
按请求
在将请求发送到LLM之前进行护栏检查
按响应
在将响应发送给用户之前进行护栏检查
会给请求增加延迟
当您的护栏非常关键时,并且您希望根据护栏结果对请求进行更多协调时非常有用
拒绝
TRUE
按请求 & 响应
如果任何护栏检查失败,请求将以446状态码被终止。
如果所有护栏检查成功,请求/响应将以200状态码继续发送。
当您的护栏非常关键,并且在它们失败时,您无法运行请求时非常有用
我们建议在您的请求子集上运行此操作,以首先查看影响
拒绝
FALSE
这是默认状态
按请求 & 响应
如果任何护栏检查失败,请求仍然会发送,但会带有246状态码。
如果所有护栏检查成功,请求/响应将以200状态码继续发送。
当您想记录护栏结果但不希望其影响您的结果时非常有用
成功时
发送反馈
如果所有的护栏检查通过,将您自定义定义的反馈附加到请求中
我们建议设置此操作
这将帮助您随着时间的推移建立一个护栏结果的“评估数据集”
失败时
发送反馈
如果任何的护栏检查失败,将您的自定义反馈附加到请求中
我们建议设置此操作
这将帮助您随着时间的推移建立一个护栏结果的“评估数据集”
设置您希望与检查相关的操作,命名您的护栏并保存它!保存护栏后,您将获得一个关联的 $Guardrail_ID,然后可以将其添加到您的请求中。
3. 通过配置“启用”护栏
这是 Portkey 魔力发挥作用的地方。您上面创建的护栏尚未成为 Active 护栏,因为它尚未附加到任何请求上。
Configs 是 Portkey 最强大的功能之一,用于定义各种请求编排——从缓存、重试、回退、超时到负载均衡等一切。
添加 Guardrail ID 在请求之前 或 在请求之后
在请求之前 或 在请求之后请求前钩子
before_request_hooks
{"id":"$guardrail_id"}
此键用于在INPUT上运行 Guardrail 检查 & 操作。
请求后钩子
after_request_hooks
{"id":"$guardrail_id"}
此键用于在OUTPUT上运行 Guardrail 检查 & 操作。
带有保护措施的示例配置
网关上的护栏行为
基于,
护栏检查结果 (
PASS或FAIL) 和护栏操作:拒绝设置 (
TRUE或FALSE)
Portkey 根据您设置的护栏行为发送不同的 请求状态码。
PASS
FALSE
200
护栏通过,请求将被处理,无论如何
PASS
TRUE
200
护栏通过,请求将被处理,无论如何
FAIL
FALSE
246
护栏失败,但请求仍然应该被处理。 Portkey 引入了一个新的状态码来指示这种状态。
FAIL
TRUE
446
护栏失败,请求不应该被处理。 Portkey 引入了一个新的状态码来指示这种状态。
使用新 246 和 446 状态码的示例配置
246 和 446 状态码的示例配置您可以在 Portkey UI 中创建这些配置,保存它们,并获取与您的请求关联的配置 ID。更多信息。
4. 最终步骤 - 将配置附加到请求
现在,在实例化您的 Portkey 客户端或发送请求头时,只需传递配置 ID。
有关更多信息,请参阅 配置文档。
在 Portkey 日志中查看 Guardrail 结果
Portkey 日志将为您提供每个请求的 Guardrail 结果的详细信息。
在日志抽屉的 反馈与保护措施 标签上,您可以看到
反馈与保护措施 标签上,您可以看到保护措施详情
概述:有多少检查
通过以及多少失败裁决:您保护措施中每个检查的裁决
延迟:您保护措施中每个检查的往返时间
反馈详情
Portkey 还将显示为每个请求记录的反馈对象
值: 您传递的数值反馈权重:数值反馈权重元数据键和值: 与反馈一起发送的任何自定义元数据成功检查:与此请求关联的哪些检查通过失败检查:与此请求关联的哪些检查失败错误检查:是否有任何检查在过程中出错

直接在 JSON 中定义 Guardrails
在 Portkey 上,您还可以在代码中创建 Guardrails 并将其添加到您的配置中。有关更多信息,请阅读以下内容:
创建原始保护措施(JSON格式)拒绝请求的示例与保护措施
提示注入检查:防止可能改变AI模型行为或操纵其响应的输入。
内容审核检查:确保响应不包含冒犯性、有害或不当内容。
合规性检查:验证输入和输出是否符合监管要求或组织政策。
安全检查:阻止包含潜在有害内容的请求,例如SQL注入尝试或跨站脚本(XSS)有效载荷。
通过适当配置保护措施,您可以维护AI应用的完整性和可靠性,确保仅处理安全和合规的请求。
Last updated