次の方法で共有


クイック スタート: コード用の保護されたマテリアルの検出 (プレビュー)

Protected Material for Code 機能は、既存のGitHub リポジトリのコードに一致する AI 出力を識別するための包括的なソリューションを提供します。 この機能を使用すると、エンド ユーザーに対する透明性を高め、組織のポリシーへのコンプライアンスを促進する方法で、コード生成モデルを自信を持って使用できます。

注意

Content Safety サービスのコード スキャナー/インデクサーは、2023 年 4 月 6 日までのみ最新です。 この日付より後にGitHubに追加されたコードは検出されません。 コード用の保護されたマテリアルを使用して最近のコードの本文を検出する場合は、お客様の独自の判断で使用してください。

AI によって生成されたコードを対象とするコード用の保護されたマテリアルの検出機能の主な目的は次のとおりです。

  • AI モデルによって生成された保護されたコードの開示を検出して防止するため。
  • AI によって生成されたコードに関連するリスクを組織が管理できるようにするため。
  • AI によって生成されたコードが、法的、倫理的、組織のポリシー標準に準拠していることを確認するため。

保護されたマテリアルの検出の詳細については、保護されたマテリアルの検出の概念ページを参照してください。 API 入力の制限については、「概要」の「入力の要件」セクションを参照してください。

前提条件

設定

次の手順に従って、Content Safety の [試行] ページを使用します。

  1. Azure AI Foundry に移動して、プロジェクトまたはハブに進みます。 次に、左側のナビゲーションの [Guardrails + controls ] タブを選択し、[ 試してみる ] タブを選択します。
  2. [ してみる] ページでは、テキストや画像コンテンツなどのさまざまな Guardrails およびコントロール機能を試し、調整可能なしきい値を使用して不適切または有害なコンテンツをフィルター処理できます。

ラベルとナビゲーションは、ポータルの更新によって異なる場合があります。 Guardrails + コントロールが表示されない場合は、プロジェクト内でコンテンツの安全性の試してみるエクスペリエンスを探してください。

Guardrails とコントロールの [試してみる] ページのスクリーンショット。

保護されたマテリアルの検出を使用する

この機能は、既知の保護されたテキスト (曲の歌詞、記事、レシピ、選択した Web コンテンツなど) または保護されたコード コンテンツについて、AI によって生成された出力をスキャンします。

  1. テキストをスキャンする場合は [保護された素材の検出] を選択し、コードをスキャンする場合は [保護された素材の検出] を選択します。
  2. テスト用のテキストまたはコードを貼り付けます。 最適な結果を得るには、ユーザーが作成するプロンプトではなく、LLM の生成結果をテストします。
  3. [テストの実行] を選択します。 サービスから、保護されたコンテンツの結果が返されます。

詳細については、保護されたマテリアルの概念ガイドを参照してください。

前提条件

  • Azure サブスクリプション - 無料で作成します
  • Azure サブスクリプションを取得したら、Azure ポータルにコンテンツ セーフティ リソース を作成して、キーとエンドポイントを取得します。 リソースの一意の名前を入力し、サブスクリプションを選択して、リソース グループ、サポートされているリージョン (「利用可能なリージョン」を参照)、サポートされている価格レベルを選択します。 次に、[ 作成] を選択します。
    • リソースのデプロイには数分かかります。 完了したら、[ リソースに移動] を選択します。 左側のウィンドウの [ リソース管理] で、[ サブスクリプション キーとエンドポイント] を選択します。 エンドポイントといずれかのキーが、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 フィールドは次のように定義されています。

名前 説明 タイプ
保護された資料分析 検出された保護されたコードに関する詳細を含む分析結果。 オブジェクト
検出された GitHubリポジトリから保護されたマテリアルが検出されたかどうかを示します。 ブール値
codeCitations 保護されたコードが見つかった引用の一覧。 Array
codeCitations.license 検出されたコードに関連付けられているライセンスの種類。
codeCitations.sourceUrls 保護されたコードが検出されたGitHub リポジトリからの URL の一覧。 文字列のアレイ

トラブルシューティング

  • 401/403: エンドポイントと同じリソースに対して有効なキーを使用していることを確認します。
  • 機能を使用できません:リソースが保護されたマテリアル (コード) でサポートされているリージョンに存在するかどうかを確認します。
  • 無効な入力長: code 文字列が最小長を満たし、最大値以下であることを確認します ( 入力要件を参照)。

リソースをクリーンアップする

Azure AI services サブスクリプションをクリーンアップして削除する場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。