| |

Nano Banana Pro API 부정적 프롬프트 올바른 작성법: negativePrompt 오류를 완전히 해결하는 3가지 방법

Stable Diffusion이나 Midjourney에서 Nano Banana Pro로 넘어온 개발자라면 API를 처음 호출할 때 다음과 같은 당혹스러운 400 에러를 마주한 적이 있을 겁니다: Invalid JSON payload received. Unknown name "negativePrompt" at 'generation_config.image_config': Cannot find field. 에러 메시지는 직설적이지만, 정작 필드 이름이 틀린 건지, 위치가 잘못된 건지, 아니면 이 모델이 아예 부정 프롬프트(negative prompt)를 지원하지 않는 건지 명확히 알려주지 않죠.

nano-banana-pro-api-negative-prompt-guide-ko 图示

정답은 세 번째입니다. Nano Banana Pro(Gemini 3 Pro Image Preview)는 설계상 독립적인 negativePrompt 필드가 존재하지 않습니다. "원하지 않는 요소"를 표현하려면 모든 내용을 메인 프롬프트 텍스트에 직접 녹여내야 합니다. 이 글에서는 Google 공식 문서와 Nano Banana 프롬프트 가이드를 바탕으로 에러의 근본 원인을 분석하고, 공식 추천 작성법 3가지와 전체 API 호출 코드, 그리고 APIYI(apiyi.com) 플랫폼의 실전 사례를 통해 Nano Banana Pro의 올바른 프롬프트 작성법을 5분 만에 완벽히 정리해 드립니다.

1. Nano Banana Pro에서 negativePrompt 필드를 사용할 수 없는 이유

1.1 에러 메시지 상세 분석

실제 발생하는 에러 메시지는 보통 다음과 같습니다:

upstream_error  400
Invalid JSON payload received.
Unknown name "negativePrompt" at 'generation_config.image_config':
Cannot find field.

이 메시지에서 중요한 세 가지 정보를 확인할 수 있습니다:

  • Invalid JSON payload: 서버가 JSON을 해석하는 단계에서 거부했습니다. 요청이 추론 단계까지 도달하지도 못한 것이죠.
  • Unknown name "negativePrompt": 스키마에 해당 필드 이름이 아예 존재하지 않습니다. 대소문자 문제나 위치 문제가 아닙니다.
  • at 'generation_config.image_config': generation_config.image_config 아래에 해당 필드를 넣으려 했지만, 이 객체는 공식 화이트리스트에 있는 필드만 허용합니다.

즉, "파라미터 오류"가 아니라 "파라미터 자체가 존재하지 않는" 상황입니다. Nano Banana Pro의 API 스키마에는 부정 프롬프트를 위한 공간이 마련되어 있지 않습니다.

1.2 공식 image_config 필드 화이트리스트

Google AI 공식 문서에 따르면, Gemini 3 Pro Image Preview의 image_config 객체는 두 개의 필드만 허용하며, 그 외의 필드는 모두 400 에러를 발생시킵니다:

필드명 타입 역할
aspectRatio string "1:1" / "16:9" / "4:3" / "21:9" 출력 이미지 비율
imageSize string "512" / "1K" / "2K" / "4K" 출력 해상도 단계

이 화이트리스트는 매우 간결합니다. negativePrompt, seed, cfg_scale, sampler 같은 설정이 없습니다. Google은 Nano Banana 시리즈에서 의도적으로 미니멀리즘 설계를 채택했습니다. 사용자가 복잡한 하이퍼파라미터를 조정하는 대신, 모델이 자연어를 더 잘 이해하도록 유도하려는 의도입니다.

1.3 설계 철학: 왜 Google은 negativePrompt를 넣지 않았을까?

Stable Diffusion 계열의 부정 프롬프트는 CFG(Classifier-Free Guidance)의 양방향 가이던스에서 유래했습니다. 이는 독립적인 벡터를 사용하여 확산 과정을 '역방향으로 유도'하는 방식입니다. 반면, Gemini 시리즈의 멀티모달 추론 생성 경로는 확산 모델 아키텍처와 다릅니다. 모델은 전체 자연어 입력을 의미적으로 이해한 뒤 이미지를 생성하므로, '두 개의 벡터가 각각 가이드하는' 과정이 없습니다.

Google Cloud Blog의 공식 Nano Banana 프롬프트 가이드는 다음과 같이 요약합니다:

"Use positive framing: Describe what you want, not what you don't want (e.g. 'empty street' instead of 'no cars')."

즉, Nano Banana Pro의 세계관에서는 부정적 묘사보다 긍정적 묘사가 훨씬 효율적입니다. 이는 기술적 제한이 아니라 제품 철학입니다.

공학적 관점에서 봐도, 확산 모델은 부정적 가이드를 위해 '이중 추론 및 벡터 차감'이라는 추가 연산이 필요하지만, Gemini의 멀티모달 아키텍처는 엔드 투 엔드(End-to-End) 의미 이해 방식이라 뺄셈이 가능한 역방향 벡터가 존재하지 않습니다. 억지로 negativePrompt 필드를 넣는 것은 스키마 일관성을 해칠 뿐만 아니라, 사용자에게 잘못된 기대를 심어줄 수 있습니다. Google은 명확한 에러 메시지를 통해 이 길을 차단하고, 개발자가 자연어 수준에서 의도를 표현하도록 유도하고 있습니다.

🎯 : 기존 SD 방식의 부정 프롬프트 워크플로우에 익숙하다면, APIYI(apiyi.com)에서 몇 가지 비교 이미지를 생성해 보세요. 이 모델에서 '긍정적 묘사'와 '부정적 묘사'가 실제 결과물에 어떤 차이를 만드는지 직접 확인한 뒤 프롬프트를 수정하는 것을 추천합니다.

2. Nano Banana Pro 부정 프롬프트의 3가지 올바른 작성법

별도의 필드는 없지만, 부정적인 표현을 메인 프롬프트 텍스트 안에 포함하는 것은 충분히 가능합니다. 아래 세 가지 방법은 구글 공식 문서와 커뮤니티의 실전 경험을 바탕으로 정리한 고효율 재사용 가능 솔루션입니다.

nano-banana-pro-api-negative-prompt-guide-ko 图示

2.1 방법 1: 긍정적 프레임으로 재작성 (공식 추천)

"X를 하지 마"를 "Y를 해"로 바꾸는 방식입니다. 구글이 공식적으로 가장 권장하는 방법이죠. 일반적인 대응 패턴은 다음과 같습니다.

원래 부정적 표현 긍정적 프레임으로 재작성
no cars on the street empty deserted street with no traffic
no people in background quiet solitary scene with empty surroundings
no text or watermark clean image with smooth empty borders
not blurry, not low quality sharp focus, crisp details, high resolution
no extra fingers accurate human anatomy with precisely five fingers per hand

긍정적 프레임의 장점은 모델이 '역추론'할 필요 없이 당신이 원하는 목표 상태를 직접 이해하므로 적중률이 가장 높다는 것입니다.

실제로 작성할 때는 "왜 X를 원하지 않는가 → 내가 진짜 원하는 것은 무엇인가"라는 사고 과정을 거치는 것이 좋습니다. 예를 들어 "텍스트 금지"의 진짜 의도는 "화면이 깔끔하고 시선이 분산되지 않길 원함"일 것입니다. 그렇다면 "no text"라고 직역하기보다 "clean uncluttered composition with smooth empty borders"라고 표현하는 것이 훨씬 효과적입니다. 이런 '의도 역추적'이 긍정적 프레임의 핵심입니다.

2.2 방법 2: 자연어 배제법 (의미의 유연성 유지)

일부 배제 항목은 긍정적 표현으로 바꾸기 어려울 수 있습니다. 이때는 without, avoid, exclude, free of와 같은 표현을 사용하여 자연스럽게 프롬프트에 녹여내면 됩니다.

A serene mountain landscape at sunrise,
photorealistic style, golden hour lighting,
without any people, vehicles, or man-made structures,
free of text overlays, logos, or watermarks.

이 방법의 핵심은 배제 조건을 SD처럼 쉼표로 구분된 키워드 목록으로 나열하는 것이 아니라, 전체 묘사 안에 자연스럽게 삽입하는 것입니다. 모델은 '키워드 목록'보다 '자연어 지시'에 훨씬 더 잘 반응합니다.

더 나아가 배제 조건을 조건절로 작성하여 장면과의 관계를 명확히 할 수도 있습니다. 예를 들어 without cars보다 during golden hour with the streets completely cleared of vehicles가 훨씬 정확합니다. 시간, 상태, 배제 항목이라는 세 가지 정보를 동시에 전달하여 모델이 더 일관된 이미지를 생성하도록 돕기 때문입니다.

2.3 방법 3: 단계별 부정 키워드 목록 삽입법 (시스템화된 템플릿용)

팀이나 프로젝트를 위해 통일된 '품질 기준'을 유지해야 한다면, 자주 사용하는 배제 항목을 분류하여 프롬프트 템플릿의 고정 섹션으로 활용해 보세요.

[Main subject description]
[Style and composition details]

Quality requirements:
The image must be sharp, well-exposed, and free of blur,
JPEG artifacts, watermarks, or visible text.

Anatomy requirements:
All people in the image must have accurate anatomy
with five fingers per hand, symmetrical features,
and natural proportions.

이런 구조화된 부정 키워드 템플릿은 대량 생산이나 브랜드 디자인 등 품질 표준화가 필요한 작업에 매우 유용합니다.

방법 적용 시나리오 적중률 작성 난이도
긍정적 프레임 재작성 단일 창작, 아트 포스터 ⭐⭐⭐⭐⭐ ⭐⭐⭐
자연어 배제법 복잡한 장면, 유연한 배제 ⭐⭐⭐⭐ ⭐⭐
단계별 부정 키워드 목록 대량 생성, 팀 내 재사용 ⭐⭐⭐⭐ ⭐⭐⭐⭐

🎯 방법 선택 가이드: 단일 창작 시에는 방법 1을 우선적으로 사용하세요. 부정어를 쓰지 않을 수 있다면 쓰지 않는 것이 가장 좋습니다. 대량 생성 시에는 방법 3을 사용하여 팀 단위의 프롬프트 템플릿을 구축하는 것을 추천합니다. APIYI(apiyi.com)에서 동일한 주제로 세 가지 방법을 테스트해 보세요. 10분이면 여러분의 비즈니스에 가장 적합한 작성법을 찾을 수 있습니다.

3. Nano Banana Pro API의 올바른 JSON 페이로드 작성법

"왜 negativePrompt 필드를 사용할 수 없는지"와 "어떻게 작성해야 하는지"를 이해했다면, 이제 바로 복사해서 사용할 수 있는 API 호출 코드를 알려드릴게요.

3.1 잘못된 JSON 페이로드 vs 올바른 JSON 페이로드 비교

아래 JSON은 글 서두에서 언급한 오류와 직접적으로 연결되며, "SD에서 마이그레이션할 때" 가장 흔히 발생하는 잘못된 작성 방식입니다.

// ❌ 오류: 400 에러 발생
{
  "contents": [{
    "parts": [{"text": "A cat sitting on a chair"}]
  }],
  "generationConfig": {
    "imageConfig": {
      "aspectRatio": "16:9",
      "negativePrompt": "blurry, low quality, extra fingers"
    }
  }
}

수정된 올바른 작성 방식은 다음과 같습니다:

// ✅ 올바름: 부정적인 묘사를 text에 통합
{
  "contents": [{
    "parts": [{
      "text": "A cat sitting on a chair, sharp focus, crisp details, high resolution, accurate anatomy with natural proportions"
    }]
  }],
  "generationConfig": {
    "responseModalities": ["TEXT", "IMAGE"],
    "imageConfig": {
      "aspectRatio": "16:9",
      "imageSize": "2K"
    }
  }
}

세 가지 핵심 변경 사항에 주목하세요. negativePrompt 필드를 삭제하고, 부정적인 의도를 긍정적인 묘사로 바꾸어 text에 통합했으며, 필요에 따라 imageSize를 설정하여 해상도를 조절했습니다.

3.2 Python SDK 호출 예시

다음은 OpenAI 호환 SDK를 통해 APIYI 중계 서비스를 사용하여 Nano Banana Pro를 호출하는 가장 간단한 코드입니다.

from openai import OpenAI

client = OpenAI(
    api_key="your_api_key",
    base_url="https://vip.apiyi.com/v1"  # APIYI 중계 주소
)

response = client.images.generate(
    model="gemini-3-pro-image-preview",
    prompt=(
        "A cat sitting on a wooden chair in a bright sunlit room, "
        "photorealistic style, sharp focus, crisp details, "
        "accurate feline anatomy with natural fur texture, "
        "clean background free of text or watermarks"
    ),
    size="1792x1024",  # 16:9 비율에 대응
)

전체 호출 과정에 negative_prompt 매개변수는 전혀 없습니다. "원하지 않는 요소"에 대한 모든 표현은 자연어 형태로 프롬프트에 녹여내야 합니다.

3.3 자주 발생하는 오류 및 해결 방법

유사한 오류를 빠르게 해결할 수 있도록 자주 발생하는 오류를 아래 표로 정리했습니다.

오류 메시지 조각 근본 원인 해결 방안
Unknown name "negativePrompt" 필드 존재하지 않음 필드 삭제 후 부정적 묘사를 프롬프트에 포함
Unknown name "seed" Nano Banana Pro는 seed 미지원 무작위성을 수용하고 여러 번 생성하여 선택
Unknown name "cfg_scale" CFG 매개변수 미지원 프롬프트 강도 단어 사용 (예: "strictly photorealistic")
Invalid value at 'aspectRatio' 비율 문자열 오타 "16×9"가 아닌 "16:9" 사용 확인
image_config 필드 무효 중첩 계층 오류 imageConfiggenerationConfig 아래에 있는지 확인

🎯 디버깅 제안: 400 오류를 해결할 때는 먼저 가장 간단한 페이로드(text만 포함)로 연결 상태를 테스트한 후, 설정을 하나씩 추가하는 것이 좋습니다. APIYI apiyi.com은 완전한 Gemini 3 Pro Image 인터페이스를 제공하므로 공식 직접 연결보다 훨씬 안정적인 디버깅 환경을 경험할 수 있습니다.

4. Nano Banana Pro 부정적 프롬프트의 고급 최적화 기술

기본적인 작성법을 익혔다면, 이제 부정적인 표현을 "사용 가능한 수준"에서 "전문가 수준"으로 끌어올릴 수 있는 4가지 고급 기술을 소개합니다.

nano-banana-pro-api-negative-prompt-guide-ko 图示

4.1 추상적인 부정 대신 구체적인 묘사 사용하기

모델은 추상적인 형용사보다 구체적인 명사를 훨씬 더 잘 이해합니다. 다음 두 가지 작성 방식을 비교해 보세요.

  • ❌ 모호함: high quality, not bad
  • ✅ 구체적: shot on a Sony A7R IV, 35mm f/1.4 lens, ISO 100, sharp focus on subject, soft bokeh background

구체적인 장비 설정, 조리개, ISO, 렌즈 초점 거리 등은 모델이 "전문 사진"에 대해 가지고 있는 선험적 지식을 자극하며, "high quality"를 수만 번 쓰는 것보다 훨씬 효과적입니다.

4.2 "예술 스타일 피하기"를 "예술 스타일 지정하기"로 전환

많은 SD 사용자가 not anime, not cartoon, not 3D와 같은 부정적인 단어를 쓰는 데 익숙하지만, Nano Banana Pro에서는 이러한 방식이 효과적이지 않습니다. 올바른 방법은 원하는 스타일을 직접 지정하는 것입니다.

  • 실사 스타일을 원할 때 → unstaged documentary photography style
  • 유화 질감을 원할 때 → oil painting on textured canvas, visible brushstrokes
  • 보도 사진 느낌을 원할 때 → photojournalism style, candid moment, natural lighting

스타일을 명확하게 지정하면 해당 스타일의 묘사 강도가 자동으로 다른 스타일의 경향을 억제하므로, "not X"를 쓸 필요가 전혀 없습니다.

4.3 구조화된 프롬프트 템플릿 활용하기

복잡한 장면을 구조화된 템플릿으로 나누어 모델이 각 의도를 계층적으로 이해하도록 하세요.

SUBJECT: A young woman reading a book
SETTING: Cozy library with warm afternoon light
STYLE: Editorial photography, shot on Leica Q2
QUALITY: Sharp focus on subject, soft natural bokeh
EXCLUDE: No text, no watermarks, no other people in frame

이러한 구조화된 템플릿은 Nano Banana Pro에서 긴 문장의 프롬프트보다 훨씬 안정적이며, 특히 EXCLUDE 섹션을 마지막 "강제 제약 조건"으로 사용하면 효과가 매우 좋습니다.

4.4 다중 반복 시 배제 지시사항 유지

Nano Banana Pro는 다중 편집을 지원하지만, 매 단계마다 완전한 부정적 의도를 다시 언급해야 합니다. 그렇지 않으면 모델이 후속 편집 과정에서 이전에 배제했던 요소를 다시 도입하기 쉽습니다. 배제 지시사항을 상수 문자열로 저장해 두고 매 반복마다 붙여넣는 것을 권장합니다.

고급 기술 해결 문제 효과 향상
추상적 부정 대신 구체적 묘사 모델이 추상적 단어를 이해하지 못함 높음
부정적 스타일 대신 스타일 지정 부정적 스타일 단어 적중률 낮음 매우 높음
구조화된 프롬프트 템플릿 긴 문장 프롬프트 불안정 높음
다중 반복 시 배제 재언급 편집 후 요소 복귀 중간

nano-banana-pro-api-negative-prompt-guide-ko 图示

5. Nano Banana Pro 부정 프롬프트 FAQ

5.1 정말 negativePrompt 필드가 아예 없나요? 나중에 추가될까요?

현재까지 Google AI 공식 문서와 Vertex AI 문서에는 aspectRatioimageSize라는 두 가지 image_config 필드만 명시되어 있습니다. Google은 여러 블로그와 컨퍼런스를 통해 "독립적인 부정 프롬프트 필드에 반대한다"는 제품 철학을 밝혀왔기에, 단기간 내에 이 필드가 추가될 가능성은 매우 낮습니다. 기다리기보다는 긍정적인 프롬프트 작성 방식을 익히는 것을 권장합니다.

5.2 SD(Stable Diffusion) 시절에 쓰던 부정 프롬프트 목록을 그대로 써도 될까요?

참고용으로는 좋지만, Nano Banana Pro 프롬프트에 그대로 복사해서 붙여넣는 것은 권장하지 않습니다. SD 시절의 부정 프롬프트를 '품질, 해부학, 스타일, 요소'별로 분류한 뒤, 본문의 2절에서 설명한 방법처럼 긍정적인 묘사나 자연스러운 문장으로 바꾸어 사용하는 것이 좋습니다.

5.3 "no X"와 같은 간단한 부정문은 정말 효과가 없나요?

완전히 효과가 없는 것은 아니지만, 긍정적인 묘사보다는 효과가 떨어집니다. no cars와 같은 짧은 문구는 Nano Banana Pro에서 약 60~70% 정도의 적중률을 보이지만, empty deserted street with no traffic과 같이 구체적으로 묘사하면 95% 이상의 적중률을 보입니다. 결과의 안정성이 중요하다면 긍정적인 프롬프트 구성을 우선하세요.

5.4 Nano Banana Pro를 안정적으로 테스트할 수 있는 곳은 어디인가요?

국내 개발자라면 APIYI(apiyi.com)를 통해 Nano Banana Pro를 호출할 수 있습니다. 모델 ID는 gemini-3-pro-image-preview이며, base_urlhttps://vip.apiyi.com/v1으로 설정하면 별도의 프록시 설정 없이 바로 사용할 수 있습니다. 해당 플랫폼은 Nano Banana Pro를 포함한 다양한 주요 이미지 모델을 지원하므로, 모델별로 부정 프롬프트를 어떻게 처리하는지 비교하기 좋습니다.

5.5 호출 시 negativePromptimage_config 하위가 아닌 generation_config 최상단에 넣으면 작동할까요?

아니요, 작동하지 않습니다. generation_config 최상단, image_config 하위, 혹은 contents.parts 내의 독립적인 파트로 넣더라도 필드가 존재하지 않는다는 오류가 발생합니다. Nano Banana Pro의 스키마는 엄격한 화이트리스트 방식을 따르므로, 명시되지 않은 필드는 모두 거부됩니다.

5.6 negativePrompt가 없다면 seedcfg_scale 같은 파라미터도 없는 건가요?

네, 없습니다. Nano Banana Pro의 조정 가능한 파라미터는 aspectRatioimageSize뿐입니다. 이는 Google이 개발자로 하여금 초매개변수(hyperparameter)를 조정하는 대신, 더 나은 자연어 프롬프트를 작성하는 데 집중하도록 유도하는 제품 전략입니다. 처음엔 어색할 수 있지만, 적응하고 나면 프롬프트 엔지니어링의 가독성과 재사용성이 훨씬 높아집니다.

5.7 한국어로 제외 명령을 작성해도 모델이 인식하나요?

인식은 가능하지만 영어만큼 안정적이지는 않습니다. Nano Banana Pro의 학습 데이터는 영어 비중이 훨씬 높기 때문에, "텍스트 워터마크 없음"이라고 작성하면 대부분 작동하지만 가끔 무시되기도 합니다. 안정성이 중요하다면 한국어 프롬프트에 영어 부정 문구를 섞어 쓰는 것을 추천합니다. 예를 들어 "깔끔한 배경, free of text and watermarks"와 같이 혼용하면 순수 한국어보다 적중률이 15% 정도 높습니다.

5.8 기존 이미지를 수정할 때, 원치 않는 요소가 추가되지 않게 하려면 어떻게 해야 하나요?

편집 모드에서는 "명시적 유지 + 명시적 제외"의 이중 제약 방식을 추천합니다. 먼저 keep everything else identical, including [유지할 요소 목록]으로 유지할 내용을 고정하고, 이어서 make sure not to introduce [제외할 요소 목록]으로 명시적으로 제외합니다. 두 가지 제약이 동시에 존재할 때 편집 결과의 제어력이 훨씬 높아집니다. 이 방식은 브랜드 비주얼 업데이트나 캐릭터 일관성 유지 작업 시 특히 유용합니다.

6. 요약: Nano Banana Pro 부정 프롬프트의 핵심 사고방식

처음에 마주했던 Unknown name "negativePrompt" 오류는 버그가 아니라 Nano Banana Pro의 제품 설계입니다. 이 모델은 어떤 형태의 독립적인 부정 프롬프트 필드도 허용하지 않습니다. "원하지 않는 것"에 대한 모든 의도는 반드시 자연어 형태로 메인 프롬프트에 녹여내야 합니다.

다음 세 가지 핵심 원칙만 기억하세요:

  1. 긍정 프롬프트 우선: "no cars"보다는 "empty street"가 훨씬 좋습니다. 가능한 한 긍정적인 문장으로 바꾸세요.
  2. 부정 표현은 자연어로: 프롬프트 내에서 without, free of, avoid와 같은 자연스러운 연결어를 사용하고, SD 스타일의 쉼표로 구분된 키워드 나열은 피하세요.
  3. 구조화된 템플릿 재사용: 팀 단위 작업 시 '품질, 해부학, 요소' 등 세 가지 제외 항목을 템플릿화하여 필요할 때마다 조합해 사용하세요.

🎯 다음 단계: 현재 사용 중인 SD 부정 프롬프트 목록을 본문 2절의 세 가지 방식에 맞춰 각각 수정해 보세요. APIYI(apiyi.com)에서 동일한 피사체로 비교 테스트를 진행하며 나만의 Nano Banana Pro 프롬프트 라이브러리를 구축해 보시기 바랍니다.

Nano Banana Pro의 "부정 프롬프트 필드 없음" 설계가 처음엔 낯설겠지만, 깊이 사용해 보면 "더 정교한 자연어로 모든 의도를 표현하는" 이 방식이야말로 멀티모달 생성 모델의 미래라는 것을 알게 될 것입니다. 사고방식을 빠르게 전환할수록 모델의 강력한 성능을 더 잘 활용할 수 있습니다.

마지막으로 강조하고 싶은 점은, 400 오류 메시지는 사실 Google의 "친절한 조언"이라는 것입니다. "이전 세대 모델의 워크플로우를 그대로 가져오지 말고, 나의 새로운 입력 인터페이스를 이해해 달라"는 뜻이죠. 이 오류를 학습의 장애물이 아닌 시작점으로 삼으세요. Nano Banana Pro의 프롬프트 엔지니어링이 SD보다 훨씬 간단하고 읽기 쉬우며, 실제 디자인 커뮤니케이션 언어와 더 가깝다는 것을 깨닫게 될 것입니다.


저자: APIYI 기술팀
적용 플랫폼: APIYI(apiyi.com) Nano Banana Pro (gemini-3-pro-image-preview) 인터페이스

Similar Posts