你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:受保护的代码材料检测(预览版)

代码受保护材料功能提供了一个综合解决方案来识别与现有 GitHub 存储库中代码匹配的 AI 输出。 此功能允许你自信地使用代码生成模型,从而增强最终用户的透明度并提升对组织策略的符合性。

注意

内容安全服务的代码扫描程序/索引器仅适用于 2023 年 4 月 6 日。 不会检测到在此日期之后添加到 GitHub 的代码。 在使用受保护代码材料检测最新的代码主体时,请自行判断。

针对 AI 生成的代码,受保护代码材料检测功能的主要目标如下:

  • 检测和防止显示 AI 模型生成的受保护代码。
  • 使组织能够管理与 AI 生成的代码相关的风险。
  • 确保 AI 生成的代码符合法律、道德和组织策略标准。

有关受保护材料检测的详细信息,请参阅受保护材料检测概念页面。 如需了解 API 输入限制,请参阅“概述”的输入要求部分。

先决条件

设置

按照以下步骤使用内容安全试用页面

  1. 转到 Azure AI Foundry 并导航到你的项目/中心。 然后选择左侧导航栏上的 Guardrails + 控件 选项卡,然后选择“ 试用 ”选项卡。
  2. “试用”页面上,您可以尝试包括文本和图像内容在内的多种保护措施和控件功能,并使用可调整的阈值来筛选不当或有害内容。

Guardrails 和控件试用页面的屏幕截图。

使用受保护材料检测

此功能扫描 AI 生成的文本以查找已知文本内容(例如歌词、文章、食谱、选定的 Web 内容)。

  1. 选择“文本受保护材料检测”或“代码受保护材料检测”面板
  2. 选择页面上的示例文本,或输入自己的内容进行测试。
  3. 选择“运行测试”。 该服务返回受保护的内容结果。

有关详细信息,请参阅受保护的材料概念指南

先决条件

  • Azure 订阅 - 免费创建订阅
  • 拥有 Azure 订阅后,请在 Azure 门户中创建 Content Safety 资源 ,以获取密钥和终结点。 输入资源的唯一名称,选择订阅,并选择资源组、支持的区域(请参阅上市区域)和支持的定价层。 然后选择“创建”。
    • 部署资源需要几分钟时间。 完成后,选择“转到资源”。 在左侧窗格中的“资源管理”下,选择“订阅密钥和终结点”。 终结点和任一密钥都用于调用 API。
  • 已安装 cURL

分析代码以检测受保护材料

下一部分介绍使用 cURL 进行请求的示例。 将以下命令粘贴到文本编辑器,并进行以下更改。

  1. <endpoint> 替换为与资源关联的终结点 URL。
  2. <your_subscription_key> 替换为资源附带的密钥之一。
  3. (可选)将正文中的 "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 包含有关检测到的受保护代码的详细信息的分析结果。 物体
detected 指示是否检测到 GitHub 存储库中的受保护材料。 布尔
codeCitations 找到受保护代码的引文列表。 数组
codeCitations.license 与检测到的代码关联的许可证类型。 字符串
codeCitations.sourceUrls GitHub 存储库中检测到受保护代码的 URL 列表。 字符串数组

清理资源

如果想要清理并移除 Azure AI 服务订阅,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。