你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

对 LLM 请求强制执行内容安全检查

适用于:开发人员 | 基本 | 基本 v2 | 标准 | 标准 v2 | 高级 | 高级 v2

llm-content-safety 策略会先将大型语言模型 (LLM) 请求(提示)传输到 Azure AI 内容安全服务,然后再将其发送到后端 LLM API,从而对其强制执行内容安全检查。 启用策略并且 Azure AI 内容安全检测到恶意内容时,API 管理会阻止请求并返回 403 错误代码。

注释

API 管理中使用的术语 类别类别 是 Azure AI 内容安全服务中 危害类别伤害类别 的同义词。 可以在 Azure AI 内容安全页中的“危害类别 ”中找到详细信息。

在类似以下的场景中使用该策略:

  • 阻止包含预定义类别的有害内容或仇恨言论的请求
  • 应用自定义阻止列表来阻止发送特定内容
  • 防范符合攻击模式的提示

注释

按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略

先决条件

  • 一个 Azure AI 内容安全资源。
  • 配置为路由内容安全 API 调用并向 Azure AI 内容安全服务进行身份验证的 API 管理 后端
    • 必须使用认知服务用户角色在 Azure AI 内容安全服务上配置 API 管理的托管标识。
    • 策略中引用的 backend-id Azure AI 内容安全后端 URL 需要采用格式llm-content-safetyhttps://<content-safety-service-name>.cognitiveservices.azure.com
    • 需要将 Azure AI 内容安全后端的授权凭据设置为启用了确切的资源 ID https://cognitiveservices.azure.com的托管标识。

政策声明

<llm-content-safety backend-id="name of backend entity" shield-prompt="true | false" enforce-on-completions="true | false">
    <categories output-type="FourSeverityLevels | EightSeverityLevels">
        <category name="Hate | SelfHarm | Sexual | Violence" threshold="integer" />
        <!-- If there are multiple categories, add more category elements -->
        [...]
    </categories>
    <blocklists>
        <id>blocklist-identifier</id>
        <!-- If there are multiple blocklists, add more id elements -->
        [...]
    </blocklists>
</llm-content-safety>

特性

特征 说明 必选 违约
backend-id Azure AI 内容安全后端的标识符(名称),可将内容安全 API 调用路由到其中。 允许使用策略表达式。 是的 不适用
shield-prompt 如果此项设置为 true,则会检查内容是否存在用户攻击现象。 否则,请跳过此检查。 允许使用策略表达式。 false
enforce-on-completions 如果设置为 true,则对聊天完成内容进行内容安全检查,以便进行响应验证。 否则,请跳过此检查。 允许使用策略表达式。 false

元素

元素 说明 必选
类别 category 元素的列表,这些元素指定的设置用于在检测到类别时阻止请求。
blocklists Azure AI 内容安全实例中的阻止列表 id 元素的列表,检测到相应元素会导致请求被阻止。 允许使用策略表达式。

categories 属性

特征 说明 必选 违约
output-type 指定 Azure AI 内容安全如何返回严重性级别。 此属性必须具有下列值之一。

- FourSeverityLevels:输出严重性分为四个级别:0、2、4、6。
- EightSeverityLevels:输出严重性分为八个级别:0、1、2、3、4、5、6、7。

允许使用策略表达式。
FourSeverityLevels

category 属性

特征 说明 必选 违约
姓名 指定此类别的名称。 此属性必须具有下列值之一:HateSelfHarmSexualViolence。 允许使用策略表达式。 是的 不适用
阈值 指定此类别的会导致请求被阻止的阈值。 内容严重性低于阈值的请求不会被阻止。 该值必须介于 0(最严格)和 7 之间(限制最少)。 允许使用策略表达式。 是的 不适用

用法

  • 策略节:入站
  • 策略范围:全局、工作区、产品、API
  • 网关:经典、v2、消耗、自承载、工作区

使用注意事项

  • 会对补全请求或聊天补全请求中的所有文本内容的串联形式运行该策略。
  • 如果请求超出 Azure AI 内容安全的字符限制,则会返回 403 错误。
  • 每个策略定义可以多次使用该策略。

示例

以下示例使用 Azure AI 内容安全服务对 LLM 请求强制执行内容安全检查。 该策略会阻止那些包含类别为 HateViolence 且严重性级别至少为 4 的语音的请求。 换句话说,筛选器允许级别 0-3 继续,而级别 4-7 被阻止。 提高类别的阈值会提高容差,并可能会减少被阻止的请求数。 降低阈值会降低容差,并可能会增加被阻止的请求数。 shield-prompt 属性设置为 true 是为了检查是否存在对抗性攻击。

<policies>
    <inbound>
        <llm-content-safety backend-id="content-safety-backend" shield-prompt="true">
            <categories output-type="EightSeverityLevels">
                <category name="Hate" threshold="4" />
                <category name="Violence" threshold="4" />
            </categories>
        </llm-content-safety>
    </inbound>
</policies>

若要详细了解如何使用策略,请参阅: