Snabbstart: Skyddad materialidentifiering för kod (förhandsversion)

Funktionen Skyddat material för kod ger en omfattande lösning för att identifiera AI-utdata som matchar kod från befintliga GitHub-lagringsplatser. Med den här funktionen kan kodgenereringsmodeller användas säkert, på ett sätt som förbättrar transparensen för slutanvändarna och främjar efterlevnaden av organisationens principer.

Varning

Innehållssäkerhetstjänstens kodskanner/indexerare är endast aktuell till och med den 6 november 2021. Kod som lades till i GitHub efter det här datumet identifieras inte. Använd ditt eget omdöme när du använder skyddat material för kod för att identifiera de senaste kodkropparna.

Huvudmålen för funktionen Skyddad materialidentifiering för kod för AI-genererad kod är:

  • För att identifiera och förhindra visning av skyddad kod som genereras av AI-modeller.
  • Så här gör du det möjligt för organisationer att hantera risker som är associerade med AI-genererad kod.
  • För att säkerställa att AI-genererad kod uppfyller juridiska, etiska och organisatoriska policystandarder.

Mer information om identifiering av skyddat material finns på sidan koncept för skydd av materialidentifiering. För API-indatabegränsningar, se avsnittet Indatakrav i översikten.

Förutsättningar

  • En Azure-prenumeration – Skapa en kostnadsfritt
  • När du har din Azure-prenumeration skapar du en Content Safety-resurs i Azure Portal för att hämta din nyckel och slutpunkt. Ange ett unikt namn för resursen, välj din prenumeration och välj en resursgrupp, region som stöds (se Regiontillgänglighet) och prisnivå som stöds. Välj sedan Skapa.
    • Det tar några minuter att distribuera resursen. När den är klar väljer du Gå till resurs. I den vänstra rutan under Resurshantering väljer du Prenumerationsnyckel och Slutpunkt. Slutpunkten och någon av nycklarna används för att anropa API:er.
  • cURL installerat

Analysera kod för identifiering av skyddat material

I följande avsnitt går vi igenom en exempelbegäran med cURL. Klistra in kommandot nedan i en textredigerare och gör följande ändringar.

  1. Ersätt <endpoint> med slutpunkts-URL:en som är associerad med resursen.
  2. Ersätt <your_subscription_key> med en av nycklarna som medföljer resursen.
  3. Du kan också ersätta fältet "code" i brödtexten med din egen kod som du vill analysera.

    Dricks

    Se Indatakrav för maximala begränsningar för kodlängd. Skyddad materialidentifiering är avsedd att köras vid LLM-slutföranden, inte användaruppmaningar.

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()"
}'

Fälten nedan måste inkluderas i URL:en:

Name Obligatoriskt? beskrivning Typ
API-version Obligatoriskt Det här är DEN API-version som ska kontrolleras. Den aktuella versionen är: api-version=2024-09-15-preview. Exempel: <endpoint>/contentsafety/text:detectProtectedMaterialForCode?api-version=2024-09-15-preview String

Parametrarna i begärandetexten definieras i den här tabellen:

Name Obligatoriskt? beskrivning Typ
kod Obligatoriskt Det här är den råkod som ska kontrolleras. Andra tecken som inte är ascii-tecken kan inkluderas. String

Se följande exempelvärde för fältet "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()"
}

Öppna ett kommandotolksfönster och kör kommandot cURL.

Tolka API-svaret

Du bör se resultaten för identifiering av skyddat material som visas som JSON-data i konsolens utdata. Till exempel:

{
    "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-fälten i utdata definieras här:

Name beskrivning Typ
protectedMaterialAnalysis Analysresultat som innehåller information om identifierad skyddad kod. Objekt
Upptäckt Anger om skyddat material från GitHub-lagringsplatser har identifierats. Booleskt
codeCitations Lista över citat där den skyddade koden hittades. Matris
codeCitations.license Den licenstyp som är associerad med den identifierade koden. String
codeCitations.sourceUrls En lista över URL:er från GitHub-lagringsplatser där den skyddade koden identifierades. Matris med strängar

Rensa resurser

Om du vill rensa och ta bort en Azure AI-tjänstprenumeration kan du ta bort resursen eller resursgruppen. Om du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort.