Skip to main content
专为 Microsoft Foundry 和 Azure AI 内容安全设计的中间件。了解更多关于中间件的信息。 这些中间件类位于 langchain-azure-ai 包中,并从 langchain_azure_ai.agents.middleware 导出。
Azure AI 内容安全中间件目前在上游被标记为实验性。随着 Azure AI 内容安全和 LangChain 中间件支持的不断成熟,预计 API 接口将会演进。

概览

功能特性

  • 针对有害内容和自定义黑名单的文本审核。
  • 针对数据 URL 和公共 HTTP(S) 图像输入的图像审核。
  • 使用提示防护进行提示注入检测。
  • 针对文本和代码的受保护材料检测。
  • 针对检索到的上下文评估生成答案的事实依据。
  • 自定义 context_extractor 钩子,以适应您的代理状态进行筛选和评估。

设置

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

安装

安装包:

凭据

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

实例化

中间件支持两种端点样式:
  • 通过 AZURE_CONTENT_SAFETY_ENDPOINT 使用 Azure 内容安全资源端点
  • 通过 AZURE_AI_PROJECT_ENDPOINT 使用 Azure AI Foundry 项目端点
如果两者都可用,优先使用 project_endpoint,因为它为基于 Azure AI Foundry 的工作流提供了更好的默认设置。在大多数设置中,您可以设置一次环境变量,并在每个中间件实例化时省略 endpointproject_endpoint
配置端点
langchain_azure_ai.agents.middleware 导入并配置您的中间件。
初始化中间件

与代理一起使用

按顺序将中间件传递给 create_agent。您可以将 Azure AI 中间件与内置中间件结合使用。
使用中间件的代理
如果已设置 AZURE_AI_PROJECT_ENDPOINT,通常可以在实例化时省略 project_endpoint

Azure AI 内容安全

文本审核

使用 AzureContentModerationMiddleware 在代理运行前筛选最后一条 HumanMessage,并在代理运行后筛选最后一条 AIMessage。此中间件使用 Azure AI 内容安全有害内容检测,还可以检查在您的资源中配置的自定义黑名单。 文本审核适用于以下情况:
  • 在模型调用前阻止有害的用户输入
  • 在模型输出到达最终用户前进行筛选
  • 在受监管或企业部署中强制执行自定义黑名单
  • 使用不同的类别和方向设置组合多个审核流程
list[str] | None
要分析的有害内容类别。有效值为 'Hate''SelfHarm''Sexual''Violence'。默认为所有四个类别。
int
default:"4"
触发配置行为的最低严重性分数,范围从 06
string
default:"error"
'error''continue''replace' 之一。
bool
default:"True"
是否在代理运行前筛选最后一条 HumanMessage
bool
default:"True"
是否在代理运行后筛选最后一条 AIMessage
list[str] | None
在 Azure 内容安全资源中配置的自定义黑名单名称。
Callable | None
可选的可调用对象,用于从代理状态和运行时中提取要筛选的文本。

图像审核

当您的代理处理视觉内容时,使用 AzureContentModerationForImagesMiddleware。它从最新的输入或输出消息中提取图像,并使用 Azure AI 内容安全图像分析 API 进行筛选。 此中间件支持:
  • Base64 数据 URL,例如 data:image/png;base64,...
  • 公共 HTTP(S) 图像 URL
list[str] | None
要分析的图像有害内容类别。默认为所有四个支持的类别。
int
default:"4"
触发配置行为的最低严重性分数,范围从 06
string
default:"error"
'error''continue' 之一。
bool
default:"True"
是否筛选最新 HumanMessage 中的图像。
bool
default:"False"
是否筛选最新 AIMessage 中的图像。
Callable | None
可选的可调用对象,用于从代理状态和运行时中提取图像。

提示防护

使用 AzurePromptShieldMiddleware 检测用户提示和可选支持文档中的提示注入。默认情况下,它仅筛选输入,因为提示注入通常是输入端攻击,但您也可以启用输出筛选。
string
default:"error"
'error''continue''replace' 之一。
bool
default:"True"
是否在代理运行前筛选最新的 HumanMessage
bool
default:"False"
是否在代理运行后筛选最新的 AIMessage
Callable | None
可选的可调用对象,用于从代理状态和运行时中提取用户提示和事实依据文档。

受保护材料

使用 AzureProtectedMaterialMiddleware 检测受保护内容,例如受版权保护的文本或代码。此中间件可以筛选最新的用户输入和最新的模型输出。
string
default:"text"
要筛选的内容类型:'text''code'
string
default:"error"
'error''continue''replace' 之一。
bool
default:"True"
是否筛选最新的 HumanMessage
bool
default:"True"
是否筛选最新的 AIMessage
Callable | None
可选的可调用对象,用于从代理状态和运行时中提取文本。

事实依据

使用 AzureGroundednessMiddleware 评估模型响应是否基于代理可用的上下文。与本页上的其他中间件类不同,事实依据在模型生成后运行,并根据支持来源检查生成的答案。 默认情况下,事实依据从当前对话中收集来源,包括系统内容、工具输出以及附加到模型响应的相关注释。
string
default:"Generic"
分析领域。支持的值为 'Generic''Medical'
string
default:"Summarization"
分析的任务类型。支持的值为 'Summarization''QnA'
string
default:"error"
'error''continue' 之一。
Callable | None
可选的可调用对象,用于从代理状态和运行时中提取答案、事实依据来源和可选问题。

API 参考

有关完整的公共 API,请参阅 langchain_azure_ai.agents.middleware 中的中间件导出,以及 langchain_azure_ai.agents.middleware.content_safety 中的基础内容安全中间件包。