다음을 통해 공유


빠른 시작: 코드용 보호자료감지(미리 보기)

코드용 보호자료 기능은 기존 GitHub 리포지토리의 코드와 일치하는 AI 출력을 식별하기 위한 포괄적인 솔루션을 제공합니다. 이 기능을 사용하면 최종 사용자에게 투명성을 높이고 조직 정책 준수를 촉진하는 방식으로 코드 생성 모델을 자신 있게 사용할 수 있습니다.

주의

콘텐츠 보안 서비스의 코드 스캐너/인덱서는 2021년 11월 6일까지만 유효합니다. 이 날짜 이후에 GitHub에 추가된 코드는 검색되지 않습니다. 코드용 보호자료를 사용하여 최근 코드 본문을 검색할 때는 사용자 고유의 재량권을 사용합니다.

AI 생성 코드에 대한 코드용 보호자료감지 기능의 주요 목표는 다음과 같습니다.

  • AI 모델이 생성한 보호된 코드의 표시를 감지하고 방지합니다.
  • 조직에서 AI 생성 코드와 관련된 위험을 관리할 수 있도록 합니다.
  • AI 생성 코드가 법적, 윤리적, 조직적 정책 표준을 준수하는지 확인합니다.

보호자료감지에 대한 자세한 내용은 보호자료감지 개념 페이지를 참조하세요. API 입력 제한에 대해서는 개요의 입력 요구 사항 섹션을 참조하세요.

필수 조건

  • Azure 구독 - 체험 구독 만들기
  • Azure 구독이 있으면 Azure Portal에서 콘텐츠 안전 리소스를 생성하여 키와 엔드포인트를 가져옵니다. 리소스의 고유한 이름을 입력하고 구독을 선택한 다음 리소스 그룹, 지원되는 지역(지역 가용성 참조) 및 지원되는 가격 책정 계층을 선택합니다. 다음으로 만들기를 선택합니다.
    • 리소스를 배포하는 데 몇 분 정도 걸립니다. 완료되면 리소스로 이동을 선택합니다. 왼쪽 창의 리소스 관리에서 구독 키 및 엔드포인트를 선택합니다. 엔드포인트와 키 중 하나는 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에 포함되어야 합니다.

이름 필수 여부 설명 Type
API 버전 Required 확인할 API 버전입니다. 현재 버전은 api-version=2024-09-15-preview입니다. 예: <endpoint>/contentsafety/text:detectProtectedMaterialForCode?api-version=2024-09-15-preview 문자열

요청 본문의 매개 변수는 다음 표에 정의되어 있습니다.

이름 필수 여부 설명 Type
code Required 확인할 원시 코드입니다. 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 필드는 다음과 같이 정의됩니다.

이름 Description Type
protectedMaterialAnalysis 감지된 보호 코드에 대한 세부 정보를 포함하는 분석 결과입니다. Object
감지됨 GitHub 리포지토리에서 보호자료가 감지되었는지 여부를 나타냅니다. Boolean
codeCitations 보호 코드가 발견된 인용 목록입니다. 배열
codeCitations.license 감지된 코드와 연결된 라이선스 유형입니다. 문자열
codeCitations.sourceUrls 보호 코드가 감지된 GitHub 리포지토리의 URL 목록입니다. 문자열 배열

리소스 정리

Azure AI 서비스 구독을 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.