程式碼的受保護素材功能提供完整的解決方案,以識別符合現有 GitHub 存放庫程式碼的 AI 輸出。 這項功能可讓您自信地使用程式代碼產生模型,以增強終端使用者的透明度,並提升組織原則的合規性。
警告
Content Safety 服務的程式代碼掃描器/索引器僅適用於 2023 年 4 月 6 日。 將不會偵測到此日期之後新增至 GitHub 的程式代碼。 使用 Protected Material for Code 來偵測最近的程式碼主體時,請自行判斷。
AI 產生的程式碼之受保護素材偵測功能的主要目標是:
- 偵測並防止顯示 AI 模型所產生的受保護程式碼。
- 讓組織能夠管理與 AI 產生的程式碼相關聯的風險。
- 為了確保 AI 產生的程式碼符合法律、道德和組織政策標準。
如需關於受(版權)保護素材偵測的詳細資訊,請參閱受(版權)保護素材偵測概念頁面。 如需 API 輸入限制,請參閱概觀的輸入要求一節。
必要條件
- Azure 帳戶。 如果您沒有,可以免費建立一個。
- 「Azure AI」資源。
設定
請遵循下列步驟,使用內容安全性 試用 頁面:
- 移至 Azure AI Foundry 並流覽至您的專案/中樞。 然後選取左側導覽上的 [ 護欄 + 控件 ] 索引卷標,然後選取 [ 試用] 索引標籤。
- 在 [ 試用] 頁面上,您可以使用可調整的閾值來篩選不適當或有害內容的各種護欄和控件功能,例如文字和影像內容。
使用受(版權)保護素材偵測
此功能會掃描 AI 產生的文字,以取得已知的文字內容(例如歌曲歌詞、文章、食譜、選取的 Web 內容)。
- 選取 [針對文字的受(版權)保護素材偵測],或 [針對程式碼的受(版權)保護素材偵測] 面板。
- 選取頁面上的範例文字,或輸入您自己的文字進行測試。
- 選取 [執行測試]。 服務會傳回受保護的內容結果。
如需詳細資訊,請參閱 受保護的材料概念指南。
必要條件
- 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 |
字串 |
請求正文中的參數在此表中列出並定義:
名稱 | 是必要的嗎? | 描述 | 類型 |
---|---|---|---|
程式碼 | 必須 | 這是要檢查的原始程式碼。 可以包含其他非 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 | 找到受保護程式碼的引文清單。 | 陣列 |
codeCitations.license | 與偵測到的程式碼相關聯的授權類型。 | 字串 |
codeCitations.sourceUrls | 在這些 GitHub 存放庫中偵測到受保護程式碼的 URL 清單。 | 字串的陣列 |
清除資源
如果您想要清除和移除 Azure AI 服務訂用帳戶,則可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。
相關內容
- 受(版權)保護素材偵測概念
- 使用 Content Safety Studio 設定每個類別和測試資料集的篩選,匯出程式碼並部署。