保护措施

使用 Portkey Guardrails 更加自信地将请求和响应送入生产环境

此功能处于测试阶段,仅对部分用户开放。要为您的组织启用此功能,请在 Portkey Discord 上联系我们。

LLMs 是脆弱的 - 不仅在 API 的正常运行时间或它们不可解释的 400/500 错误中,也在于它们的核心行为。您可能会收到状态码为 200 的响应,但由于输出不匹配,导致您的应用程序管道完全出错。借助 Portkey 的防护措施,我们现在可以完成构建强大且可靠的 AI 应用程序的循环,使其每次都 完全 按照您的要求运行。

使用 Portkey 的防护平台,您现在可以验证您的 LLM 输入和输出是否符合您指定的检查;由于防护措施建立在我们的 Gateway 之上,您可以按照自己想要的方式协调请求 - 动作范围包括 拒绝请求记录防护结果创建评估数据集回退到另一个 LLM 或提示重试请求 等等。

Portkey 提供的防护措施示例:

  • 正则匹配 - 检查请求或响应文本是否匹配正则表达式模式

  • JSON Schema - 检查响应 JSON 是否匹配 JSON Schema

  • 包含代码 - 检查内容是否包含 SQL、Python、TypeScript 等格式的代码

  • ...以及更多。

Portkey 目前提供 20 多种确定性的防护措施,如上述所述,以及基于 LLM 的防护措施,如 检测胡言乱语扫描提示注入 等等。


使用 Guardrails

将 Portkey Guardrails 投入生产仅需 4 个步骤:

  1. 创建 Guardrail 检查

  2. 创建 Guardrail 动作

  3. 通过配置启用 Guardrail

  4. 将配置附加到请求

让我们详细看看下面:


1. 创建新的护栏并添加检查

在“护栏”页面,点击 创建 并从右侧边栏添加您喜欢的护栏检查。

在 Portkey 上,您可以配置护栏在 输入(即 提示)或 输出 上运行。 因此,对于您创建的护栏,请确保您的护栏仅验证 仅一个 输入输出

每个护栏检查都有一个基于其用例的自定义输入字段——只需将相关细节添加到表单中并保存您的检查。

  • 您可以在一个护栏中添加任意数量的检查。

  • 检查仅返回布尔值(/)的结果。

这是 Portkey 上所有可用护栏检查的列表及其功能。


2. 添加保护措施操作

在这里,您将定义保护措施的基本编排逻辑。

保护措施的创建仅用于验证 InputOutput 中的 一个。在此设置的操作也仅适用于 requestresponse 中的一个。

有 4 种类型的护栏操作

操作
状态
描述
影响

异步

TRUE 这是默认状态

与 LLM 请求同时异步运行护栏检查。

  • 不会给您的请求增加延迟

  • 当您只想记录护栏检查而不影响请求时非常有用

异步

FALSE

按请求 在将请求发送到LLM之前进行护栏检查 按响应 在将响应发送给用户之前进行护栏检查

  • 会给请求增加延迟

  • 当您的护栏非常关键时,并且您希望根据护栏结果对请求进行更多协调时非常有用

拒绝

TRUE

按请求 & 响应 如果任何护栏检查失败,请求将以446状态码被终止。 如果所有护栏检查成功,请求/响应将以200状态码继续发送。

  • 当您的护栏非常关键,并且在它们失败时,您无法运行请求时非常有用

  • 我们建议在您的请求子集上运行此操作,以首先查看影响

拒绝

FALSE 这是默认状态

按请求 & 响应 如果任何护栏检查失败,请求仍然会发送,但会带有246状态码。 如果所有护栏检查成功,请求/响应将以200状态码继续发送。

  • 当您想记录护栏结果但不希望其影响您的结果时非常有用

成功时

发送反馈

如果所有的护栏检查通过,将您自定义定义的反馈附加到请求中

  • 我们建议设置此操作

  • 这将帮助您随着时间的推移建立一个护栏结果的“评估数据集”

失败时

发送反馈

如果任何的护栏检查失败,将您的自定义反馈附加到请求中

  • 我们建议设置此操作

  • 这将帮助您随着时间的推移建立一个护栏结果的“评估数据集”

设置您希望与检查相关的操作,命名您的护栏并保存它!保存护栏后,您将获得一个关联的 $Guardrail_ID,然后可以将其添加到您的请求中。

3. 通过配置“启用”护栏

这是 Portkey 魔力发挥作用的地方。您上面创建的护栏尚未成为 Active 护栏,因为它尚未附加到任何请求上。

Configs 是 Portkey 最强大的功能之一,用于定义各种请求编排——从缓存、重试、回退、超时到负载均衡等一切。

现在,您可以使用 Configs 为您的请求添加 护栏检查操作

添加 Guardrail ID 在请求之前在请求之后

类型
配置键
描述

请求前钩子

before_request_hooks

{"id":"$guardrail_id"}

此键用于在INPUT上运行 Guardrail 检查 & 操作

请求后钩子

after_request_hooks

{"id":"$guardrail_id"}

此键用于在OUTPUT上运行 Guardrail 检查 & 操作

带有保护措施的示例配置

网关上的护栏行为

基于,

  • 护栏检查结果 (PASSFAIL) 和

  • 护栏操作:拒绝设置 (TRUEFALSE)

Portkey 根据您设置的护栏行为发送不同的 请求状态码

护栏结果
拒绝设置
返回状态码
描述

PASS

FALSE

200

护栏通过,请求将被处理,无论如何

PASS

TRUE

200

护栏通过,请求将被处理,无论如何

FAIL

FALSE

246

护栏失败,但请求仍然应该被处理。 Portkey 引入了一个新的状态码来指示这种状态。

FAIL

TRUE

446

护栏失败,请求不应该被处理。 Portkey 引入了一个新的状态码来指示这种状态。

使用新 246446 状态码的示例配置

您可以在 Portkey UI 中创建这些配置,保存它们,并获取与您的请求关联的配置 ID。更多信息

4. 最终步骤 - 将配置附加到请求

现在,在实例化您的 Portkey 客户端或发送请求头时,只需传递配置 ID。

有关更多信息,请参阅 配置文档


在 Portkey 日志中查看 Guardrail 结果

Portkey 日志将为您提供每个请求的 Guardrail 结果的详细信息。

在日志抽屉的 反馈与保护措施 标签上,您可以看到

保护措施详情

  • 概述:有多少检查 通过 以及多少 失败

  • 裁决:您保护措施中每个检查的裁决

  • 延迟:您保护措施中每个检查的往返时间

反馈详情

Portkey 还将显示为每个请求记录的反馈对象

  • 您传递的数值反馈

  • 权重:数值反馈权重

  • 元数据键和值 与反馈一起发送的任何自定义元数据

  • 成功检查:与此请求关联的哪些检查 通过

  • 失败检查:与此请求关联的哪些检查 失败

  • 错误检查:是否有任何检查在过程中出错

直接在 JSON 中定义 Guardrails

在 Portkey 上,您还可以在代码中创建 Guardrails 并将其添加到您的配置中。有关更多信息,请阅读以下内容:

创建原始保护措施(JSON格式)

拒绝请求的示例与保护措施

  1. 提示注入检查:防止可能改变AI模型行为或操纵其响应的输入。

  2. 内容审核检查:确保响应不包含冒犯性、有害或不当内容。

  3. 合规性检查:验证输入和输出是否符合监管要求或组织政策。

  4. 安全检查:阻止包含潜在有害内容的请求,例如SQL注入尝试或跨站脚本(XSS)有效载荷。

通过适当配置保护措施,您可以维护AI应用的完整性和可靠性,确保仅处理安全和合规的请求。


Last updated