微信扫码
添加专属顾问
我要投稿
Azure AI 内容安全插件现已上线Dify市场,为AI应用提供实时审核与多维度安全保障,确保合规性与数据隐私。核心内容: 1. Azure AI内容安全插件的核心功能与优势 2. 插件支持的危害类别与严重性等级分析 3. 灵活的部署方式与自定义审核规则
作者:尤吉庆,微软应用解决方案工程师,dify 社区贡献者
Azure AI 内容安全容器插件现已正式上线 Dify 插件市场!这款强大的内容审核工具能够帮助开发者在构建 AI 应用时,自动检测和过滤用户输入及 AI 生成内容中的潜在有害信息,确保应用输出的安全性与合规性。
通过集成该插件,Dify 用户可以轻松实现:
实时内容审核:在工作流中自动检测文本和图像中的不当内容
多维度安全保障:覆盖仇恨言论、暴力、色情、自残等多个风险类别
灵活的部署方式:支持本地容器化部署,满足数据隐私和合规要求
自定义审核规则:通过 BlockList 功能精确控制特定内容的过滤
无论您是构建客服机器人、内容生成应用还是社交平台,该插件都能为您的 AI 应用增加一道可靠的安全防线。
Azure AI 内容安全是一项 AI 服务,可检测用户输入和 AI 生成的有害内容。Azure AI 内容安全包括文本和图像 API,该服务提供了以下几种不同类型的分析:
Azure AI Content Safety 可识别四种不同类别的有害内容,分类可以是多标签的。例如,当文本通过文本审核模型时,它可以被归类为 Sexual 和 Violence。
每个危害类别还附带一个严重性级别,用于显示被标记内容的严重性。
通过容器可以在自己的环境中使用 Azure AI Content Safety 功能的子集,以满足特定的安全性和数据管理要求。下表列出了可用的 AI Content Safety Container 以及每个容器支持的功能。
Content Safety Container 处于公共预览版,不满足 Microsoft 的稳定性和支持要求。
Azure AI Content Safety 提供两种 SKU,一种按是 Standard SKU 按照实际请求的文本数量和图片数量进行计费,另一种是通过容器方式,完全部署在本地且不与互联网交互的 Commitment SKU。同时,对于 Standard SKU,也提供容器部署在本地,但需要与云端 Billing Endpoint 交互,按照一定间隔同步计费数据。详情如下:
1.6. Dify 插件
Azure AI Content Safety Container 已经被封装为 Dify 插件,并上架 Dify 官方 Marketplace。插件提供 TEXT 和 IMAGE 两种类型内容的审查能力。最新版本 v0.0.2 具备以下特性:
在单个工具中同时支持文本和图片内容审核;
支持自定义 API 端点和可选的身份验证请求头;
文本审核模式下支持利用 BlockList 进行更精确的文本内容筛选;
自动解析 API 响应并汇总展示文本和图像审查的违规详情;
输出明确的 ALLOW 或 DENY 检查结果;
额外输出用于自定义需求的原始 JSON 格式的 RawResults 结果;
在使用 Content Safety Containers 之前,必须满足以下先决条件:
standard (S)
pricing tier 的 Content Safety resources;Content Safety Container 在未连接到 Azure 进行计量的情况下无法运行,必须将容器配置为始终与计量服务通信以更新计费信息。容器启动需要三个主要参数,首先,Microsoft 软件许可条款必须具有 accept
值。此外,还需要端点 URL 和 API 密钥。
📢 Note
容器大约每 10~15 分钟报告一次使用情况。如果未在允许的时间范围内连接到 Azure,容器会继续运行,但在恢复到计费端点的连通性之前,容器不会提供服务。
默认会以 10~15 分钟时间内尝试连接 10 次,如果 10 次均失败,则容器将停止处理请求。
下表显示了使用 NVIDIA T4 和 A100 在单卡 GPU 上每秒请求数 (RPS) 和延迟指标。但需要注意的是,即使使用相同的 GPU,性能也会根据 GPU 负载和环境的特定配置而波动,数据仅供参考。
1)Analyze Text
2)Analyze Image
📢 Note
下述章节所有操作基于 Ubuntu 24.04,Security Type: Trusted launch virtual machines
1)安装 NVIDIA Driver
若在创建 Azure VM 时,选择了 Trusted launch virtual machines
作为 Security Type。则需要使用 Ubuntu 官方提供的 ubuntu-drivers 工具来安装 NVIDIA Driver,否则驱动将无法加载到内核中,导致检测不到驱动。
# 检查 Secure Boot 是否开启
mokutil --sb-state
# 安装 ubuntu-drivers
apt update && apt install -y ubuntu-drivers-common
# 检查可用驱动版本(for servers)
ubuntu-drivers list --gpgpu
# 安装驱动(CUDA 12.6 要求 CUDA Driver ≥560)
ubuntu-drivers install --gpgpu nvidia:570-server
# 查看驱动版本
cat /proc/driver/nvidia/version
# 安装 utils
apt install nvidia-utils-570-server
# 验证
nvidia-smi
# 升级驱动并清理旧版本(可选)
ubuntu-drivers install --gpgpu nvidia:575-server
apt install nvidia-utils-575-server
reboot
apt purge nvidia-driver-570 nvidia-kernel-common-570 nvidia-utils-535
2)安装 docker
# 刷新系统软件包列表
apt update
# 安装 docker
apt install docker.io -y
3)安装 CUDA Toolkit
# 下载 DEB 包
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
# 添加 NVIDIA 官方仓库密钥
dpkg -i cuda-keyring_1.1-1_all.deb
# 刷新系统软件包列表
apt update
# 查找可用 Toolkit 版本
apt search cuda-toolkit
# 安装指定版本
apt -y install cuda-toolkit-12-6
# 添加 nvcc 到 PATH
echo 'export PATH=/usr/local/cuda-12.6/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
4)安装 NVIDIA Container Toolkit
NVIDIA Container Toolkit 是一系列库和实用程序,借助这些库和程序来构建和运行 GPU 容器。
# 添加官方repo
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 刷新系统软件包列表
apt update
# 安装
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
# 重启 Docker
systemctl restart docker
# 验证
docker run --rm --gpus all nvidia/cuda:12.6.0-base-ubuntu24.04 nvidia-smi
5)获取 Endpoint 和 ApiKey
Portal 路径:Home / Content Safety / <your_content_safety_resource> / Resource Management / Key and Endpoint
6)部署 Content Safety 容器
可在 Microsoft Container Registry 找到所有受支持的 Content Safety Text 和 Image 容器镜像,在 azure-cognitive-services/contentsafety
中,名为 text-analyze
和 image-analyze
。
Microsoft Container Registry:https://aka.ms/aacscontainermcr
# 部署 Content Safety Container - Text
## 部署在 CPU 机器上(跳过步骤 1-3)
docker run -itd -p 5000:5000 \
-e CUDA_ENABLED=false \
--restart always \
mcr.microsoft.com/azure-cognitive-services/contentsafety/text-analyze:latest \
Eula=accept \
Billing="<Endpoint>" \
ApiKey="<ApiKey>"
## 部署在 GPU 机器上
docker run -itd -p 5000:5000 \
--gpus all \
--restart always \
mcr.microsoft.com/azure-cognitive-services/contentsafety/text-analyze:latest \
Eula=accept \
Billing="<Endpoint>" \
ApiKey="<ApiKey>"
# 部署 Content Safety Container - Image
## Image 仅支持部署在 GPU 机器上
docker run -itd -p 5000:5000 \
--gpus all \
--restart always \
mcr.microsoft.com/azure-cognitive-services/contentsafety/image-analyze:latest \
Eula=accept \
Billing="<Endpoint>" \
ApiKey="<ApiKey>"
7)验证状态
有几种方法可以验证容器是否正在运行。找到相关容器的 External IP address(外部 IP 地址)和端口,然后打开浏览器,使用下面 URL 来验证容器是否正在运行。
此外还可以在容器日志中看到上报计费数据的相关日志,如下:
8)使用 BlockList(仅支持文本)
Content Safety Container for Text Analysis 支持使用 BlockList,可以通过该功能自定义 BlockList 术语,并使用 CSV 文件管理这些阻止列表,也可以灵活地将多个 CSV 文件用于多个阻止列表。要在容器中使用 BlockList,使用如下命令:
BlockList:https://learn.microsoft.com/en-us/azure/ai-services/content-safety/how-to/use-blocklist
# 部署在 CPU 机器上(跳过步骤 1-3)
docker run -itd -p 5000:5000 \
-e CUDA_ENABLED=false \
--restart always \
-e BLOCKLIST_DIR=/tmp/blocklist \
-v {/path/on/host}:/tmp/blocklist \
mcr.microsoft.com/azure-cognitive-services/contentsafety/text-analyze:latest \
Eula=accept \
Billing="<Endpoint>" \
ApiKey="<ApiKey>"
# 部署在 GPU 机器上
docker run -itd -p 5000:5000 \
--gpus all \
--restart always \
-e BLOCKLIST_DIR=/tmp/blocklist \
-v {/path/on/host}:/tmp/blocklist \
mcr.microsoft.com/azure-cognitive-services/contentsafety/text-analyze:latest \
Eula=accept \
Billing="<Endpoint>" \
ApiKey="<ApiKey>"
在上面的命令中,将 {/path/on/host} 替换为主机上阻止列表文件夹的路径。此命令将主机中的阻止列表目录挂载到容器内的 BLOCKLIST_DIR=/tmp/blocklist 环境变量中。
📢 Note
Content Safety Container for Text Analysis 对阻止列表使用精确匹配方法。在匹配过程之前,黑名单中的所有项目都将转换为小写。这意味着,(例如)如果阻止列表中有 Contoso
,则输入中的 Contoso
和 contoso 都被视为匹配项。
# Text Analyze
curl --location --request POST '<endpoint>/contentsafety/text:analyze?api-version=2024-09-01' \
--header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"text": "I hate you",
"categories": ["Hate", "Sexual", "SelfHarm", "Violence"],
"blocklistNames": ["string"],
"haltOnBlocklistHit": true,
"outputType": "EightSeverityLevels"
}'
# Image Analyze
curl --location --request POST '<endpoint>/contentsafety/image:analyze?api-version=2024-09-01' \
--header 'Content-Type: application/json' \
--data-raw '{
"image": {
"content": "base_64_string"
},
"categories": ["Hate", "SelfHarm", "Sexual", "Violence"],
"outputType": "FourSeverityLevels"
}'
Text Analyze
Image Analyze
1)示例
# Text Analyze
{
"blocklistsMatch": [
{
"blocklistName": "string",
"blocklistItemId": "string",
"blocklistItemText": "string"
}
],
"categoriesAnalysis": [
{
"category": "Hate",
"severity": 2
},
{
"category": "SelfHarm",
"severity": 0
},
{
"category": "Sexual",
"severity": 0
},
{
"category": "Violence",
"severity": 0
}
]
}
# Image Analyze
{
"categoriesAnalysis": [
{
"category": "Hate",
"severity": 2
},
{
"category": "SelfHarm",
"severity": 0
},
{
"category": "Sexual",
"severity": 0
},
{
"category": "Violence",
"severity": 0
}
]
}
2)参数解释
4. 集成 Dify
4.1. 前置条件
1)部署 Content Safety Container
在使用 Content Safety Container Plugin 之前,请确保已按照前述章节正确设置并运行 Content Safety Container。并且在配置插件之前,请先验证容器是否可访问并响应 API 请求。
2)更新 Dify ENV
当用户在 Dify 聊天框中发送图片时, 会在 sys.files
中生成可用于访问该图片的 url
(每张图片对应一个 url)。Content Safety Container Plugin 通过访问这些 url
来获取图像,并将其转换为 base64 格式,然后将其发送到图像分析 API 进行审核。因此,必须在 Dify 中设置 FILES_URL
或 CONSOLE_API_URL
才能生成相应的 URL。sys.files
的结构如下:
[
{
"dify_model_identity": "__dify__file__",
"id": null,
"tenant_id": "7720c6b6-73a5-457f-93a2-66075982fe02",
"type": "image",
"transfer_method": "local_file",
"remote_url": "https://upload.dify.ai/files/xxxxxxxx",
"related_id": "4763ef42-1bca-44d1-b12b-bee0e841b719",
"filename": "image_moderation_1.jpg",
"extension": ".jpg",
"mime_type": "image/jpeg",
"size": 39886,
"url": "https://upload.dify.ai/files/xxxxxxxx"
}
]
4.2. 配置步骤
1) 获取插件
Content Safety Container Plugin 可以通过 Marketplace、GitHub 或 Local Package File 进行安装,按需选择。如果通过 Local Package File 方式安装,则会由于 difypkg 文件没有签名,导致安装报错,需要给 plugin-daemon
组件设置 FORCE_VERIFYING_SIGNATURE=false
以绕过检查:
Marketplace:https://marketplace.dify.ai/
GitHub:https://github.com/HeyJiqingCode/AzureAIContentSafetyContainer-DifyPlugin.git
Local Package File:https://github.com/HeyJiqingCode/AzureAIContentSafetyContainer-DifyPlugin/blob/dify
2)认证
3)添加节点
Content Safety Container Plugin 可以在 Chatflow 或 Workflow 中使用,并且可以同时对文本和图片内容进行审查。新建 Chatflow 或 Workflow,添加 Tools 节点,选择工具 Azure AI Content Safety Container 中的 Content Moderation 即可。示例如下:
配置示例:
https://xxx.azure-api.net
2024-05-01
Ocp-Apim-Subscription-Key
*******************************
4)配置参数
Content Safety Container Plugin 所有参数都设置为可选。后端会自动检测是否有文本或图像内容传入,并调用对应的 API 进行内容审核。若未传入内容,则不调用。参数说明如下:
- Text to Analyze:要分析的文本,选择 Dify 系统变量 sys.query
即可;
- Images to Analyze:要分析的图像文件,选择 Dify 系统变量
sys.files
即可;
- Text Blocklist Names:用于文本分析的阻止列表名称,多个名称用逗号分隔;
- Halt on Blocklist Hit:如果匹配到阻止列表,是否停止文本分析,建议设置为
false
;
📢 Note
被检测的图片最大尺寸不超过 7,200 x 7,200 像素,最小尺寸不低于 50 x 50 像素,单个图片文件大小不超过 4M。
4.3. 输出变量
Content Safety Container Plugin 提供多种输出结果,以满足不同场景需求,具体如下:
- CheckResult:最终检测结果(ALLOW、DENY 或 ERROR);
- Details:格式化违规详情,仅在 CheckResult 为 DENY 时才会输出;
- RawResults:原始、未经修改的响应,用于自定义需求场景;
RawResults 结构示例如下:
{
"text": {
"blocklistsMatch": [],
"categoriesAnalysis": [
{
"category": "Hate",
"severity": 6
}
]
},
"image": [
{
"categoriesAnalysis": [
{
"category": "Sexual",
"severity": 4
}
]
}
]
}
1)文本审核——有害类别检测
3)图片审核——有害类别 + BlockList 检测
4)文本 + 图片审核——有害类别 + BlockList 检测
在 GitHub 上给我们点亮:支持我们的开源项
https://github.com/langgenius/dify
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-06-26
提升 Dify 集成 MCP 便利性与 Prompt 迭代效率的实践
2025-06-26
万字演讲:Dify 插件如何助力 AI Agent 应用开发?
2025-06-26
Dify 1.5.0:变量监视器发布,让工作流调试所见即所得
2025-06-26
Dify 1.5.0 上线:这次调试功能,真的省了我一半时间
2025-06-26
Dify发布V1.5.0版本,变量监视与状态缓存太实用了
2025-06-26
就在刚刚,Dify发布了V1.5.0版本,让我们一起看看又带来了哪些新变化!
2025-06-25
53AI Studio:高准确率是企业级AI应用的“终局之选”
2025-06-25
实操修改Dify服务端口设置
2025-04-05
2025-06-25
2025-04-02
2025-04-04
2025-03-29
2025-03-31
2025-04-01
2025-04-03
2025-06-04
2025-04-18
2025-06-26
2025-06-17
2025-05-29
2025-05-28
2025-05-22
2025-04-27
2025-04-15
2025-03-20