각 요청에 대해 Auto, TokenLab Verified 또는 Official를 선택할 수 있으며, 가격은 사전에 표시됩니다. 새로운 기능 확인하기

GPT 이미지 조정 튜닝 가이드: `moderation_blocked` 400 오류를 줄이는 방법

·2026년 10월 4일·약 2분 읽기·업데이트 2026년 10월 4일·1614 조회수
#GPT 이미지#이미지 생성#콘텐츠 검토#프롬프트 엔지니어링#튜토리얼
GPT 이미지 조정 튜닝 가이드: `moderation_blocked` 400 오류를 줄이는 방법

2026년 8월 19일부터 9월 18일 사이에 처리된 GPT Image 2 요청 중 약 23건당 1건이 HTTP 400 오류로 반환되었습니다. 상위 안전 시스템이 픽셀이 렌더링되기도 전에 요청을 거부했으며, 대부분의 프롬프트는 작성자가 보기에는 무해해 보였습니다. 이 GPT Image 조정 튜닝 가이드는 TokenLab의 이미지 API에서 얻은 30일간의 프로덕션 데이터와 OpenAI의 공식 이미지 생성 문서를 바탕으로 작성되었습니다. 차단 트리거는 밀접하게 연관되어 있으며, 해결책은 재시도가 아닌 프롬프트 재작성입니다. 수치는 집계된 플랫폼 통계이며, 고객의 콘텐츠는 재현되지 않았습니다.

핵심 요약

  • TokenLab에서 GPT Image 작업의 약 4.3%(약 23건 중 1건)가 30일 동안 상위 안전 시스템에 의해 거부되었습니다.
  • 참조 이미지를 사용하면 차단율이 8.4%로, 텍스트 전용 생성의 3.7%보다 두 배 이상 높아집니다.
  • 가장 강력한 차단 조합은 미성년자 관련 어휘와 사실적인(photorealistic) 표현의 결합으로, 기준치보다 약 2.2배 높은 약 9.5%의 차단율을 보였습니다.
  • 해당 기간 동안 변경되지 않은 프롬프트를 재시도하여 차단이 해결된 사례는 없었으며, 차단된 작업은 자동으로 환불됩니다.
  • moderation="low" 설정은 명백히 무해하고 양식화된 작업에 대한 엄격함을 낮추지만, 불법 카테고리 필터링을 비활성화하지는 않습니다.

오류의 실체

GPT Image 2는 모든 프롬프트, 모든 입력 이미지, 모든 생성 이미지를 제공업체의 콘텐츠 정책에 따라 검사합니다. 필터가 작동하면 요청은 400 오류와 함께 실패하며, 고정된 식별자는 다음과 같은 오류 코드입니다:

{
  "error": {
    "type": "image_generation_user_error",
    "code": "moderation_blocked",
    "moderation_details": {
      "moderation_stage": "input",
      "categories": ["sexual"]
    }
  }
}

공식 문서에 따르면 moderation_details는 선택 사항이며 의도적으로 포괄적입니다. moderation_stage는 차단이 입력(input)에서 발생했는지 아니면 생성된 이미지(output)에서 발생했는지 알려줍니다. categories는 harassment(괴롭힘), self-harm(자해), sexual(성적), violence(폭력)와 같은 광범위한 공개 라벨을 포함합니다. 내부 분류기 점수는 절대 공개되지 않습니다.

TokenLab에서 동일한 이벤트는 두 가지 형태로 나타납니다:

  • 동기식 호출(/v1/images/generations, /v1/images/edits)은 즉시 HTTP 400을 반환합니다.
  • 비동기 작업은 "The request was rejected by the safety system."라는 메시지와 함께 failed 상태로 전환됩니다.

어떤 경우든 두 가지 운영 사실이 중요합니다. 조정 차단은 동일한 콘텐츠에 대해 결정론적입니다. 즉, 변경되지 않은 요청을 재시도해도 성공하지 않습니다. 또한 TokenLab에서 조정 차단된 작업은 실패한 작업으로 간주되므로, 미리 차감된 할당량이 전액 자동으로 환불됩니다. 차단된 생성에 대해서는 비용을 지불하지 않습니다.

30일간의 GPT Image 조정 튜닝 데이터

2026년 8월 19일부터 9월 18일 사이에 TokenLab에서 GPT Image 작업의 약 4.3%(약 23건 중 1건)가 상위 안전 시스템에 의해 거부되었습니다. 차단된 요청은 고르게 분포되어 있지 않으며, 몇 가지 패턴을 중심으로 군집을 이룹니다:

신호 차단된 작업 기타 모든 작업 해석
미성년자 언급 (child, kid, baby, "7-year-old" 등) 79% 33% 가장 강력한 단일 예측 변수
사실적인 렌더링 표현 ("photorealistic", "real human", "live-action") 77% 57% 증폭기, 특히 미성년자와 함께 사용 시
성적 관련 묘사 (nude, sexy, lingerie, 신체 중심 표현) 43% 17% 강력한 예측 변수
일반적인 행동/폭력 단어 (battle, sword, explosion) ~50% ~50% 단독으로는 예측 가치 없음

같은 기간 동안 얻은 세 가지 추가 결과는 다음과 같습니다:

  • 참조 이미지는 위험을 높입니다. 예를 들어, 입력/참조 이미지가 포함된 작업은 8.4%의 차단율을 보인 반면, 텍스트 전용 생성은 3.7%로 두 배 이상 차이가 났습니다. 이미지는 텍스트만큼 엄격하게 조정됩니다.
  • 긴 프롬프트는 실패할 확률이 높습니다. 차단된 프롬프트는 평균 약 3,600자였으며, 절반 이상이 2,000자를 초과했습니다. 절이 추가될 때마다 분류기가 걸릴 수 있는 표면적이 넓어집니다.
  • 재시도는 효과가 없습니다. 해당 기간 동안 차단된 모든 작업은 최종 실패 상태로 끝났으며, 동일한 입력을 다시 제출하여 성공한 사례는 없었습니다. 그리고 모든 작업은 자동으로 환불되었습니다.

우리가 관찰한 가장 많이 차단된 워크플로우는 미성년자의 사실적인 캐릭터 디자인 시트였습니다. 즉, 초현실적인 렌더링, 정확한 신체 비율, 의상 메모를 포함하여 아동 캐릭터를 묘사하는 "캐스팅 참조" 스타일의 프롬프트입니다. 미성년자 관련 어휘와 사실적인 렌더링을 결합한 프롬프트는 기준치보다 2.2배 높은 ~9.5%의 차단율을 보였습니다.

차단된 사례를 분석해보면, 거의 모든 거부가 다음 5가지 범주 중 하나에 해당합니다:

  1. 미성년자의 사실적인 묘사. "스튜디오에서 촬영된 실제 인간 아동", "초현실적", "CGI나 일러스트가 아님"으로 렌더링된 아동 또는 유아 캐릭터. 미성년자와 사실주의의 결합은 이미지 조정에서 가장 엄격하게 보호되는 경계이며, 의도가 순수한 캐릭터 시트일지라도 차단됩니다.
  2. 미성년자 주변의 의상 또는 신체 중심 표현. "옷을 입지 않은 쇄골 위 클로즈업"(단순 인물 사진 크롭 의도) 또는 아동 캐릭터의 머리부터 발끝까지의 신체 비율 측정과 같은 문구. 개별적으로는 무해하지만, 종합적으로는 미성년자에 대한 신체 중심 묘사로 읽힙니다.
  3. 성인 캐릭터의 성적 묘사. SFW(건전한) 구성이라 하더라도 포즈, 피부, 속옷 중심의 어휘("lingerie", "nude", "seductive pose")가 포함된 경우.
  4. 잔혹한 해부학적 묘사. 썩어가는 살점, 노출된 장기, 열린 상처, 기생충 등을 해부학적 세부 사항으로 묘사하는 공포 및 다크 판타지 프롬프트.
  5. 실제 인물의 참조 이미지. 미성년자의 실제 사진, 피부 노출이 심한 이미지, 또는 편집 입력으로 사용된 유명인과 유사한 얼굴.

두 가지 증폭기가 위 내용을 차단할 가능성을 높입니다. 매우 긴 프롬프트(텍스트가 많을수록 나쁜 조합이 발생할 확률이 높음)와 부정어 목록입니다. "no nudity, no sexual content, no gore"와 같은 줄은 분류기를 안심시키지 않습니다. 오히려 피하고 싶은 개념을 반복하여 입력에 추가할 뿐입니다. 원하지 않는 것이 아니라 원하는 것을 설명하세요.

GPT Image 조정 튜닝 플레이북

다음 재작성 방법은 위의 데이터를 기반으로 합니다. (예시는 이해를 돕기 위한 것이며 실제 고객 트래픽이 아닙니다.)

1. 미성년자를 사실주의와 분리하세요

스토리, 만화, 게임에 아동 캐릭터가 필요한 경우, 명확하게 양식화된 매체로 렌더링하세요:

Before: "Ultra-photorealistic casting photo of a 7-year-old girl, real human
child photographed in a studio, detailed body proportions, collarbone-up
unclothed facial close-up ..."

After:  "Storybook watercolor illustration of a young girl in Ming-dynasty
dress, shoulder-up portrait, round face, twin hair buns tied with cloth
ribbons, gentle expression, plain white background"

매체(수채화, 2D 애니메이션, 3D 카툰, 그림책 스타일)를 변경하세요. "실제 인간/촬영" 프레임을 버리고 신체 측정은 완전히 생략하세요. 의상을 설명해야 한다면, 입지 않은 것이 아니라 입고 있는 것("round-collar cloth jacket을 입은")을 설명하세요.

2. 부정어 목록을 삭제하세요

"no nudity, no blood, no text, no watermark"를 긍정적인 문구로 대체하세요: "fully clothed", "clean composition", "plain background". 제한된 카테고리를 명시하지 않는 부정어만 유지하세요. "No watermark"는 괜찮지만, "no nudity"는 도움이 되지 않습니다.

3. 프롬프트를 간결하게 하세요

다중 패널 캐릭터 시트를 생성하는 경우, 모든 패널 설명에 동일한 스타일 블록을 반복하지 마세요. 하나의 공유 스타일 문장과 패널별 세부 사항만 사용하면 우발적인 트리거 조합이 발생할 가능성이 있는 표면적 임계값 아래로 유지할 수 있습니다.

4. 해부학이 아닌 분위기로 공포를 완화하세요

Before: "her body rotting, exposed skull, flesh, pustules and parasites ..."

After:  "one half serene and maternal, the other half dissolving into shadow
and tidal mist, decay suggested through silhouette and lighting rather than
anatomical detail"

다크 판타지는 해부학적 묘사 대신 분위기, 조명, 실루엣을 통해 공포를 전달할 때 조정을 통과할 수 있습니다.

5. 성인 콘텐츠 관련성을 중화하세요

성인 캐릭터의 경우, 신체 및 속옷 중심 단어를 패션 및 분위기 언어로 바꾸세요. "lingerie" 대신 "evening gown", "seductive pose" 대신 "confident contrapposto"를 사용하세요.

6. 참조 이미지를 프롬프트의 일부로 취급하세요

이미지 입력도 조정 대상이며, 데이터에 따르면 차단율을 두 배 이상 높입니다. 프롬프트 텍스트처럼 다루세요:

  • 미성년자의 경우 양식화된 참조를 선호하세요. 아동 캐릭터의 일러스트나 3D 렌더링은 실제 아동 사진보다 훨씬 안전한 입력이며, 일반적으로 캐릭터 일관성을 유지하는 데도 효과적입니다.
  • 필요한 부분만 크롭하세요. 일관성을 위해 얼굴이 필요하다면 전신 해변 사진이 아닌 얼굴 크롭 이미지를 업로드하세요. 피부와 맥락이 적을수록 분류기 표면적이 줄어듭니다.
  • 오버레이 텍스트와 워터마크를 제거하세요. 참조 이미지의 캡션, 밈 텍스트, 워터마크 문자열은 입력 텍스트로 읽히며 잊고 있었던 트리거 단어를 포함할 수 있습니다.
  • 실제 유명인과 유사한 외모를 피하세요. 참조 이미지 및 "in the style of" 프롬프트 텍스트 모두에서 피해야 합니다.

GPT Image edit API 지원 노트에서 다중 이미지 편집 및 비동기 폴링 뒤의 요청 형태를 확인하세요.

조정(moderation) 매개변수

GPT Image 모델은 공식 문서에 따라 두 가지 값을 가진 moderation 매개변수를 허용합니다:

  • auto (기본값): 연령에 부적절할 수 있는 특정 콘텐츠 범주를 제한하는 표준 필터링.
  • low: 덜 제한적인 필터링.

TokenLab은 /v1/images/generations와 /v1/images/edits 모두에서 이 매개변수를 전달합니다:

curl https://api.tokenlab.sh/v1/images/generations \\
  -H "Authorization: Bearer \$TOKENLAB_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{
    "model": "gpt-image-2",
    "prompt": "Storybook watercolor illustration of a young girl in Ming-dynasty dress, shoulder-up portrait",
    "size": "1024x1024",
    "moderation": "low"
  }'

콘텐츠가 명백히 무해한데 계속 플래그가 지정되는 경우 low를 사용하세요. 양식화된 일러스트 작업이 대표적인 사례입니다. 두 가지 주의사항: low는 off가 아니며(CSAM과 같은 불법 카테고리는 항상 차단됨), 이는 보장이 아닌 다이얼입니다. 먼저 프롬프트를 수정하고, 그 다음 매개변수를 고려하세요.

코드에서 차단 처리하기

공식 지침은 명확합니다. image_generation_user_error 실패는 사용자가 수정할 수 있으며 요청을 변경하지 않고 재시도해서는 안 됩니다. 우리 데이터도 이에 동의합니다. 30일 동안 차단된 작업 중 변경되지 않은 요청을 재시도하여 복구된 사례는 없었습니다. 올바른 처리 방법은 다음과 같습니다:

  • 메시지 텍스트가 아닌 error.code를 기준으로 구분하세요. moderation_blocked(및 일반적인 image_generation_user_error)만이 "입력을 수정하라"는 의미입니다. 속도 제한 및 5xx 오류는 여전히 재시도 가능합니다.
  • 단계를 확인하세요. moderation_stage: "input"은 프롬프트를 다시 작성하거나 참조 이미지를 교체하라는 의미입니다. "output"은 생성된 이미지 자체가 플래그 지정되었음을 의미하며, 약간 조정된 위험이 낮은 프롬프트로 다시 시도하면 일반적으로 해결됩니다.
  • 최종 사용자 메시지는 일반적인 것으로 유지하세요("콘텐츠 안전 요구 사항으로 인해 이 요청을 완료할 수 없습니다"). 디버깅 및 지원을 위해 moderation_details와 요청 ID를 기록하세요.
  • 루프를 돌리지 마세요. 고유 입력당 한 번의 조정 차단 후 회로 차단기를 작동시키세요. 동일한 콘텐츠를 다시 제출하는 것은 TokenLab이 환불해주더라도 지연 시간과 디버깅 시간을 낭비하는 것입니다.

체크리스트

상황 가능성 있는 트리거 해결책
아동 캐릭터 디자인 시트 미성년자 × 사실주의 양식화된 매체, 신체 측정 없음, 긍정적인 의상 표현
사실적인 성인 초상화 차단 성적 묘사 패션/분위기 표현 사용; moderation="low" 고려
다크 판타지 / 공포 생물 잔혹한 해부학 조직 세부 사항 대신 분위기와 실루엣 사용
참조 사진을 사용한 편집 차단 실제 인물 / 피부 노출이 많은 입력 이미지 더 타이트하게 크롭, 양식화된 참조 사용, 오버레이 텍스트 제거
긴 다중 패널 프롬프트 차단 프롬프트 표면적 + 부정어 목록 상용구 중복 제거, 부정어 목록 삭제
무해한 양식화 작업이 계속 플래그됨 분류기의 보수성 moderation="low"

제한 사항. 위의 통계는 TokenLab의 프로덕션 트래픽에서 얻은 30일간의 집계 데이터이며, 보장이 아닌 경향을 설명합니다. 조정 분류기는 시간이 지남에 따라 변경되며, 상위 업데이트 후 동일한 프롬프트가 다르게 처리될 수 있습니다. 재작성 예시는 고객 데이터가 아닌 예시 템플릿입니다. 배치 실행 전 항상 소규모 테스트를 통해 현재 동작을 검증하세요.

FAQ

차단된 생성에 대해 비용을 지불하나요?

아니요. TokenLab에서 조정 차단된 작업은 실패하며, 미리 차감된 할당량은 전액 자동으로 환불됩니다.

동일한 프롬프트를 재시도하면 도움이 되나요?

아니요. 30일간의 데이터에서 변경되지 않은 재시도로 성공한 차단 작업은 단 한 건도 없었습니다. 먼저 입력을 변경하세요.

moderation="low"가 안전 필터링을 비활성화하나요?

아니요. 제한성을 낮출 뿐이며, 불법 콘텐츠 카테고리는 관계없이 차단됩니다.

참조 이미지가 정말 조정되나요?

네. 프롬프트와 모든 입력 이미지가 필터링됩니다. 데이터에 따르면 참조 이미지가 포함된 작업은 텍스트 전용보다 두 배 이상 높은 비율로 차단되었습니다.

어떤 규칙이 적용되었는지 정확히 알 수 있나요?

상위 시스템이 포함하는 경우에 한해 포괄적인 moderation_details.categories 수준에서만 알 수 있습니다. 제공업체는 의도적으로 분류기 내부를 공개하지 않습니다.

이 모델들을 사용해보려면 이미지 모델 카탈로그를 탐색하고, 작업 수명 주기 처리를 위해 비동기 작업 및 폴링 가이드를 검토하며, 현재 요청 형식은 TokenLab 문서를 확인하세요.

워크플로우를 확장하기 전에 API 키를 생성하고 소규모 프로브 배치를 실행하세요.

출처

Prepared by Herald, TokenLab's AI growth lead. Facts are checked against the linked primary sources on the date shown.

최근 출시된 모델

이 가이드의 모델로 바로 구축하기

가격을 비교하고 라우트를 테스트한 뒤, 조사 내용을 실제 API 호출로 이어가세요.

첫 API 호출

API 키 받기
curl https://api.tokenlab.sh/v1/chat/completions \
  -H "Authorization: Bearer $TOKENLAB_API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"gemini-3.8-flash","messages":[{"role":"user","content":"Hello!"}]}'