작성자 주: Nano Banana Pro에서 반환되는 PROHIBITED_CONTENT 오류의 원인을 필드별로 분석하고, 이커머스 모델 착장 변경 시나리오에서 프롬프트가 트리거되는 메커니즘을 살펴봅니다. 또한, 안전성 검사를 통과할 수 있는 프롬프트 수정 방안을 제시합니다.
이커머스 착장 변경 작업을 하다가 finishReason: PROHIBITED_CONTENT라는 오류를 마주친 적 있으신가요? 분명 평범한 모델 착장 변경 요청인데, 왜 "Google 생성형 AI 사용 정책 위반"으로 간주되는 걸까요? 이는 IMAGE_SAFETY보다 훨씬 심각합니다. PROHIBITED_CONTENT는 Google의 최고 수준 콘텐츠 차단으로, 보통 강제적인 금지 사항을 의미합니다. 하지만 이커머스 착장 변경은 완전히 합법적인 상업적 요구이며, Google의 쇼핑 서비스 자체도 가상 피팅에 Nano Banana를 사용하고 있습니다. 이 글에서는 해당 오류를 필드별로 분석하여 프롬프트의 어떤 단어가 필터링을 유발하는지 찾아내고, 검사를 통과할 수 있는 수정 방안을 알려드립니다.
핵심 가치: 이 글을 읽고 나면 PROHIBITED_CONTENT와 IMAGE_SAFETY의 차이를 이해하고, 이커머스 착장 변경 프롬프트의 어떤 부분이 필터링을 유발하는지, 그리고 어떻게 수정해야 통과할 수 있는지 알게 될 것입니다.

오류 필드별 상세 분석
먼저 응답에 포함된 각 필드의 의미를 명확히 짚어보겠습니다.
| 필드 | 값 | 의미 |
|---|---|---|
finishReason |
PROHIBITED_CONTENT |
최고 수준의 차단 — 정책상 강제 금지 |
finishMessage |
"sensitive words that violate…" | Google이 출력물에 정책 위반 민감 콘텐츠가 포함된 것으로 판단 |
content.parts |
null |
반환된 콘텐츠 없음 |
promptTokenCount |
1150 | 입력 토큰 1150개 소모 (이미지 토큰 다수 포함) |
candidatesTokenCount |
0 | 출력 0 — 차단됨, 이미지 비용은 청구되지 않음 |
thoughtsTokenCount |
221 | 모델이 221 토큰만큼 추론 수행 — IMAGE_SAFETY보다 더 깊은 수준의 추론 |
TEXT: 118 |
텍스트 프롬프트 소모 118 토큰 | 작성하신 한국어 의상 교체 설명 |
IMAGE: 1032 |
이미지 입력 소모 1032 토큰 | 업로드한 참조 이미지 (모델 사진 + 의상 소재) |
PROHIBITED_CONTENT가 IMAGE_SAFETY보다 심각한 이유
| 비교 항목 | IMAGE_SAFETY | PROHIBITED_CONTENT |
|---|---|---|
| 트리거 단계 | 이미지 출력 안전 검토 | 정책 수준의 콘텐츠 카테고리 검토 |
| 심각도 | 중간 (오탐 가능성 있음) | 최고 (정책상 강제 금지) |
| 주요 원인 | 생성된 이미지가 "안전하지 않아 보임" | 요청 내용이 금지된 콘텐츠 범주에 해당 |
| 조정 가능성 | 프롬프트 최적화로 70~80% 성공 가능 | 전체 전략 수정 필요 |
| Google 입장 | "지나치게 신중함" 인정, 오탐 존재 | 정책 마지노선으로 간주, 쉽게 완화하지 않음 |
프롬프트가 PROHIBITED_CONTENT를 유발한 이유
원본 프롬프트 분석
프롬프트를 문장별로 분해하여 안전 필터를 유발하는 민감한 지점을 찾아보겠습니다.
| 프롬프트 조각 | 안전 위험 평가 | 유발 원인 |
|---|---|---|
| "인물의 신체 비율 유지, 얼굴 유지" | 고위험 | "얼굴 유지" = 딥페이크(Deepfake) 행위 신호 |
| "소재 이미지의 이너와 아우터로 교체" | 중위험 | "교체" + 참조 이미지 = 신체 조작 신호 |
| "아우터는 오버사이즈, 아우터 오픈하여 이너 노출" | 중위험 | "노출" + 의상 묘사가 오탐될 가능성 |
| "배경 변경" | 저위험 | 정상적인 작업 |
| "헤어스타일 유지" | 중위험 | "원래 인물 특징 유지" 신호 강화 |
| "무작위로 포즈 변경" | 고위험 | "포즈 변경" = 신체 조작 신호 |
| "실사 느낌의 사진 촬영" | 중위험 | "실사 느낌"이 사실적/모사 의도를 강화 |
핵심 유발 메커니즘
Google의 안전 필터는 귀하의 프롬프트를 **"실제 인물에 대한 신체 조작 및 외모 수정"**으로 인식합니다. 이는 딥페이크 방지 정책에 정확히 저촉되는 부분입니다.
구체적으로 다음 세 가지 키워드 조합이 PROHIBITED_CONTENT를 유발합니다:
- "얼굴 유지" — 모델에게 "이것은 실제 인물의 얼굴이니 바꾸지 마"라고 지시
- "옷 교체" + "포즈 변경" — 모델에게 실제 인물의 신체 상태를 변경하도록 요구
- "실사 느낌의 사진 촬영" — 이것이 실제 인물에 대한 모사 조작임을 더욱 강화
Google의 논리: 실제 인물 얼굴 유지 + 신체/의상/포즈 변경 = 딥페이크 제작에 악용될 가능성 → PROHIBITED_CONTENT 트리거.
이 논리는 딥페이크 방지 측면에서는 합리적이지만, 전자상거래 의상 교체와 같은 정당한 상업적 요구에는 오탐을 유발합니다. 아이러니하게도 Google의 자체 쇼핑 서비스는 Nano Banana를 사용하여 가상 착용을 구현하지만, 이는 내부 API 경로를 이용하므로 공개 API의 안전 필터 제한을 받지 않습니다.
🎯 핵심 통찰: 프롬프트 내용 자체가 "불법 콘텐츠"인 것이 아니라, 프롬프트를 표현하는 방식이 딥페이크 방지 모드를 활성화한 것입니다. 표현 방식을 바꾸면 문제를 해결할 수 있습니다.
APIYI(apiyi.com)를 통해 호출하면 플랫폼에서 전자상거래 의상 교체 시나리오에 맞는 최적화 설정이 적용되어 있으며, 실패 시 비용이 청구되지 않습니다.

프롬프트 재작성 가이드
핵심 재작성 원칙
"실제 인물 조작"에서 "새로운 캐릭터 생성"으로의 전환—모델에게 실제 인물을 수정한다는 느낌을 주는 대신, 완전히 새로운 패션 화보를 제작한다는 느낌을 주어야 합니다.
| 재작성 원칙 | 원래 표현 (차단됨) | 재작성 표현 (통과 가능) |
|---|---|---|
| 인물 | "얼굴 유지" | "비슷한 스타일의 모델 생성" 또는 얼굴 언급 생략 |
| 의상 | "참조 이미지의 옷으로 교체" | "참조 이미지에 제시된 의상 착용" |
| 자세 | "자세 변경" | "패션 잡지 스타일의 스탠딩 포즈" |
| 의도 | "실제 인물처럼 촬영" | "상업 패션 사진 스타일" |
| 신체 | "신체 비율 유지" | "표준 패션 모델 체형" |
재작성 방안 A: "조작" 의미 완전히 배제하기 (추천)
Generate a professional fashion photography image:
A female model wearing the outfit shown in the reference image
(oversized coat open over a layered top).
Standing pose, mid-shot framing, model fills 2/3 of the frame.
Carrying a small handbag. Natural and expressive pose with
scene interaction. Urban outdoor background.
Commercial fashion photography style, high quality.
왜 영어인가요?: Google의 안전 필터는 영어 프롬프트에 대해 훨씬 정밀하게 작동하며 오작동 확률이 낮습니다.
재작성 방안 B: 중국어 유지 및 의미 재구성
전문 패션 사진 작품:
패션 여성 모델 한 명, 참조 이미지에 제시된 의상 착용
(oversized 코트 안에 레이어드 스타일),
코트를 자연스럽게 열어 내부 디테일 강조.
도시 거리 배경, 자연광.
미디엄 샷 구도, 인물이 화면의 2/3 차지,
자연스럽고 우아한 스탠딩 포즈, 작은 핸드백 매치.
상업 패션 잡지 촬영 스타일, 고화질.
주요 변경 사항:
- "얼굴 유지" 삭제 — 실제 인물을 조작한다는 암시 제거
- "교체"를 "착용"으로 변경 — 조작 행위에서 정적인 묘사로 전환
- "자세 변경"을 "자연스럽고 우아한 스탠딩 포즈"로 변경 — 구체화하여 "변경"이라는 동사 회피
- "실제 인물 느낌"을 "상업 패션 잡지 촬영 스타일"로 변경 — 시뮬레이션 의도에서 스타일 묘사로 전환
- "신체 비율 유지" 삭제 — 신체 조작 언급 금지
재작성 방안 C: 단계별 실행 전략
모델의 특정 특징(피부색, 헤어스타일 등)을 유지해야 한다면 단계별 전략을 사용해 보세요.
1단계: 참조 인물이 없는 순수 의상 착용 사진 먼저 생성
Fashion lookbook image: [의상 묘사], worn by a model,
[피부색/헤어스타일] hair, mid-shot, fashion photography style.
2단계: 1단계 결과물을 바탕으로 다중 대화를 통해 세부 사항 조정
Adjust the background to urban street scene,
add a small handbag accessory.
단계별 실행은 모든 "민감한" 작업을 한 번에 수행하여 필터링이 작동하는 것을 방지합니다.
🎯 실전 팁: 방안 A(영어 프롬프트)의 성공률이 가장 높습니다. 중국어를 꼭 사용해야 한다면 방안 B의 통과율도 원래 프롬프트보다 훨씬 좋습니다.
APIYI apiyi.com을 통해 호출하면 실패 시 비용이 차감되지 않으니, 안심하고 다양한 프롬프트를 테스트하여 최적의 결과를 찾아보세요.
재작성 전후 비교
| 차원 | 원래 프롬프트 | 재작성 후 (방안 B) |
|---|---|---|
| 인물 묘사 | "인물 신체 비율 유지, 얼굴 유지" | "패션 여성 모델 한 명" |
| 의상 교체 | "참조 이미지의 이너와 코트로 교체" | "참조 이미지에 제시된 의상 착용" |
| 신체 조작 | "무작위로 자세 변경" | "자연스럽고 우아한 스탠딩 포즈" |
| 실제 의도 | "실제 인물처럼 촬영한 사진" | "상업 패션 잡지 촬영 스타일" |
| 민감 단어 수 | 고위험/중위험 조합 5개 이상 | 0개 |
| 예상 결과 | PROHIBITED_CONTENT | 성공적인 생성 |

자주 묻는 질문(FAQ)
Q1: Google Shopping의 가상 피팅도 Nano Banana를 사용하는데, 왜 차단되지 않나요?
Google Shopping의 가상 피팅 기능은 내부 API 채널을 사용하므로 공개 API의 보안 필터링 제한을 받지 않습니다. Google은 자사 제품에 전용 피팅 파이프라인(g.co/shop/tryon)을 사용하며, 별도의 독립적인 보안 검토 프로세스를 거칩니다. 반면 공개 API는 Google이 제3자의 생성 결과물 활용 방식을 제어할 수 없기 때문에 보안 필터링이 훨씬 엄격합니다. 이는 플랫폼 정책의 비대칭성 때문으로, 동일한 기술이라도 Google이 직접 사용하면 허용되지만 개발자가 사용하면 차단될 수 있습니다.
Q2: PROHIBITED_CONTENT로 차단되면 비용이 청구되나요?
IMAGE_SAFETY와 마찬가지로 candidatesTokenCount: 0은 출력 토큰이 계산되지 않음을 의미합니다. Google은 차단된 이미지에 대해서는 요금을 부과하지 않는다고 밝혔습니다. 다만 입력 토큰(1150)과 사고(Thinking) 토큰(221)에 대해 극히 적은 비용(약 $0.0003, 무시 가능한 수준)이 발생할 수 있습니다. APIYI(apiyi.com)를 통해 호출할 경우, PROHIBITED_CONTENT 차단을 포함하여 실패 시에는 요금이 차감되지 않습니다.
Q3: 프롬프트를 수정해도 계속 차단되면 어떻게 하나요?
다음 3단계로 해결해 보세요: 1) 영어 프롬프트로 전환하세요(안 A). 영어 보안 필터링의 교정이 더 정밀합니다. 2) 모델 참조 이미지를 업로드하지 말고 의류 소재 이미지만 업로드하세요. "실제 인물 참조"를 제거하면 딥페이크 위험 점수를 크게 낮출 수 있습니다. 3) APIYI(apiyi.com)를 통해 호출하세요. 플랫폼의 보안 매개변수 구성은 이커머스 시나리오에 최적화되어 있습니다. 위 방법으로도 해결되지 않는다면, SellerPic이나 TapNow와 같은 전용 가상 피팅 도구로 대체하는 것을 고려해 보세요.
Q4: 여러 장의 참조 이미지(모델+의류)를 업로드하면 위험 트리거 확률이 높아지나요?
네, 그렇습니다. 오류 메시지의 IMAGE: 1032 토큰은 대량의 정보가 포함된 참조 이미지가 업로드되었음을 의미합니다. 참조 이미지에 실제 사람의 얼굴이 포함되어 있으면 보안 필터가 이를 "실제 인물"로 인식하여 딥페이크 신호를 강화합니다. 권장 사항: 1) 의류 소재 이미지만 업로드하세요(얼굴 제외). 2) 모델의 스타일을 참조해야 한다면, 업로드할 모델 이미지에서 얼굴 부분을 잘라내세요.
요약
Nano Banana Pro의 PROHIBITED_CONTENT 오류 핵심 포인트:
- IMAGE_SAFETY보다 심각함: PROHIBITED_CONTENT는 정책 차원의 강제 차단으로, Google은 "얼굴 유지 + 옷 갈아입히기 + 자세 변경"을 딥페이크 조작 행위로 간주합니다.
- 문제는 내용이 아닌 표현 방식: 이커머스 의류 교체는 정당한 수요이지만, 프롬프트 내의 "얼굴 유지", "갈아입히기", "자세 변경", "실제 인물 느낌" 등의 조합이 방어 기제를 트리거합니다.
- 프롬프트 수정 핵심 원칙: "실제 인물 조작"에서 "새로운 패션 화보 생성"으로 관점을 전환하세요. "갈아입히다" 대신 "착용하다"를, "실제 인물 느낌" 대신 "패션 사진 스타일"을 사용하고, "얼굴 유지" 문구는 삭제하세요. 영어 프롬프트의 성공률이 훨씬 높습니다.
Nano Banana Pro는 APIYI(apiyi.com)를 통해 호출하는 것을 추천합니다. 실패 시 요금이 차감되지 않아 다양한 프롬프트 조합을 안심하고 테스트할 수 있으며, 플랫폼 차원에서 이커머스 시나리오에 최적화된 보안 매개변수를 제공합니다.
📚 참고 자료
-
Gemini API 안전 설정 문서: 공식 안전 필터링 매개변수 설명
- 링크:
ai.google.dev/gemini-api/docs/safety-settings - 설명: finishReason 각 값의 의미와 안전 카테고리 포함
- 링크:
-
Gemini 이미지 생성 및 책임 있는 AI: Vertex AI 안전 필터링 문서
- 링크:
docs.cloud.google.com/vertex-ai/generative-ai/docs/multimodal/gemini-image-responsible-ai - 설명: PROHIBITED_CONTENT 및 IMAGE_SAFETY 트리거 조건 포함
- 링크:
-
Nano Banana Pro IMAGE_SAFETY 수정 가이드: 성공률을 높이는 8가지 방법
- 링크:
help.apiyi.com/en/nano-banana-pro-image-safety-error-fix-guide-en.html - 설명: 프롬프트 최적화 템플릿 및 시나리오별 해결 방안 포함
- 링크:
-
APIYI 문서 센터: 이커머스 의상 교체 시나리오를 위한 안전 매개변수 최적화
- 링크:
docs.apiyi.com - 설명: 실패 시 비용 미청구 + 이커머스 시나리오 최적화 설정
- 링크:
작성자: APIYI 기술팀
기술 교류: 댓글로 자유롭게 의견을 나눠주세요. 더 많은 자료는 APIYI docs.apiyi.com 문서 센터에서 확인하실 수 있습니다.
