다음을 통해 공유


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

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

주의

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

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

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

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

필수 조건

설치

콘텐츠 안전 사용해 보기 페이지를 사용하려면 다음 단계를 수행합니다.

  1. Azure AI 파운드리로 이동한 다음 프로젝트/허브로 이동합니다. 그런 다음 왼쪽 탐색에서 Guardrails + 컨트롤 탭을 선택하고 사용해 보기 탭을 선택합니다.
  2. 사용해 보기 페이지에서 조정 가능한 임계값을 사용하여 부적절하거나 유해한 콘텐츠를 필터링하여 텍스트 및 이미지 콘텐츠와 같은 다양한 Guardrails 및 컨트롤 기능을 실험할 수 있습니다.

Guardrails 및 컨트롤에 대한 사용해 보기 페이지의 스크린샷.

보호된 재료 검색 사용

이 기능은 AI에서 생성된 텍스트에서 알려진 텍스트 콘텐츠(예: 노래 가사, 기사, 레시피, 선택한 웹 콘텐츠)를 검색합니다.

  1. 텍스트또는 코드 패널의 보호된 자료 검색에 대한 보호된 자료 검색을 선택합니다.
  2. 페이지에서 샘플 텍스트를 선택하거나 테스트를 위해 직접 입력합니다.
  3. 테스트 실행을 선택합니다. 서비스는 보호된 콘텐츠 결과를 반환합니다.

자세한 내용은 보호된 재질 개념 가이드를 참조 하세요.

필수 조건

  • 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에 포함되어야 합니다.

이름 필수 여부 설명 유형
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 리포지토리에서 보호자료가 감지되었는지 여부를 나타냅니다. 불리언 (Boolean)
codeCitations 보호 코드가 발견된 인용 목록입니다. 배열
codeCitations.license 감지된 코드와 연결된 라이선스 유형입니다. 문자열
codeCitations.sourceUrls 보호 코드가 감지된 GitHub 리포지토리의 URL 목록입니다. 문자열 배열

리소스 정리

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