利用 AI 网关护栏(Guardrails)在网关层面强制执行内容策略
随着生成式 AI (GenAI) 应用进入生产阶段,问题从“我们能构建它吗?”转变为“我们可以信任它的输出吗?”大语言模型 (LLM) 功能强大但不可预测:它们可能会产生有害内容、泄露个人身份信息,或以难以预料且事后难以补救的方式违反组织政策。将安全检查强行附加到各个应用程序意味着逻辑重复、执行不一致,并且在新的服务绕过规则时会出现监管漏洞。
MLflow AI 网关在即将发布的 3.12 版本中支持护栏 (Guardrails):这是一种在网关层执行的可配置内容策略,在请求到达 LLM 之前或响应到达用户之前生效。由于护栏在网关中运行,它们可以一致地应用于通过该网关的所有应用程序,且无需更改任何应用程序代码。
护栏的工作原理
每个护栏都会根据一套自然语言指令评估传入的请求或传出的响应。当护栏判定内容违反策略时,网关要么拦截 (Block) 该请求,要么在允许内容通过之前对其进行清洗 (Sanitize/脱敏)。
流水线流程如下所示
Request → Before Guardrails → LLM → After Guardrails → Response
前置 (Before) 护栏:筛选传入请求。它们非常适合在消耗任何 Token 之前捕获提示词注入 (Prompt Injection)、用户输入中的个人身份信息 (PII) 或离题查询。
后置 (After) 护栏:在 LLM 的响应到达调用方之前对其进行评估。可用于毒性过滤、检测生成的输出中的 PII,或执行品牌和语气要求。
同一端点上的多个护栏按顺序执行。如果某个护栏拦截了请求,则同一阶段中的后续护栏将被跳过。
护栏类型
内置护栏类型预置了说明,以便您快速上手。由于指令是纯文本,您可以随时对其进行编辑,以收紧或放宽策略、添加特定领域的上下文或处理您用例中特有的极端情况——无需更改代码,只需更新提示词即可。
| 类型 | 描述 | 默认阶段 |
|---|---|---|
| 安全性 (Safety) | 检测有害、冒犯性或有毒内容 | 后置 (筛选 LLM 响应) |
| PII 检测 | 检测姓名、电子邮件、电话号码和其他个人信息 | 前置 (筛选传入请求) |
| 自定义护栏 | 空白模板:编写您自己的名称和指令 | 您的选择 |
选择内置类型会在创建向导中预填名称和指令。您可以由此进一步优化提示词,以匹配贵组织的具体政策——例如,将 PII 护栏限制为仅标记病历号码,或调整安全护栏以允许某些通用分类器通常会拦截的技术术语。
创建护栏
护栏按端点进行配置。导航至 AI Gateway > Endpoints,打开一个端点,然后选择 Guardrails 选项卡。
点击 Create Guardrail 打开向导。第一步要求您选择类型。
第二步允许您配置护栏的各个方面。
名称 (Name):描述性标签,显示在护栏表格中,并在护栏拦截请求时包含在错误响应中。
阶段 (Stage):前置或后置。切换阶段会自动更新指令编辑器中的内容变量引用 ({{ inputs }} ↔ {{ outputs }}),确保其正确无误,无需手动编辑。
指令 (Instructions):用自然语言描述要查找的内容以及如何响应。引用 {{ inputs }} 代表传入请求,引用 {{ outputs }} 代表 LLM 响应。指令必须至少包含一个内容变量。以下是后置阶段自定义毒性检查的示例:
You are a toxicity detector. Review the LLM response below for any harmful,
offensive, or hateful language. Reply with a JSON object:
{
"rationale": "Brief explanation of your decision.",
"result": "yes if the content is safe, no if it is harmful"
}
<response>{{ outputs }}</response>
护栏模型 (Guardrail Model):用于评估护栏的 AI 网关端点。您可以使用更便宜、更快的模型进行策略执行,并将您的主模型留给实际工作负载。当前端点将从列表中排除,以防止循环依赖。
操作 (Action):护栏触发时发生的操作。
- 拦截 (Block):请求被拒绝,返回 HTTP 400 响应。响应体包含护栏名称和理由,以便调用方确切知道原因。
- 清洗 (Sanitize):被标记的内容被脱敏或屏蔽,随后清洗后的请求或响应继续通过流水线。
点击 Create Guardrail 保存。护栏将立即对该端点的所有流量生效。
拦截的效果
当护栏的操作设置为“拦截”且检测到违规时,调用方会收到一个 HTTP 400 响应,其中包含结构化的错误体,内含护栏名称和理由:这些可操作的上下文信息供客户端进行记录、展示给用户或用于触发替代处理逻辑。
管理护栏
点击护栏表格中的任意一行将打开详细信息面板,您可以在其中更新阶段、指令、护栏模型或操作。更新是原子化保存的:更改将注册为新的评分器版本,并替换端点上的护栏,而不会中断任何正在进行的请求。
要删除单个护栏,请打开其详细信息面板并点击 Delete。要同时移除多个护栏,请勾选表格中的复选框,并使用工具栏中的 Delete 按钮。
入门
护栏功能包含在 MLflow 中,可通过 AI 网关 UI 使用。
pip install mlflow
mlflow server
打开 MLflow UI,导航至 AI Gateway > Endpoints,并将护栏添加到任何统一端点。有关完整的配置详细信息,请参阅 网关文档。
护栏是 MLflow AI 网关治理层的最新补充,与预算策略和使用情况跟踪一道,为团队提供对其 LLM 流量的完全可见性和控制力。如果您遇到任何问题或有反馈,请在 MLflow GitHub Issues 上提交报告。
⭐ 在 GitHub 上为我们点星 — 支持该项目!
