你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:受保护的代码材料检测(预览版)
代码受保护材料功能提供了一个综合解决方案来识别与现有 GitHub 存储库中代码匹配的 AI 输出。 此功能可以增强对最终用户的透明度并促进对组织策略的遵守,让你可以放心地使用代码生成模型。
注意
内容安全服务的代码扫描程序/索引器仅适用于截止到 2021 年 11 月 6 日的代码。 该日期之后添加到 GitHub 的代码不会被检测到。 在使用受保护代码材料检测最新的代码主体时,请自行判断。
针对 AI 生成的代码,受保护代码材料检测功能的主要目标如下:
- 检测和防止显示 AI 模型生成的受保护代码。
- 使组织能够管理与 AI 生成的代码相关的风险。
- 确保 AI 生成的代码符合法律、道德和组织策略标准。
有关受保护材料检测的详细信息,请参阅受保护材料检测概念页面。 如需了解 API 输入限制,请参阅“概述”的输入要求部分。
先决条件
- Azure 订阅 - 免费创建订阅
- 拥有 Azure 订阅后,请在 Azure 门户中创建 Content Safety 资源 ,以获取密钥和终结点。 输入资源的唯一名称,选择订阅,并选择资源组、支持的区域(请参阅上市区域)和支持的定价层。 然后选择“创建”。
- 部署资源需要几分钟时间。 完成后,选择“转到资源”。 在左侧窗格中的“资源管理”下,选择“订阅密钥和终结点”。 终结点和任一密钥都用于调用 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 |
字符串 |
请求正文中的参数在此表中定义:
名称 | 必需? | 说明 | 类型 |
---|---|---|---|
code | 必须 | 这是要检查的原始代码。 可以包含其他非 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 | 包含有关检测到的受保护代码的详细信息的分析结果。 | Object |
detected | 指示是否检测到 GitHub 存储库中的受保护材料。 | 布尔 |
codeCitations | 找到受保护代码的引文列表。 | 数组 |
codeCitations.license | 与检测到的代码关联的许可证类型。 | 字符串 |
codeCitations.sourceUrls | GitHub 存储库中检测到受保护代码的 URL 列表。 | 字符串数组 |
清理资源
如果想要清理并移除 Azure AI 服务订阅,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。
相关内容
- 受保护材料检测概念
- 使用 Content Safety Studio 为每个类别配置筛选器并测试数据集,导出代码并部署。