Azure AI 内容安全 Python 技能
帮助 Python 应用检测文本和图像中的有害内容,并管理自定义屏蔽词。
技能明确优先使用 DefaultAzureCredential、限制生产凭据链,并将端点、令牌和 API 密钥放入环境变量;同时保留 API key 路径并支持图像 URL、日志和 blocklist 管理。扣分原因是未要求调用外部 Azure 服务前取得用户确认,未充分说明文本、图像及 URL 会发送到云端,未讨论敏感内容、日志脱敏、最小 Azure 权限、失败回滚或图像 URL 的访问风险。
主文档在同步客户端生命周期、认证偏好和同步/异步模式方面基本一致,并提示确认当前 API 方法名;但示例存在未定义的 endpoint 变量,缺少异常、超时、重试、配额和网络失败处理,也没有可复现的该技能专属测试。按静态校准,执行可靠性上限为 10,因此扣分并评为 7。
触发词、Python SDK、文本/图像审核、blocklist 和严重度分类场景较清楚,适合需要 Azure AI Content Safety 的编码代理;但没有明确非适用范围、输入限制、输出契约或触发排除条件,也未说明中文内容质量、区域可用性及中国大陆网络可达性。
YAML 元数据包含名称、MIT 许可、作者、版本和包名;文档按安装、认证、核心场景、最佳实践和引用资料组织,并提供额外参考文件。扣分原因是没有变更日志、维护责任人和明确更新路径,缺少依赖版本约束、FAQ、故障排查、删除/清理示例,且引用资料与能力清单部分重复。
示例覆盖文本和图像分析、blocklist、严重度及客户端选择,能够直接支持常见入门实现;但生产级错误处理、异步完整示例、阈值决策、隐私处理和资源清理路径不完整,示例正确性也未由该技能专属执行证据验证。按静态校准,effectiveness 上限为 7,因此评为 6。
技能提供了少量 Microsoft Learn 链接、明确的包名和可审计代码片段;仓库还展示了通用 CI、Vally 评估和测试 harness,但给定材料没有证明这些测试覆盖该技能的关键路径,也没有该技能专属测试结果或第三方交叉验证。按静态校准,verifiability 上限为 5,因此评为 4。
- 将用户文本、图像内容或远程图像 URL 发送到 Azure 前,应明确告知数据流、区域、保留策略和授权边界,并避免把敏感分析结果原样写入日志。
- 示例中的 endpoint 未定义,且缺少异常、重试、超时、配额和异步完整路径;接入前应以锁定版本的官方 API 文档和项目测试验证方法名、模型字段及严重度语义。
- 中国大陆网络可达性、Azure 服务区域和企业代理配置未在技能中说明,不能据此保证目标环境可用。
它能做什么 & 适用场景
该技能为 Azure AI Content Safety Python SDK 提供面向编码代理的使用指导。它覆盖文本与图像分析、多严重性级别、四类有害内容以及自定义文本屏蔽列表管理。技能优先推荐使用 DefaultAzureCredential 和 Microsoft Entra ID,并要求以上下文管理器管理客户端生命周期。适合正在 Python 应用中接入 Azure 内容审核的开发者,但使用前需要 Azure Content Safety 资源和相应认证配置。
指导代理安装 azure-ai-contentsafety,读取 CONTENT_SAFETY_ENDPOINT 等环境变量,创建 ContentSafetyClient 或 BlocklistClient,并调用 analyze_text、analyze_image、create_or_update_text_blocklist 和 add_or_update_blocklist_items 等操作。它展示如何从本地文件编码图像或使用图像 URL,检查 Hate、Sexual、Violence 和 SelfHarm 类别及严重性,配置四级或八级严重性输出,并在文本分析中应用屏蔽列表。
- 负责用户生成内容的 Python 开发者,需要在发布文本前检测仇恨、色情、暴力或自残内容。
- 构建图像上传功能的团队,需要在内容展示前分析本地图像或远程图像。
- 需要屏蔽领域特定词语的应用开发者,可创建屏蔽列表并在命中时立即拒绝文本。
- 运行 AI 应用的工程团队,需要在向用户展示模型输出前进行内容预审核并记录分析结果。
优缺点一览
- 覆盖文本分析、图像分析和自定义屏蔽列表管理。
- 明确提供四类有害内容、严重性级别和八级输出模式的示例。
- 推荐 DefaultAzureCredential,并强调同步或异步客户端及凭据的生命周期管理。
- 包含本地图像、图像 URL、屏蔽词命中和 AI 输出预审核等具体模式。
- 依赖 Azure Content Safety 资源、端点和认证配置,不能脱离 Azure 服务独立运行。
- 材料没有说明成本、配额、服务地区或错误重试策略。
- README 提供测试框架,但材料未给出该技能单独的测试结果。
- 技能正文引用了 references/capabilities.md 和 references/non-hero-scenarios.md,但未提供其内容。
如何安装
将仓库添加到编码代理:npx skills add microsoft/skills,然后在向导中选择所需技能。手动方式是克隆 https://github.com/microsoft/skills,并将 .github/plugins/azure-sdk-python/skills/azure-ai-contentsafety-py 复制到项目所用代理的技能目录,例如 .github/skills/。在 Python 环境中安装 SDK:pip install azure-ai-contentsafety。
如何使用
可用触发词包括“azure-ai-contentsafety”“ContentSafetyClient”“content moderation”“harmful content”“text analysis”和“image analysis”。让代理生成或修改 Python 内容安全代码时,说明要分析文本、分析图像、管理屏蔽列表或设置严重性级别。运行代码前设置 CONTENT_SAFETY_ENDPOINT;使用 DefaultAzureCredential 时按材料要求设置 AZURE_TOKEN_CREDENTIALS=prod,旧式密钥认证则设置 CONTENT_SAFETY_KEY。
对比同类
材料明确将 DefaultAzureCredential 与旧式 AzureKeyCredential API 密钥路径进行了比较:新代码应优先使用 DefaultAzureCredential;已有尚未迁移到 Entra ID 的密钥部署才使用 AzureKeyCredential。