다음을 통해 공유


Azure OpenAI에서 차단 목록 사용

구성 가능한 콘텐츠 필터는 대부분의 콘텐츠 조정 요구 사항에 충분합니다. 그러나 사용 사례와 관련된 용어를 필터링해야 할 수 있습니다.

필수 구성 요소

  • Azure 구독 체험 계정 만들기
  • Azure 구독을 보유한 후에는 Azure Portal에서 Azure OpenAI 리소스를 만들어 토큰, 키 및 엔드포인트를 가져옵니다. 리소스의 고유한 이름을 입력하고, 신청서에 입력한 구독을 선택하고, 리소스 그룹, 지원되는 지역 및 지원되는 가격 책정 계층을 선택합니다. 다음으로 만들기를 선택합니다.
    • 리소스를 배포하는 데 몇 분 정도 걸립니다. 완료되면 리소스로 이동을 선택합니다. 왼쪽 창의 리소스 관리에서 구독 키 및 엔드포인트를 선택합니다. 엔드포인트와 키 중 하나는 API를 호출하는 데 사용됩니다.
  • Azure CLI 설치됨
  • cURL 설치

차단 목록 사용

Azure OpenAI API를 사용하여 차단 목록을 만들 수 있습니다. 다음 단계는 시작하는 데 도움이 됩니다.

토큰 가져오기

먼저 차단 목록을 만들고 편집하고 삭제하기 위해 API에 액세스하기 위한 토큰을 가져와야 합니다. 다음 Azure CLI 명령을 사용하여 이 토큰을 가져올 수 있습니다.

az account get-access-token 

차단 목록 만들기 또는 수정

아래 cURL 명령을 텍스트 편집기에 복사하고 다음과 같이 변경합니다.

  1. {subscriptionId}를 구독 ID로 바꿉니다.
  2. {resourceGroupName}을 리소스 그룹 이름으로 바꿉니다.
  3. {accountName}을 리소스 이름으로 바꿉니다.
  4. {raiBlocklistName}(URL)을 목록의 사용자 지정 이름으로 바꿉니다. 허용되는 문자: 0-9, A-Z, a-z, - . _ ~.
  5. {token}을 위의 "토큰 가져오기" 단계에서 얻은 토큰으로 바꿉니다.
  6. 선택적으로 "description" 필드의 값을 사용자 지정 설명으로 바꿉니다.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}?api-version=2024-04-01-preview' \ 
--header 'Authorization: Bearer {token}' \ 
--header 'Content-Type: application/json' \ 
--data-raw '{ 
    "properties": { 
        "description": "This is a prompt blocklist"  
    } 
}' 

응답 코드는 201(새 목록 만들기) 또는 200(기존 목록 업데이트)이어야 합니다.

콘텐츠 필터에 차단 목록 적용

콘텐츠 필터를 아직 만들지 않은 경우 Azure AI Foundry에서 만들 수 있습니다. 콘텐츠 필터링을 참조 하세요.

콘텐츠 필터에 완료 차단 목록을 적용하려면 다음 cURL 명령을 사용합니다.

  1. {subscriptionId}를 구독 ID로 바꿉니다.
  2. {resourceGroupName}을 리소스 그룹 이름으로 바꿉니다.
  3. {accountName}을 리소스 이름으로 바꿉니다.
  4. {raiPolicyName}을 콘텐츠 필터의 이름으로 바꿉니다.
  5. {token}을 위의 "토큰 가져오기" 단계에서 얻은 토큰으로 바꿉니다.
  6. 선택적으로 차단 목록을 AI 모델 완성 대신 사용자 프롬프트에 적용하려는 경우 제목 "promptBlocklists" 을 변경 "completionBlocklists" 합니다.
  7. 본문에서 목록의 사용자 지정 이름으로 바꿉 "raiBlocklistName" 습니다. 허용되는 문자: 0-9, A-Z, a-z, - . _ ~.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiPolicies/{raiPolicyName}?api-version=2024-04-01-preview' \ 
--header 'Authorization: Bearer {token}' \ 
--header 'Content-Type: application/json' \ 
--data-raw '{ 
    "properties": { 
        "basePolicyName": "Microsoft.Default", 
        "completionBlocklists": [{ 
            "blocklistName": "raiBlocklistName", 
            "blocking": true 
        }], 
        "contentFilters": [ ] 
    } 
}' 

목록에 blockItems 추가

참고 항목

한 목록에는 최대 10,000개의 용어가 허용됩니다.

아래 cURL 명령을 텍스트 편집기에 복사하고 다음과 같이 변경합니다.

  1. {subscriptionId}를 구독 ID로 바꿉니다.
  2. {resourceGroupName}을 리소스 그룹 이름으로 바꿉니다.
  3. {accountName}을 리소스 이름으로 바꿉니다.
  4. {raiBlocklistName}(URL)을 목록의 사용자 지정 이름으로 바꿉니다. 허용되는 문자: 0-9, A-Z, a-z, - . _ ~.
  5. {raiBlocklistItemName}을 목록 항목의 사용자 지정 이름으로 바꿉니다.
  6. {token}을 위의 "토큰 가져오기" 단계에서 얻은 토큰으로 바꿉니다.
  7. "blocking pattern" 필드의 값을 차단 목록에 추가하려는 항목으로 바꿉니다. blockItem의 최대 길이는 1000자입니다. 또한 패턴이 정규식인지 또는 정확한 일치인지를 지정합니다.
curl --location --request PUT 'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/raiBlocklists/{raiBlocklistName}/raiBlocklistItems/{raiBlocklistItemName}?api-version=2024-04-01-preview' \ 
--header 'Authorization: Bearer {token}' \ 
--header 'Content-Type: application/json' \ 
--data-raw '{  
    "properties": {  
        "pattern": "blocking pattern",  
        "isRegex": false  
    }  
}' 

참고 항목

새 용어가 차단 목록에 추가되는 데 약 5분이 걸릴 수 있습니다. 5분 후에 테스트하세요.

응답 코드는 200여야 합니다.

{ 
  "name": "raiBlocklistItemName", 
  "id": "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.CognitiveServices/accounts/accountName/raiBlocklists/raiBlocklistName/raiBlocklistItems/raiBlocklistItemName", 
  "properties": { 
    "pattern": "blocking pattern", 
    "isRegex": false 
  } 
} 

차단 목록으로 텍스트 분석

이제 차단 목록이 있는 배포를 테스트할 수 있습니다. Azure OpenAI 엔드포인트를 호출하는 방법에 대한 지침은 빠른 시작을 참조 하세요.

아래 예제에서는 차단 목록이 있는 GPT-35-Turbo 배포가 프롬프트를 차단하고 있습니다. 응답은 400 오류를 반환합니다.

{ 
    "error": { 
        "message": "The response was filtered due to the prompt triggering Azure OpenAI’s content management policy. Please modify your prompt and retry. To learn more about our content filtering policies please read our documentation: https://go.microsoft.com/fwlink/?linkid=2198766", 
        "type": null, 
        "param": "prompt", 
        "code": "content_filter", 
        "status": 400, 
        "innererror": { 
            "code": "ResponsibleAIPolicyViolation", 
            "content_filter_result": { 
                "custom_blocklists": [ 
                    { 
                        "filtered": true, 
                        "id": "raiBlocklistName" 
                    } 
                ], 
                "hate": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "self_harm": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "sexual": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "violence": { 
                    "filtered": false, 
                    "severity": "safe" 
                } 
            } 
        } 
    } 
} 

완료 자체가 차단되면 차단 목록 콘텐츠가 일치할 때만 완료가 차단되므로 응답이 200을 반환합니다. 주석은 차단 목록이 일치했음을 보여 줍니다.

{ 
    "id": "chatcmpl-85NkyY0AkeBMunOjyxivQSiTaxGAl", 
    "object": "chat.completion", 
    "created": 1696293652, 
    "model": "gpt-35-turbo", 
    "prompt_filter_results": [ 
        { 
            "prompt_index": 0, 
            "content_filter_results": { 
                "hate": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "self_harm": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "sexual": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "violence": { 
                    "filtered": false, 
                    "severity": "safe" 
                } 
            } 
        } 
    ], 
    "choices": [ 
        { 
            "index": 0, 
            "finish_reason": "content_filter", 
            "message": { 
                "role": "assistant" 
            }, 
            "content_filter_results": { 
                "custom_blocklists": [ 
                    { 
                        "filtered": true, 
                        "id": "myBlocklistName" 
                    } 
                ], 
                "hate": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "self_harm": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "sexual": { 
                    "filtered": false, 
                    "severity": "safe" 
                }, 
                "violence": { 
                    "filtered": false, 
                    "severity": "safe" 
                } 
            } 
        } 
    ], 
    "usage": { 
        "completion_tokens": 75, 
        "prompt_tokens": 27, 
        "total_tokens": 102 
    } 
} 

다음 단계