以编程方式使用文档

专为 Microsoft Foundry 和 Azure AI 内容安全设计的中间件。了解更多关于 中间件.

这些中间件类位于 langchain-azure-ai 包中,并从 langchain_azure_ai.agents.middleware.

概述

中间件描述
文本审核对输入和输出文本进行有害内容和黑名单匹配筛查
图像审核使用 Azure AI 内容安全图像分析对图像输入和输出进行筛查
提示词防护检测直接和间接的提示词注入攻击
受保护内容检测受版权或其他保护的文本或代码
真实性根据基础源评估模型输出,并标记幻觉

功能特性

  • - 对有害内容和自定义黑名单进行文本审核。
  • - 对数据 URL 和公共 HTTP(S) 图像输入进行图像审核。
  • - 使用提示词防护进行提示词注入检测。
  • - 对文本和代码进行受保护内容检测。
  • - 根据检索到的上下文对生成的答案进行真实性评估。
  • - 自定义 context_extractor 钩子,用于根据您的代理状态调整筛查和评估。

设置

要使用 Azure AI 内容安全中间件,请安装集成包,配置 Azure AI Foundry 项目端点或 Azure 内容安全端点,并提供凭据。

安装

安装包:

    pip install -U langchain-azure-ai
    
    uv add langchain-azure-ai
    

凭据

要进行身份验证,请传递 DefaultAzureCredential() 或 API 密钥字符串通过 credential 参数。使用 Foundry 项目需要使用 Microsoft Entra ID 进行身份验证。

from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()

实例化

中间件支持两种端点样式:

  • - 通过 AZURE_CONTENT_SAFETY_ENDPOINT
  • - 通过 AZURE_AI_PROJECT_ENDPOINT

如果两者都可用,首选 project_endpoint 因为它为基于 Azure AI Foundry 的工作流提供了更好的默认值。在大多数设置中,您可以设置一次环境变量,然后省略 endpoint or project_endpoint 从每个中间件实例化中省略。

os.environ["AZURE_AI_PROJECT_ENDPOINT"] = "https://<resource>.services.ai.azure.com/api/projects/<project>"

langchain_azure_ai.agents.middleware.

from azure.identity import DefaultAzureCredential
from langchain_azure_ai.agents.middleware import AzureContentModerationMiddleware

middleware = AzureContentModerationMiddleware(
    project_endpoint="https://<resource>.services.ai.azure.com/api/projects/<project>",
    credential=DefaultAzureCredential(),
    categories=["Hate", "Violence"],
    exit_behavior="error",
)

导入并配置您的中间件

与代理一起使用create_agent将中间件传递给 按顺序。您可以将 Azure AI 中间件与.

from azure.identity import DefaultAzureCredential
from langchain.agents import create_agent
from langchain_azure_ai.agents.middleware import AzureContentModerationMiddleware

agent = create_agent(
    model="azure_ai:gpt-5.5",
    middleware=[
        AzureContentModerationMiddleware(
            project_endpoint="https://<resource>.services.ai.azure.com/api/projects/<project>",
            credential=DefaultAzureCredential(),
            categories=["Hate", "Violence"],
            exit_behavior="error",
        )
    ],
)

Azure AI 内容安全

文本审核

使用 AzureContentModerationMiddleware 来审查最后的 HumanMessage 在代理运行之前和最后的 AIMessage 在代理运行之后。此中间件使用 Azure AI 内容安全的有害内容检测功能,还可以检查在资源中配置的自定义屏蔽列表。

文本审核适用于以下场景:

  • - 在模型调用前拦截有害的用户输入
  • - 在模型输出到达最终用户之前进行审查
  • - 在受监管或企业部署中强制执行自定义屏蔽列表
  • - 使用不同的类别和方向设置组合多个审核环节
from azure.identity import DefaultAzureCredential
from langchain_azure_ai.agents.middleware import AzureContentModerationMiddleware

middleware = AzureContentModerationMiddleware(
    project_endpoint="https://<resource>.services.ai.azure.com/api/projects/<project>",
    credential=DefaultAzureCredential(),
    categories=["Hate", "SelfHarm", "Sexual", "Violence"],
    severity_threshold=4,
    exit_behavior="error",
    apply_to_input=True,
    apply_to_output=True,
)

Configuration options

要分析的危害类别。有效值为 'Hate', 'SelfHarm', 'Sexual'、和 'Violence'。默认为全部四个类别。

触发配置行为的最低严重性分数 0 to 6 来自该分数的触发配置行为。

以下之一 'error', 'continue', or 'replace'.

是否在代理运行前审查最后的 HumanMessage 在代理运行之前。

是否在代理运行后审查最后的 AIMessage 在代理运行之后。

Azure 内容安全资源中配置的自定义屏蔽列表名称。

可选的可调用函数,用于从代理状态和运行时中提取要筛选的文本。

图像审核

使用 AzureContentModerationForImagesMiddleware 当您的代理处理视觉内容时使用。它会从最新的输入或输出消息中提取图像,并使用 Azure AI 内容安全图像分析 API 进行筛选。

此中间件支持:

  • - Base64 data URLs such as data:image/png;base64,...
  • - 公共 HTTP(S) 图像 URL
from azure.identity import DefaultAzureCredential
from langchain_azure_ai.agents.middleware import (
    AzureContentModerationForImagesMiddleware,
)

middleware = AzureContentModerationForImagesMiddleware(
    endpoint="https://<resource>.cognitiveservices.azure.com/",
    credential=DefaultAzureCredential(),
    categories=["Hate", "SelfHarm", "Sexual", "Violence"],
    severity_threshold=4,
    exit_behavior="error",
    apply_to_input=True,
    apply_to_output=False,
)

Configuration options

要分析的图像危害类别。默认为所有四个支持的类别。

触发配置行为的最低严重程度分数(来源 0 to 6 )。

之一 'error' or 'continue'.

是否在最新的 HumanMessage.

是否在最新的 AIMessage.

可选的可调用函数,用于从代理状态和运行时中提取图像。

提示词防护

使用 AzurePromptShieldMiddleware 检测用户提示词和可选的辅助文档中的提示词注入攻击。默认情况下仅筛选输入,因为提示词注入通常是输入侧攻击,但您也可以启用输出筛选。

from azure.identity import DefaultAzureCredential
from langchain_azure_ai.agents.middleware import AzurePromptShieldMiddleware

middleware = AzurePromptShieldMiddleware(
    project_endpoint="https://<resource>.services.ai.azure.com/api/projects/<project>",
    credential=DefaultAzureCredential(),
    exit_behavior="continue",
    apply_to_input=True,
    apply_to_output=False,
)

Configuration options

之一 'error', 'continue', or 'replace'.

是否在代理运行前筛选最新的 HumanMessage

是否在代理运行后筛选最新的 AIMessage

可选的可调用函数,用于从代理状态和运行时中提取用户提示词和基础文档。

受保护内容

使用 AzureProtectedMaterialMiddleware 用于检测受保护的内容(如受版权保护的文本或代码)。此中间件可以同时筛查最新的用户输入和最新的模型输出。

from azure.identity import DefaultAzureCredential
from langchain_azure_ai.agents.middleware import AzureProtectedMaterialMiddleware

middleware = AzureProtectedMaterialMiddleware(
    endpoint="https://<resource>.cognitiveservices.azure.com/",
    credential=DefaultAzureCredential(),
    type="code",
    exit_behavior="replace",
    apply_to_input=False,
    apply_to_output=True,
    violation_message="Protected material detected. Please provide a higher-level summary instead.",
)

Configuration options

要筛查的内容类型: 'text' or 'code'.

以下之一 'error', 'continue', or 'replace'.

是否筛查最新的 HumanMessage.

是否筛查最新的 AIMessage.

可选的可调用对象,用于从代理状态和运行时中提取文本。

Groundedness

使用 AzureGroundednessMiddleware 用于评估模型响应是否基于代理可用的上下文。与本页面上的其他中间件类不同,groundedness 在模型生成后运行,并根据支持来源检查生成的答案。

默认情况下,groundedness 从当前对话中收集来源,包括系统内容、工具输出以及附加到模型响应上的相关注释。

from azure.identity import DefaultAzureCredential
from langchain_azure_ai.agents.middleware import AzureGroundednessMiddleware

middleware = AzureGroundednessMiddleware(
    project_endpoint="https://<resource>.services.ai.azure.com/api/projects/<project>",
    credential=DefaultAzureCredential(),
    domain="Generic",
    task="QnA",
    exit_behavior="continue",
)

Configuration options

分析领域。支持的值有 'Generic''Medical'.

分析的任务类型。支持的值有 'Summarization''QnA'.

以下之一 'error' or 'continue'.

可选的可调用对象,用于从代理状态和运行时中提取答案、来源依据和可选问题。

API 参考

完整的公共 API,请参阅 langchain_azure_ai.agents.middleware 以及底层内容安全中间件包,请参阅 langchain_azure_ai.agents.middleware.content_safety.