Azure OpenAI에는 이미지 생성 모델을 포함하여 핵심 모델과 함께 작동하는 콘텐츠 필터링 시스템이 포함되어 있습니다. 이 시스템은 유해한 콘텐츠의 출력을 감지하고 방지하도록 설계된 분류 모델 집합을 통해 프롬프트와 완료를 모두 실행하여 작동합니다. 콘텐츠 필터링 시스템은 입력 프롬프트와 출력 완료 모두에서 잠재적으로 유해한 콘텐츠의 특정 범주를 탐지하고 조치를 취합니다. API 구성 및 애플리케이션 디자인의 변형은 완료 및 필터링 동작에 영향을 줄 수 있습니다.
중요합니다
콘텐츠 필터링 시스템은 Azure AI Foundry 모델의 Azure OpenAI에서 Whisper와 같은 오디오 모델에서 처리되는 프롬프트 및 완료에 적용되지 않습니다. Azure OpenAI의 오디오 모델에 대해 자세히 알아봅니다.
콘텐츠 필터링 시스템 외에도 Azure OpenAI는 모니터링을 수행하여 해당 제품 약관을 위반할 수 있는 방식으로 서비스 사용을 제안하는 콘텐츠 및/또는 동작을 검색합니다. 애플리케이션과 관련된 위험을 이해하고 완화하는 방법에 대한 자세한 내용은 Azure OpenAI에 대한 투명성 참고 사항을 참조하세요. 콘텐츠 필터링 및 남용 모니터링을 위해 데이터를 처리하는 방법에 대한 자세한 내용은 Azure OpenAI에 대한 데이터, 개인 정보 및 보안을 참조하세요.
이 섹션의 문서에서는 콘텐츠 필터링 범주, 필터링 심각도 수준 및 구성 가능성 및 애플리케이션 디자인 및 구현에서 고려할 API 시나리오에 대한 정보를 제공합니다.
비고
콘텐츠 필터링을 위해 프롬프트 또는 완료가 저장되지 않습니다. 동의 없이 콘텐츠 필터링 시스템을 학습, 재학습 또는 개선하는 데는 프롬프트 또는 완료가 사용되지 않습니다. 자세한 내용은 데이터, 개인 정보 및 보안을 참조하세요.
콘텐츠 필터 형식
Azure OpenAI에 통합된 콘텐츠 필터링 시스템에는 다음이 포함됩니다.
- 유해한 콘텐츠를 검색하고 필터링하는 것을 목표로 하는 인공신경망 다중 클래스 분류 모델 모델은 4가지 심각도 수준(안전, 낮음, 중간, 높음)에 걸쳐 4가지 범주(증오, 성적, 폭력, 자해)를 다룹니다. '안전' 심각도 수준에서 탐지된 콘텐츠는 주석에 레이블이 지정되지만 필터링 대상이 아니며 구성할 수 없습니다.
- 탈옥 위험과 알려진 텍스트 및 코드 콘텐츠를 검색하기 위한 기타 선택적 분류 모델, 이러한 모델은 사용자 또는 모델 동작이 탈옥 공격에 해당하는지 또는 알려진 텍스트 또는 소스 코드와 일치하는지 여부를 표시하는 이진 분류자입니다. 이러한 모델의 사용은 선택 사항이지만 고객 저작권 약정 적용 범위에는 보호된 자료 코드 모델을 사용해야 할 수 있습니다.
필터 범주
다음 표에는 Azure OpenAI의 콘텐츠 필터링 시스템에서 지원하는 위험 범주가 요약되어 있습니다.
카테고리 | 설명 |
---|---|
증오와 공정성 | 혐오 및 공정성 관련 피해는 특정 그룹의 특정 차별화 특성에 따라 개인 또는 정체성 그룹을 언급하여 공격하거나 차별적인 언어를 사용하는 모든 콘텐츠를 나타냅니다. 여기에는 다음이 포함되지만 이에 국한되지는 않습니다.
|
성적 | 성적 범주는 해부학적 기관 및 생식기, 낭만적인 관계 및 성행위, 에로틱하거나 애정 어린 용어로 묘사된 행위(자신의 의지에 반하는 폭행 또는 강제 성폭력 행위로 묘사되는 행위 포함)와 관련된 언어를 설명합니다. 여기에는 다음 문서가 포함됩니다(이에 국한되지 않음).
|
폭력 | 폭력 범주는 누군가 또는 사물을 해치거나 손상시키거나 죽이려는 의도의 신체적 행동과 관련된 언어를 설명하거나 무기, 총기, 관련 개체에 대해 설명합니다. 여기에는 다음이 포함되지만 이에 국한되지는 않습니다.
|
자해 | 자해란 의도적으로 자신의 신체를 다치게 하거나 손상시키거나 자살하려는 의도를 지닌 신체적 행동과 관련된 언어를 말합니다. 여기에는 다음이 포함되지만 이에 국한되지는 않습니다.
|
사용자 프롬프트 공격 | 사용자 프롬프트 공격은 생성형 AI 모델이 시스템 메시지에 설정된 규칙을 피하거나 위반하도록 학습된 동작을 나타내도록 유도하도록 설계된 사용자 프롬프트입니다. 이러한 공격은 복잡한 역할극부터 안전 목표를 교묘하게 전복하는 것까지 다양합니다. |
간접 공격 | 간접 프롬프트 공격 또는 교차 도메인 프롬프트 주입 공격이라고도 하는 간접 공격은 제3자가 생성형 AI 시스템이 액세스하고 처리할 수 있는 문서 내부에 악의적인 지침을 기입하는 잠재적인 취약성입니다. 문서 포함 및 서식 지정이 필요합니다. |
근거2 | 근거 감지는 LLM(큰 언어 모델)의 텍스트 응답이 사용자가 제공하는 원본 자료에 근거를 두는지 여부를 플래그로 표시합니다. 근거 없는 자료는 LLM이 원본 자료에 있던 것과 사실이 아니거나 부정확한 정보를 생성하는 경우를 나타냅니다. 문서 포함 및 서식 지정이 필요합니다. |
보호된 텍스트 자료1 | 보호 자료 텍스트는 대규모 언어 모델에서 출력할 수 있는 알려진 텍스트 콘텐츠(예: 노래 가사, 문서, 조리법 및 선택한 웹 콘텐츠)를 설명합니다. |
코드에 대한 보호된 자료 | 보호 자료 코드는 공용 리포지토리의 소스 코드 집합과 일치하는 소스 코드를 설명하며, 원본 리포지토리를 적절하게 인용하지 않고도 대규모 언어 모델로 출력할 수 있습니다. |
1 텍스트 자료의 소유자이며 보호를 위해 텍스트 콘텐츠를 제출하고 싶다면, 요청을 제출하세요.
2 비 스트리밍 시나리오에서는 사용할 수 없습니다. 스트리밍 시나리오에만 사용할 수 있습니다. 접지 검색을 지원하는 지역은 미국 중부, 미국 동부, 프랑스 중부 및 캐나다 동부입니다.
시나리오 세부 정보
콘텐츠 필터링 시스템이 유해한 콘텐츠를 탐지하면 프롬프트가 부적절하다고 간주되면 API 호출에 오류가 표시되거나 응답의 finish_reason
이 content_filter
가 되어 일부 완료가 필터링되었음을 나타냅니다. 애플리케이션이나 시스템을 구축할 때 Completions API에서 반환된 콘텐츠가 필터링되어 콘텐츠가 불완전해질 수 있는 시나리오를 고려해야 합니다. 이 정보에 대한 조치는 애플리케이션에 따라 다릅니다. 동작은 다음과 같이 요약될 수 있습니다.
- 필터링된 범주 및 심각도 수준에서 분류되는 프롬프트는 HTTP 400 오류를 반환합니다.
- 비 스트리밍 완료 호출은 콘텐츠가 필터링될 때 콘텐츠를 반환하지 않습니다.
finish_reason
값이 content_filter로 설정됩니다. 드물지만 긴 응답의 경우 부분적인 결과가 반환될 수 있습니다. 이러한 경우finish_reason
은 업데이트됩니다. - 스트리밍 완료 호출의 경우 세그먼트가 완료되면 사용자에게 다시 반환됩니다. 서비스는 중지 토큰, 길이에 도달하거나 필터링된 범주 및 심각도 수준으로 분류된 콘텐츠가 탐지될 때까지 스트리밍을 계속합니다.
시나리오: 여러 출력을 요청하는 비스트리밍 완료 호출을 보냅니다. 필터링된 범주 및 심각도 수준으로 분류된 콘텐츠가 없습니다.
아래 표에는 콘텐츠 필터링이 표시될 수 있는 다양한 방법이 요약되어 있습니다.
HTTP 응답 코드 | 응답 동작 |
---|---|
200 | 모든 세대가 구성된 필터를 통과하는 경우 콘텐츠 조정 세부 정보가 응답에 추가되지 않습니다. 각 세대의 finish_reason 은 정지 또는 길이로 결정됩니다. |
요청 페이로드 예:
{
"prompt":"Text example",
"n": 3,
"stream": false
}
응답 JSON 예:
{
"id": "example-id",
"object": "text_completion",
"created": 1653666286,
"model": "davinci",
"choices": [
{
"text": "Response generated text",
"index": 0,
"finish_reason": "stop",
"logprobs": null
}
]
}
시나리오: API 호출에서 여러 응답(N>1)을 요청하고 응답 중 하나 이상이 필터링됨
HTTP 응답 코드 | 응답 동작 |
---|---|
200 | 필터링된 세대는 finish_reason 의 content_filter 값을 갖습니다. |
요청 페이로드 예:
{
"prompt":"Text example",
"n": 3,
"stream": false
}
응답 JSON 예:
{
"id": "example",
"object": "text_completion",
"created": 1653666831,
"model": "ada",
"choices": [
{
"text": "returned text 1",
"index": 0,
"finish_reason": "length",
"logprobs": null
},
{
"text": "returned text 2",
"index": 1,
"finish_reason": "content_filter",
"logprobs": null
}
]
}
시나리오: 완료 API에 부적절한 입력 프롬프트가 전송됨(스트리밍 또는 비 스트리밍용)
HTTP 응답 코드 | 응답 동작 |
---|---|
400 | 프롬프트가 구성된 대로 콘텐츠 필터를 트리거하면 API 호출이 실패합니다. 프롬프트를 수정하고 다시 시도합니다. |
요청 페이로드 예:
{
"prompt":"Content that triggered the filtering model"
}
응답 JSON 예:
"error": {
"message": "The response was filtered",
"type": null,
"param": "prompt",
"code": "content_filter",
"status": 400
}
시나리오: 스트리밍 완료 호출을 합니다. 필터링된 범주 및 심각도 수준으로 분류된 출력 콘텐츠가 없습니다.
HTTP 응답 코드 | 응답 동작 |
---|---|
200 | 이 경우 호출은 전체적으로 생성된 내용을 다시 스트리밍하고, 생성된 각 응답에 대해 finish_reason 은 ‘길이’ 또는 ‘중지’가 됩니다. |
요청 페이로드 예:
{
"prompt":"Text example",
"n": 3,
"stream": true
}
응답 JSON 예:
{
"id": "cmpl-example",
"object": "text_completion",
"created": 1653670914,
"model": "ada",
"choices": [
{
"text": "last part of generation",
"index": 2,
"finish_reason": "stop",
"logprobs": null
}
]
}
시나리오: 여러 완료를 요청하는 스트리밍 완료 호출을 수행하고 출력 콘텐츠의 적어도 일부가 필터링됩니다.
HTTP 응답 코드 | 응답 동작 |
---|---|
200 | 특정 세대 인덱스의 경우 세대의 마지막 청크에는 null이 아닌 finish_reason 값이 포함됩니다. 세대가 필터링되었을 때 값은 content_filter 입니다. |
요청 페이로드 예:
{
"prompt":"Text example",
"n": 3,
"stream": true
}
응답 JSON 예:
{
"id": "cmpl-example",
"object": "text_completion",
"created": 1653670515,
"model": "ada",
"choices": [
{
"text": "Last part of generated text streamed back",
"index": 2,
"finish_reason": "content_filter",
"logprobs": null
}
]
}
시나리오: 완료 시 콘텐츠 필터링 시스템이 실행되지 않습니다.
HTTP 응답 코드 | 응답 동작 |
---|---|
200 | 콘텐츠 필터링 시스템이 다운되었거나 제 시간에 작업을 완료할 수 없는 경우에도 콘텐츠 필터링 없이 요청이 완료됩니다. content_filter_results 개체에서 오류 메시지를 찾아 필터링이 적용되지 않았음을 확인할 수 있습니다. |
요청 페이로드 예:
{
"prompt":"Text example",
"n": 1,
"stream": false
}
응답 JSON 예:
{
"id": "cmpl-example",
"object": "text_completion",
"created": 1652294703,
"model": "ada",
"choices": [
{
"text": "generated text",
"index": 0,
"finish_reason": "length",
"logprobs": null,
"content_filter_results": {
"error": {
"code": "content_filter_error",
"message": "The contents are not filtered"
}
}
}
]
}
모범 사례
애플리케이션 설계의 일환으로 잠재적인 피해를 최소화하면서 애플리케이션에 대한 긍정적인 경험을 제공하려면 다음 모범 사례를 고려하세요.
- 사용자가 필터링된 범주 및 심각도 수준으로 분류된 콘텐츠가 포함된 프롬프트를 보내거나 애플리케이션을 오용하는 시나리오를 어떻게 처리할지 결정하세요.
- 완성이 필터링되었는지 확인하려면
finish_reason
을 확인하세요. content_filter_results
에 오류 개체가 없는지 확인하세요(콘텐츠 필터가 실행되지 않았음을 나타냄).- 주석 모드에서 보호 자료 코드 모델을 사용하는 경우 애플리케이션에 코드를 표시할 때 인용 URL을 표시합니다.
관련 콘텐츠
- 콘텐츠 필터링 범주 및 심각도 수준에 대해 알아봅니다.
- Azure OpenAI를 지원하는 기본 모델에 대해 자세히 알아봅니다.
- 이 양식을 통해 수정된 콘텐츠 필터를 신청하세요.
- Azure OpenAI 콘텐츠 필터링은 Azure AI 콘텐츠 안전를 기반으로 합니다.
- 애플리케이션과 관련된 위험을 이해하고 완화하는 방법에 대해 자세히 알아보세요. Azure OpenAI 모델에 대한 책임 있는 AI 관행 개요
- Azure OpenAI에 대한 데이터, 개인 정보 및 보안과 같은 콘텐츠 필터링 및 남용 모니터링과 관련하여 데이터가 처리되는 방법에 대해 자세히 알아봅니다.