クイック スタート: コード用の保護されたマテリアルの検出 (プレビュー)
コード用の保護されたマテリアル機能は、既存の GitHub リポジトリのコードと一致する AI 出力を識別するための包括的なソリューションを提供します。 この機能により、エンド ユーザーに対する透明性が向上し、組織のポリシーへのコンプライアンスが促進される形で、自信を持ってコード生成モデルを使用できるようになります。
注意事項
コンテンツ セーフティ サービスのコード スキャナー/インデクサーが最新なのは、2021 年 11 月 6 日までです。 この日付より後に GitHub に追加されたコードは検出されません。 コード用の保護されたマテリアルを使用して最近のコードの本文を検出する場合は、お客様の独自の判断で使用してください。
AI によって生成されたコードを対象とするコード用の保護されたマテリアルの検出機能の主な目的は次のとおりです。
- AI モデルによって生成された保護されたコードの開示を検出して防止するため。
- AI によって生成されたコードに関連するリスクを組織が管理できるようにするため。
- AI によって生成されたコードが、法的、倫理的、組織のポリシー標準に準拠していることを確認するため。
保護されたマテリアルの検出の詳細については、保護されたマテリアルの検出の概念ページを参照してください。 API 入力の制限については、「概要」の「入力の要件」セクションを参照してください。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure サブスクリプションを入手したら、Azure portal で Content Safety リソースを作成し、キーとエンドポイントを取得します。 リソースの一意の名前を入力し、サブスクリプションを選択して、リソース グループ、サポートされているリージョン (「利用可能なリージョン」を参照)、サポートされている価格レベルを選択します。 [作成] を選択します。
- リソースのデプロイには数分かかります。 完了したら、[リソースに移動] を選びます。 左ペインの [リソース管理] で、[サブスクリプション キーとエンドポイント] を選びます。 エンドポイントといずれかのキーが、API の呼び出しに使われます。
- インストールされた
[ cURL](https://curl.haxx.se/)
保護済み素材の検出のためにコードを分析する
次のセクションでは、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 |
String |
要求本文のパラメーターは、次の表のように定義されています。
名前 | 必須 | 説明 | Type |
---|---|---|---|
code | 必須 | これは、確認する生のコードです。 他の非 ASCII 文字も含めることができます。 | String |
"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 フィールドは次のように定義されています。
名前 | Description | Type |
---|---|---|
protectedMaterialAnalysis | 検出された保護されたコードに関する詳細を含む分析結果。 | Object |
detected | GitHub リポジトリから保護されたマテリアルが検出されたかどうかを示します。 | Boolean |
codeCitations | 保護されたコードが見つかった引用の一覧。 | Array |
codeCitations.license | 検出されたコードに関連付けられているライセンスの種類。 | String |
codeCitations.sourceUrls | 保護されたコードが検出された GitHub リポジトリからの URL の一覧。 | 文字列のアレイ |
リソースをクリーンアップする
Azure AI サービス サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。
関連するコンテンツ
- 保護されたマテリアルの検出の概念
- Content Safety Studio を使って各カテゴリのフィルターを構成し、データセットでテストし、コードをエクスポートしてデプロイします。