Udostępnij za pośrednictwem


Szybki start: wykrywanie materiałów chronionych dla kodu (wersja zapoznawcza)

Funkcja Chroniony materiał dla kodu udostępnia kompleksowe rozwiązanie do identyfikowania danych wyjściowych sztucznej inteligencji pasujących do kodu z istniejących repozytoriów GitHub. Ta funkcja umożliwia korzystanie z modeli generowania kodu w sposób, który zwiększa przejrzystość dla użytkowników końcowych i promuje zgodność z zasadami organizacji.

Uwaga

Skaner/indeksator kodu usługi bezpieczeństwa zawartości jest obecny tylko do 6 listopada 2021 r. Kod dodany do usługi GitHub po tej dacie nie zostanie wykryty. Użyj własnego uznania w przypadku używania materiałów chronionych dla kodu do wykrywania ostatnich treści kodu.

Kluczowe cele funkcji wykrywania materiałów chronionych dla kodu dla kodu generowanego przez sztuczną inteligencję to:

  • Aby wykryć i zapobiec wyświetlaniu chronionego kodu generowanego przez modele sztucznej inteligencji.
  • Aby umożliwić organizacjom zarządzanie ryzykiem skojarzonym z kodem generowanym przez sztuczną inteligencję.
  • Aby upewnić się, że kod generowany przez sztuczną inteligencję jest zgodny ze standardami prawnymi, etycznymi i organizacyjnymi.

Aby uzyskać więcej informacji na temat wykrywania chronionych materiałów, zobacz stronę Pojęcia dotyczące wykrywania chronionych materiałów. Aby uzyskać informacje o limitach danych wejściowych interfejsu API, zobacz sekcję Wymagania dotyczące danych wejściowych w sekcji Przegląd.

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Po utworzeniu subskrypcji platformy Azure utwórz zasób Bezpieczeństwo zawartości w witrynie Azure Portal, aby uzyskać klucz i punkt końcowy. Wprowadź unikatową nazwę zasobu, wybierz subskrypcję i wybierz grupę zasobów, obsługiwany region (zobacz Dostępność regionu) i obsługiwaną warstwę cenową. Następnie wybierz Utwórz.
    • Wdrożenie zasobu trwa kilka minut. Po zakończeniu wybierz pozycję Przejdź do zasobu. W okienku po lewej stronie w obszarze Zarządzanie zasobami wybierz pozycję Klucz subskrypcji i punkt końcowy. Punkt końcowy i jeden z kluczy są używane do wywoływania interfejsów API.
  • Zainstalowano bibliotekę cURL

Analizowanie kodu na potrzeby wykrywania chronionych materiałów

W poniższej sekcji przedstawiono przykładowe żądanie z biblioteką cURL. Wklej poniższe polecenie do edytora tekstów i wprowadź następujące zmiany.

  1. Zastąp ciąg <endpoint> adresem URL punktu końcowego skojarzonym z zasobem.
  2. Zastąp <your_subscription_key> element jednym z kluczy, które są dostarczane z zasobem.
  3. Opcjonalnie zastąp "code" pole w treści własnym kodem, który chcesz przeanalizować.

    Napiwek

    Zobacz Wymagania dotyczące danych wejściowych, aby uzyskać informacje o maksymalnych ograniczeniach długości kodu. Wykrywanie materiałów chronionych ma być uruchamiane po zakończeniu llM, a nie na monitach użytkownika.

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

Poniższe pola muszą być uwzględnione w adresie URL:

Nazwisko Wymagany? opis Type
Wersja interfejsu API Wymagania Jest to wersja interfejsu API do sprawdzenia. Bieżąca wersja to: api-version=2024-09-15-preview. Przykład: <endpoint>/contentsafety/text:detectProtectedMaterialForCode?api-version=2024-09-15-preview String

Parametry w treści żądania są zdefiniowane w tej tabeli:

Nazwisko Wymagany? opis Type
kod Wymagania Jest to kod pierwotny do sprawdzenia. Można uwzględnić inne znaki inne niż ascii. String

Zobacz następującą przykładową wartość "code" pola:

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

Otwórz okno wiersza polecenia i uruchom polecenie cURL.

Interpretowanie odpowiedzi interfejsu API

Powinny zostać wyświetlone wyniki wykrywania chronionych materiałów jako dane JSON w danych wyjściowych konsoli. Na przykład:

{
    "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"
                ]
            }
        ]
    }
}

Pola JSON w danych wyjściowych są zdefiniowane tutaj:

Nazwa/nazwisko opis Type
protectedMaterialAnalysis Wyniki analizy zawierające szczegółowe informacje o wykrytym chronionym kodzie. Objekt
Wykryte Wskazuje, czy wykryto materiał chroniony z repozytoriów GitHub. Wartość logiczna
codeCitations Lista cytatów, w których znaleziono chroniony kod. Tablica
codeCitations.license Typ licencji skojarzony z wykrytym kodem. String
codeCitations.sourceUrls Lista adresów URL z repozytoriów GitHub, w których wykryto chroniony kod. Tablica ciągów

Czyszczenie zasobów

Jeśli chcesz wyczyścić i usunąć subskrypcję usług Azure AI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów.