OpenAI가 적용하는 보호 조치에 대해서는 안전 분류기, 사이버 보안 검사, 정렬 불일치 모니터링 문서를 참고하세요. 미성년자가 사용하는 애플리케이션이라면 만 18세 미만 사용자 보호 지침도 따르세요.
무료 Moderation API 사용
OpenAI의 Moderation API는 무료로 사용할 수 있으며, 모델 응답에 안전하지 않은 콘텐츠가 포함되는 빈도를 줄이는 데 도움이 됩니다. 용도에 맞는 콘텐츠 필터링 시스템을 직접 개발하는 방법도 있습니다.
애플리케이션에서 Responses API나 Chat Completions로 텍스트를 생성하는 경우 생성 요청에서 콘텐츠 검토 점수도 함께 요청할 수 있습니다.
적대적 테스트
애플리케이션이 악의적인 입력에도 안정적으로 작동하는지 확인하려면 ‘레드팀 테스트’를 권장합니다. 일반적인 사용 패턴뿐 아니라 누군가 의도적으로 오작동을 일으키려는 상황까지 고려해 다양한 입력과 사용자 행동으로 제품을 테스트하세요. 응답이 주제에서 벗어나지는 않나요? “이전 지시는 무시하고 대신 이렇게 해”와 같은 프롬프트 인젝션으로 기능을 쉽게 다른 방향으로 유도할 수 있나요?
사람이 직접 검토하는 절차(HITL)
가능하면 결과를 실제로 사용하기 전에 사람이 직접 검토하도록 하세요. 오류가 심각한 결과를 초래할 수 있는 분야나 코드를 생성하는 작업에서는 특히 중요합니다. 검토자는 시스템의 한계를 이해하고 결과를 검증하는 데 필요한 정보를 확인할 수 있어야 합니다. 예를 들어 메모를 요약하는 애플리케이션이라면 검토자가 원본 메모를 쉽게 열어 요약 내용과 대조할 수 있어야 합니다.
프롬프트 엔지니어링
‘프롬프트 엔지니어링’을 활용하면 생성되는 텍스트의 주제와 어조를 제한할 수 있습니다. 그러면 사용자가 의도적으로 원치 않는 콘텐츠를 생성하려 해도 그런 콘텐츠가 나올 가능성이 줄어듭니다. 새 입력 앞에 원하는 동작을 잘 보여 주는 예시를 몇 개 제시하는 등 모델에 추가 컨텍스트를 제공하면 원하는 결과를 더 쉽게 유도할 수 있습니다.
고객 확인(KYC)
일반적으로 사용자가 서비스에 가입하고 로그인해야 이용할 수 있도록 하세요. Gmail, LinkedIn, Facebook 등 기존 계정으로 로그인할 수 있게 하면 고객 확인에 도움이 될 수 있지만 모든 용도에 적합한 것은 아닙니다. 신용카드나 신분증을 요구하면 위험을 더 줄일 수 있습니다.
사용자 입력과 출력 토큰 수 제한
사용자가 프롬프트에 입력할 수 있는 텍스트의 길이를 제한하면 프롬프트 인젝션을 방지하는 데 도움이 됩니다. 출력 토큰 수를 제한하면 오용 가능성을 줄일 수 있습니다.
입력이나 출력의 범위를 좁히면 애플리케이션을 오용할 여지가 줄어듭니다. 특히 신뢰할 수 있는 출처의 자료로 범위를 제한하면 효과적입니다.
사용자가 텍스트를 자유롭게 입력하도록 하는 것보다 검증된 항목이 있는 드롭다운(예: 위키백과의 영화 목록)에서 선택하도록 하는 편이 더 안전할 수 있습니다.
가능하면 백엔드에서 검증된 자료를 선택해 반환하는 편이 새 콘텐츠를 생성해 반환하는 것보다 안전할 수 있습니다. 예를 들어 고객 문의에 대한 답변을 처음부터 작성하는 대신 문의 내용과 가장 잘 맞는 기존 고객 지원 문서를 안내할 수 있습니다.
사용자에게 문제 신고 수단 제공
일반적으로 사용자가 애플리케이션의 오작동이나 그 밖의 우려 사항을 쉽게 신고할 수 있어야 합니다. 이메일 주소를 안내하거나 지원 티켓을 제출할 수 있도록 하세요. 담당자가 접수된 신고를 확인하고 내용에 맞게 대응해야 합니다.
모델의 한계 파악 및 안내
언어 모델은 잘못된 정보를 사실처럼 제시하거나 불쾌한 내용 또는 편향된 결과를 생성하는 등 여러 한계가 있습니다. 용도에 따라서는 모델을 상당 부분 수정해야 할 수 있습니다. 모델이 목적에 맞는지 검토하고, 예상되는 다양한 입력으로 API 성능을 평가해 어떤 경우에 성능이 저하될 수 있는지 파악하세요. 고객층과 고객이 사용할 입력 범위를 고려해 고객이 서비스에서 기대할 수 있는 수준을 정확히 안내하세요.
OpenAI는 안전과 보안을 매우 중요하게 생각합니다.
API로 개발하는 과정에서 또는 OpenAI와 관련된 다른 곳에서 안전 문제나 보안 이슈를 발견하면 취약점 공개 조정 프로그램을 통해 신고해 주세요.
안전 식별자 적용
요청에 안전 식별자를 포함하면 OpenAI가 악용 사례를 모니터링하고 탐지하는 데 도움이 됩니다. OpenAI가 애플리케이션에서 정책 위반을 발견했을 때 팀이 조치를 취하는 데 필요한 구체적인 피드백을 제공할 수 있습니다.
안전 식별자를 사용하면 팀에서도 악용 사례에 더 빠르게 대응할 수 있습니다. 식별자를 통해 어떤 최종 사용자의 활동인지 일관되게 추적할 수 있으며, 한 사용자의 오용으로 조직 내 다른 사용자의 접근까지 제한될 가능성이 줄어듭니다.
안전 식별자는 각 사용자를 고유하게 구분하는 문자열이어야 합니다. 사용자를 식별할 수 있는 정보가 OpenAI에 전송되지 않도록 사용자 이름이나 이메일 주소를 해시 처리하세요. 로그인하지 않은 사용자에게 제품 미리 보기를 제공한다면 세션 ID를 대신 보낼 수 있습니다.
개별 사용자가 모델과 상호 작용하는 제품에는 안전 식별자를 권장하지만 필수는 아닙니다. API 요청의 safety_identifier 매개변수에 안전 식별자를 지정하세요.
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.chat.completions.create({
model: "gpt-6-astra",
messages: [{ role: "user", content: "This is a test" }],
max_completion_tokens: 5,
safety_identifier: "user_123456",
});
console.log(response.choices[0].message.content);Images API에서는 safety_identifier를 각 이미지 생성(POST /v1/images/generations) 요청과 이미지 편집(POST /v1/images/edits) 요청에 포함하세요. JSON 요청에서는 JSON 속성으로, 멀티파트 이미지 편집 요청에서는 폼 필드로 보내세요. 조직 내에서 같은 최종 사용자의 요청에는 항상 같은 식별자를 사용하고, 길이는 128자 이하로 제한하세요.
Images API의 user 매개변수는 사용 중단 예정(deprecated)입니다. 이전하려면 기존에 user로 보내던 식별자를 safety_identifier에 담아 보내세요. user를 사용하는 기존 요청은 계속 지원됩니다. 두 필드를 모두 지정하면 값이 비어 있지 않은 safety_identifier가 우선합니다. safety_identifier를 생략하거나 값이 null 또는 빈 문자열이면 API는 user 값이 있는 경우 그 값을 사용합니다.
Realtime API 요청에서는 개인 정보를 보호하면서 동일한 사용자를 일관되게 식별할 수 있도록 같은 식별자를 OpenAI-Safety-Identifier 헤더로 보내세요. 임시 Realtime 클라이언트 시크릿을 생성할 때는 시크릿을 생성하는 서버 측 요청에 이 헤더를 포함해 식별자가 해당 세션에 연결되도록 하세요. 신뢰할 수 있는 백엔드에서 WebSocket 또는 WebRTC 연결을 직접 요청하는 경우에는 연결 요청에 헤더를 포함하세요.
안전 식별자는 다른 API나 세션으로 자동 전달되지 않습니다. 애플리케이션이 이미 Responses API 요청에 safety_identifier를 포함하더라도 각 Images API 요청을 보낼 때와 각 Realtime 세션을 생성하거나 해당 세션에 연결할 때 같은 식별자 값을 별도로 전달하세요.
유출되거나 악용된 API 키 폐기
API 키가 노출 또는 악용되었거나 다른 이유로 보안이 침해되었다고 판단되면 즉시 해당 키를 폐기하고 새 키로 교체하세요. 보안 설정에서 모든 API 키를 확인하고 보안이 침해된 키를 폐기하세요.
아동 성착취물 대응 지침
OpenAI는 NCMEC, Thorn 등 아동 안전 전문가들과 협력해 개발자가 아동을 보호하는 데 활용할 수 있는 실무 지침을 마련했습니다. 아동 성착취물 대응 지침을 확인하세요.