你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
受保护的代码材料功能提供了一个全面的解决方案,用于识别与现有GitHub存储库中的代码匹配的 AI 输出。 此功能允许你自信地使用代码生成模型,从而增强最终用户的透明度并提升对组织策略的符合性。
警告
内容安全服务的代码扫描程序/索引器仅适用于 2023 年 4 月 6 日。 不会检测到在此日期之后添加到GitHub的代码。 在使用受保护代码材料检测最新的代码主体时,请自行判断。
针对 AI 生成的代码,受保护代码材料检测功能的主要目标如下:
- 检测和防止显示 AI 模型生成的受保护代码。
- 使组织能够管理与 AI 生成的代码相关的风险。
- 确保 AI 生成的代码符合法律、道德和组织策略标准。
有关受保护材料检测的详细信息,请参阅受保护材料检测概念页面。 如需了解 API 输入限制,请参阅“概述”的输入要求部分。
Prerequisites
- Azure帐户。 如果没有帐户,可以免费创建一个帐户。
- Azure AI 资源。
- Azure AI Foundry 的项目或枢纽。
设置
按照以下步骤使用内容安全试用页面:
- 转到 Azure AI Foundry 并导航到项目/中心。 然后选择左侧导航栏上的 Guardrails + 控件 选项卡,然后选择“ 试用 ”选项卡。
- 在“试用”页面上,您可以尝试包括文本和图像内容在内的多种保护措施和控件功能,并使用可调整的阈值来筛选不当或有害内容。
注释
标签和导航可能因门户更新而异。 如果未看到护栏 + 控制,请在你的项目中查找内容安全试用体验。
使用受保护材料检测
此功能扫描已知受保护文本(例如歌曲歌词、文章、食谱、所选 Web 内容)或受保护代码内容的 AI 生成的输出。
- 选择检测受保护内容(用于文本)以扫描文本,或选择检测受保护内容(用于代码)以扫描代码。
- 粘贴用于测试的文本或代码。 为了获得最佳结果,请测试 LLM 完成情况,而不是用户提示。
- 选择“运行测试”。 该服务返回受保护的内容结果。
有关详细信息,请参阅受保护的材料概念指南。
Prerequisites
- Azure订阅 - 免费创建一个订阅
- 获得Azure订阅后,在Azure门户中创建内容安全资源以获取密钥和终结点。 输入资源的唯一名称,选择订阅,然后选择资源组、支持的区域(请参阅 区域可用性)和支持的定价层。 然后选择“创建”。
- 部署资源需要几分钟时间。 完成后,选择“ 转到资源”。 在左窗格中的 “资源管理”下,选择 “订阅密钥”和“终结点”。 终结点和任一密钥都用于调用 API。
- 已安装 cURL
分析代码以检测受保护材料
下一部分介绍使用 cURL 进行请求的示例。 将以下命令粘贴到文本编辑器,并进行以下更改。
- 将
<endpoint>替换为与资源关联的终结点 URL。 - 将
<your_subscription_key>替换为资源附带的密钥之一。 - (可选)将正文中的
"code"字段替换为你要分析的自己的代码。提示
请参阅 输入要求 ,了解最大代码长度限制。 受保护材料检测应在 LLM 完成时运行,而不是在出现用户提示时运行。
curl --location --request POST '<endpoint>/contentsafety/text:detectProtectedMaterialForCode?api-version=2024-09-15-preview' \
--header 'Ocp-Apim-Subscription-Key: <your_subscription_key>' \
--header 'Content-Type: application/json' \
--data-raw '{
"code": "python import pygame pygame.init() win = pygame.display.set_mode((500, 500)) pygame.display.set_caption(My Game) x = 50 y = 50 width = 40 height = 60 vel = 5 run = True while run: pygame.time.delay(100) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False keys = pygame.key.get_pressed() if keys[pygame.K_LEFT] and x > vel: x -= vel if keys[pygame.K_RIGHT] and x < 500 - width - vel: x += vel if keys[pygame.K_UP] and y > vel: y -= vel if keys[pygame.K_DOWN] and y < 500 - height - vel: y += vel win.fill((0, 0, 0)) pygame.draw.rect(win, (255, 0, 0), (x, y, width, height)) pygame.display.update() pygame.quit()"
}'
URL 中必须包含以下字段:
| 名称 | 必需? | 说明 | 类型 |
|---|---|---|---|
| API 版本 | 必选 | 这是要检查的 API 版本。 当前版本为:api-version=2024-09-15-preview。 示例: <endpoint>/contentsafety/text:detectProtectedMaterialForCode?api-version=2024-09-15-preview |
字符串 |
请求正文中的参数在此表中定义:
| 名称 | 必需? | 说明 | 类型 |
|---|---|---|---|
| 代码 | 必选 | 这是要检查的原始代码。 可以包含其他非 ascii 字符。 | 字符串 |
请参阅 "code" 字段的以下示例值:
{
"code": "python import pygame pygame.init() win = pygame.display.set_mode((500, 500)) pygame.display.set_caption(My Game) x = 50 y = 50 width = 40 height = 60 vel = 5 run = True while run: pygame.time.delay(100) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False keys = pygame.key.get_pressed() if keys[pygame.K_LEFT] and x > vel: x -= vel if keys[pygame.K_RIGHT] and x < 500 - width - vel: x += vel if keys[pygame.K_UP] and y > vel: y -= vel if keys[pygame.K_DOWN] and y < 500 - height - vel: y += vel win.fill((0, 0, 0)) pygame.draw.rect(win, (255, 0, 0), (x, y, width, height)) pygame.display.update() pygame.quit()"
}
打开命令提示符窗口并运行 cURL 命令。
解释 API 响应
应会在控制台输出中看到显示为 JSON 数据的受保护材料检测结果。 例如:
{
"protectedMaterialAnalysis": {
"detected": true,
"codeCitations": [
{
"license": "NOASSERTION",
"sourceUrls": [
"https://github.com/kolejny-projekt-z-kck/game-/tree/f134099ce970da951bac9baac83c7885e991c676/ganeee.py",
"https://github.com/Felipe-Velasco/Modulo-Pygame/tree/11490c44a951812dc0c6424b68b1e14fc5cc4c0b/pygame%20basics.py",
"https://github.com/bwootton/firstgame/tree/70d722a6b1ccb79bfa56d9cc69932051848c44bf/jump.py",
"https://github.com/Jason017/Pygame-Learning-Module/tree/17cd69f169d3759e00816ed4a3795dd6db7e157f/pygameModule02.py",
"https://github.com/Coders-Brothers/pygame-tutorial/tree/1b481f5687cdda7c0765089780ef451af6e175cd/lesson-2.py"
]
}
]
}
}
输出中的 JSON 字段定义如下:
| 名称 | 说明 | 类型 |
|---|---|---|
| protectedMaterialAnalysis | 包含有关检测到的受保护代码的详细信息的分析结果。 | 物体 |
| 检测到 | 指示是否检测到来自GitHub存储库的受保护材料。 | 布尔 |
| codeCitations | 找到受保护代码的引文列表。 | Array |
| codeCitations.license | 与检测到的代码关联的许可证类型。 | 字符串 |
| codeCitations.sourceUrls | 在GitHub存储库中检测到受保护代码的URL列表。 | 字符串数组 |
故障排除
- 401/403:确认使用与终结点相同的资源的有效密钥。
- 功能不可用:确认资源位于受保护材料(代码)支持的区域中。
-
输入长度无效:确保
code字符串满足最小长度并不过最大长度(请参阅 输入要求)。
清理资源
如果要清理和删除Azure AI 服务订阅,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。