빠른 시작: 코드용 보호자료감지(미리 보기)
코드용 보호자료 기능은 기존 GitHub 리포지토리의 코드와 일치하는 AI 출력을 식별하기 위한 포괄적인 솔루션을 제공합니다. 이 기능을 사용하면 최종 사용자에게 투명성을 높이고 조직 정책 준수를 촉진하는 방식으로 코드 생성 모델을 자신 있게 사용할 수 있습니다.
주의
콘텐츠 보안 서비스의 코드 스캐너/인덱서는 2021년 11월 6일까지만 유효합니다. 이 날짜 이후에 GitHub에 추가된 코드는 검색되지 않습니다. 코드용 보호자료를 사용하여 최근 코드 본문을 검색할 때는 사용자 고유의 재량권을 사용합니다.
AI 생성 코드에 대한 코드용 보호자료감지 기능의 주요 목표는 다음과 같습니다.
- AI 모델이 생성한 보호된 코드의 표시를 감지하고 방지합니다.
- 조직에서 AI 생성 코드와 관련된 위험을 관리할 수 있도록 합니다.
- AI 생성 코드가 법적, 윤리적, 조직적 정책 표준을 준수하는지 확인합니다.
보호자료감지에 대한 자세한 내용은 보호자료감지 개념 페이지를 참조하세요. API 입력 제한에 대해서는 개요의 입력 요구 사항 섹션을 참조하세요.
필수 조건
- Azure 구독 - 체험 구독 만들기
- Azure 구독이 있으면 Azure Portal에서 콘텐츠 안전 리소스를 생성하여 키와 엔드포인트를 가져옵니다. 리소스의 고유한 이름을 입력하고 구독을 선택한 다음 리소스 그룹, 지원되는 지역(지역 가용성 참조) 및 지원되는 가격 책정 계층을 선택합니다. 다음으로 만들기를 선택합니다.
- 리소스를 배포하는 데 몇 분 정도 걸립니다. 완료되면 리소스로 이동을 선택합니다. 왼쪽 창의 리소스 관리에서 구독 키 및 엔드포인트를 선택합니다. 엔드포인트와 키 중 하나는 API를 호출하는 데 사용됩니다.
- cURL 설치
보호자료감지를 위한 코드 분석
다음 섹션에서는 cURL을 사용한 샘플 요청을 안내합니다. 아래 명령을 텍스트 편집기에 붙여넣고 다음과 같이 변경합니다.
<endpoint>
을(를) 리소스와 연결된 엔드포인트 URL로 바꾸세요.<your_subscription_key>
을 리소스와 함께 제공되는 키 중 하나로 바꾸세요.- 선택적으로 본문의
"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 서비스 구독을 정리하고 제거하려면 리소스 또는 리소스 그룹을 삭제할 수 있습니다. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.
관련 콘텐츠
- 보호자료감지:
- 각 범주에 대한 필터를 구성하고 콘텐츠 안전 스튜디오를 사용하여 데이터 세트에서 테스트하고 코드를 내보내고 배포합니다.