对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

使用内容护栏

Atlas Agent Engine 护栏允许项目管理员控制传入和传出代理模型调用的内容。管理员在项目中设立护栏,编排引擎 (OE) 通过阻止或修改匹配的输入和输出内容来执行护栏。

要将护栏应用一个或多个工作区,请在护栏的 workspace_ids字段中指定工作区。如果不指定此字段,则防护将应用于项目中的每个工作区。

护栏是对策略引擎的补充。护栏控制传入和传出模型的内容,而策略引擎控制代理可以执行的操作,例如可以调用哪些工具和模型。

每个护栏都有一个类型,它确定它评估什么内容,还有一个动作,它确定触发护栏时会发生什么。

目前, Atlas助手引擎仅支持 output_validation 护栏类型。您可以使用这种类型的护栏根据一设立正则表达式模式评估代理的输出。在护栏的 config.match_patterns字段中定义这些模式。

每个护栏指定以下操作之一:

操作
说明

block

拒绝来电。执行停止并向调用者返回错误。

modify

删除或转换匹配的内容,并允许使用修改后的内容继续执行。

log_only

记录护栏触发的情况,并允许使用原始内容继续执行。

require_review

暂停执行以供人工查看。只有在审核者批准后,才会继续执行。

护栏的阶段过滤决定了它是评估进入模型的内容、离开模型的内容还是两者兼而有之。不带阶段过滤的护栏适用于所有阶段。

下表描述了可用阶段:

阶段
评估内容
Triggers When

llm_input

到达模型的用户内容

在模型调用之前

llm_output

模型的响应

在响应返回给用户之前

下表描述了定义护栏的字段。您可以在平台用户界面中设立这些字段,也可以在 create 或 update API请求的JSON请求正文中设置这些字段。

字段
Possible values
说明

name

任何字符串

(必需)护栏的显示名称。

description

任何字符串

对护栏用途的描述。

type

output_validation

(必需)护栏类型。

action

block, modify , log_only , require_review

(必需)触发护栏时要执行的操作。

status

active, inactive

Atlas Agent Engine 是否强制执行护栏。 Atlas助手引擎执行状态为 active 的护栏。

stage_filter

llm_input, llm_output

护栏评估内容的阶段的数组。要评估这两个阶段,请同时列出 llm_input 和 llm_output。

workspace_ids

工作区 ID 数组

护栏适用的工作区数组。要将护栏应用项目中的每个工作区,请将此大量留空。

config.match_patterns

正则表达式模式数组

护栏将内容进行匹配的模式的数组。每个模式设置一个值为 regex 的 type 和一个包含正则表达式value 。

config.on_fail

fix, noop , log_only , block

应用与模式匹配的内容的行为。此字段仅当 action设立为 modify 时适用。

要查看设置这些字段的示例请求正文,请参阅以下部分中的 REST API标签页。

您可以使用平台用户界面或REST API创建和编辑护栏。要查看说明,请选择首选方法的标签页:

导航到 Manage → Policies,然后选择 Guardrails标签页。

然后,通过单击 Create guardrail 按钮并配置 Create guardrail 对话框中的字段来创建护栏。要更新护栏,请单击护栏的 Edit 图标。要删除护栏,请单击其 Delete 图标。

注意

面向客户的REST API公开了护栏操作。请求需要持有者身份验证和适当的项目权限。要学习;了解有关项目角色的更多信息,请参阅管理组织、项目和工作区。

下表列出了可用端点:

方法
端点
参考

GET

/api/v1/projects/{projectId}/guardrails

POST

/api/v1/projects/{projectId}/guardrails

GET

/api/v1/projects/{projectId}/guardrails/{guardrailId}

PUT

/api/v1/projects/{projectId}/guardrails/{guardrailId}

DELETE

/api/v1/projects/{projectId}/guardrails/{guardrailId}

调用创建和更新端点时,请将护栏的字段作为JSON请求正文传递。以下示例请求正文创建了一个护栏,用于编辑到达单个工作区中模型的内容中的任何三个连续数字:

{
"name": "Test guardrail",
"description": "Redacts three-digit sequences",
"type": "output_validation",
"action": "modify",
"status": "active",
"stage_filter": ["llm_input"],
"workspace_ids": ["ws-6a885deac97e9d280fa88cf3"],
"config": {
"match_patterns": [
{
"type": "regex",
"value": "\\d{3}"
}
],
"on_fail": "fix"
}
}

创建、更新或删除护栏后,更改将在操作环境处理的下一次执行时生效。护栏写入会重新加载 OE 缓存的护栏,因此更改对下一个请求有效。

护栏更改不会影响正在进行的执行。

每次执行期间,操作环境都会根据应用于当前项目的护栏评估每个阶段的内容。下表描述了这些阶段和相应的评估内容:

阶段
评估内容

llm_input

在模型调用之前评估用户内容。

llm_output

模型的响应在返回给用户之前进行评估。

当触发具有 block动作的护栏时,操作环境会停止执行并向调用者返回错误。该错误标识了导致区块的护栏。当触发具有 modify动作的护栏时,将继续执行修改后的内容。

当多个护栏与相同内容匹配时,将应用限制性最强的动作。这些操作按以下顺序排列,从限制性最强到限制性最弱:

  1. block

  2. require_review

  3. modify

  4. log_only

示例,如果一个护栏返回 modify,另一个护栏返回 block,则 OE 会阻止调用。

护栏具有以下限制:

  • 仅限未来执行:Guardrail 更改仅应用于更改生效后开始的执行。已经在进行中的处决将继续执行它们开始时使用的护栏。

  • 仅限内容控件:Guardrail 控制传入和传出模型的内容。要控制代理可以执行的操作,例如可以调用哪些工具和模型,请使用策略引擎。