|

Nano Banana 2 이미지 API 오류 해결: generateContent 올바른 호출 형식으로 3단계 전환

저자 주: Nano Banana 2 이미지 생성 API에서 발생하는 "not supported model for image generation" 오류의 근본 원인과 OpenAI 형식에서 Google 네이티브 generateContent 형식으로 올바르게 전환하는 방법을 상세히 설명합니다.

Nano Banana 2로 이미지를 생성할 때 not supported model for image generation 오류가 발생하시나요? 이는 현재 개발자가 가장 자주 접하는 Gemini 이미지 API 호출 문제 중 하나입니다. 이 글에서는 오류의 근본 원인과 올바른 호출 방식을 소개하여 Nano Banana 2 이미지 API 오류를 빠르게 해결하는 데 도움을 드립니다.

핵심 가치: 이 글을 읽고 나면 Gemini 이미지 모델과 Imagen 모델의 API 호출 차이를 이해하고, generateContent 엔드포인트의 올바른 사용법을 익히며, 3단계로 오류 문제를 해결할 수 있게 됩니다.

nano-banana-2-api-error-fix-generatecontent-guide-ko 图示


Nano Banana 2 이미지 API 오류 핵심 원인

요점 설명 해결책
오류 메시지 not supported model for image generation, only imagen models are supported generateContent 엔드포인트로 전환
근본 원인 OpenAI 형식 엔드포인트는 Imagen 모델만 지원하며, Gemini 이미지 모델은 지원하지 않음 Google 네이티브 API 형식 사용
올바른 엔드포인트 /v1beta/models/{MODEL}:generateContent /v1/images/generations 대체
필수 매개변수 responseModalities: ["TEXT", "IMAGE"] generationConfig에서 설정

Nano Banana 2 이미지 API 오류 상세 설명

OpenAI 호환 형식의 /v1/images/generations 엔드포인트를 사용하여 Nano Banana 2(gemini-3.1-flash-image-preview) 또는 Nano Banana Pro(gemini-3-pro-image-preview)를 호출할 때 시스템은 다음 오류를 반환합니다:

not supported model for image generation, only imagen models are supported
(request id: 20260315043447253411115cvUiXJMF)
new_api_error convert_request_failed, 500

이 오류의 핵심 원인은 다음과 같습니다: Gemini 이미지 모델과 Imagen 모델은 완전히 다른 아키텍처를 가진 모델입니다.

  • Imagen 모델 (예: imagen-3.0-generate-001)은 전용 이미지 생성 모델로, /v1/images/generations 또는 :predict 엔드포인트를 사용합니다.
  • Gemini 이미지 모델 (Nano Banana 시리즈)은 멀티모달 언어 모델로, 텍스트와 이미지를 동시에 출력할 수 있으며, 반드시 :generateContent 엔드포인트를 사용해야 합니다.

간단히 말해서, 여러분이 "텍스트-이미지 변환 전용 채널"을 사용하여 "멀티모달 대화 모델"을 호출했기 때문에 형식이 맞지 않아 오류가 발생한 것입니다.

nano-banana-2-api-error-fix-generatecontent-guide-ko 图示


Nano Banana 2 이미지 API 올바른 호출 형식

잘못된 호출 vs 올바른 호출 비교

비교 항목 ❌ 잘못된 방식 (OpenAI 형식) ✅ 올바른 방식 (generateContent 형식)
API 엔드포인트 /v1/images/generations /v1beta/models/{MODEL}:generateContent
요청 구조 prompt + size + n 매개변수 contents + generationConfig 구조
응답 형식 이미지 URL 인라인 Base64 이미지 데이터
지원 모델 DALL-E, Imagen 시리즈 Gemini 이미지 모델 (Nano Banana 시리즈)
출력 내용 이미지만 텍스트 + 이미지 (멀티모달 출력)

Nano Banana 2 이미지 API 잘못된 요청 예시

다음은 오류를 발생시키는 잘못된 호출 방식입니다:

# ❌ 잘못됨: OpenAI 형식으로 Nano Banana 2 호출
curl -X POST https://api.apiyi.com/v1/images/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "prompt": "햇살 아래에서 낮잠 자는 귀여운 주황 고양이",
    "size": "1024x1024",
    "n": 1
  }'
# 반환: not supported model for image generation

Nano Banana 2 이미지 API 올바른 요청 예시

다음은 올바른 generateContent 형식 호출 방식입니다:

# ✅ 올바름: Google 네이티브 generateContent 형식 사용
curl -X POST https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {"text": "햇살 아래에서 낮잠 자는 귀여운 주황 고양이"}
      ]
    }],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"]
    }
  }'

🎯 기술 팁: APIYI apiyi.com 플랫폼을 통해 Nano Banana 2를 호출하면 별도의 Google Cloud 계정 설정 없이, 통합 API 키를 사용해 generateContent 엔드포인트를 직접 호출할 수 있습니다.


Nano Banana 2 이미지 API 빠른 시작

Nano Banana 2 이미지 API 오류를 3단계로 수정하기

1단계: API 엔드포인트 변경

요청 주소를 OpenAI 형식에서 generateContent 형식으로 전환하세요:

# 잘못된 엔드포인트
https://api.apiyi.com/v1/images/generations

# 올바른 엔드포인트 (Nano Banana 2)
https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent

# 올바른 엔드포인트 (Nano Banana Pro)
https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent

2단계: 요청 본문 구조 수정

OpenAI의 prompt + size 매개변수에서 Google 네이티브의 contents + generationConfig 구조로 변경하세요. 핵심 매개변수:

  • contents.parts.text: 이미지 설명 텍스트
  • generationConfig.responseModalities: 반드시 ["TEXT", "IMAGE"]로 설정해야 합니다

3단계: 응답 데이터 처리

generateContent가 반환하는 이미지는 URL이 아닌 Base64로 인코딩된 인라인 데이터입니다. 응답에서 이미지를 추출하고 디코딩해야 합니다.

초간단 Python 예시

import requests
import base64

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com"  # APIYI 통합 인터페이스

response = requests.post(
    f"{BASE_URL}/v1beta/models/gemini-3.1-flash-image-preview:generateContent",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "contents": [{"parts": [{"text": "햇살 아래에서 낮잠 자는 귀여운 주황 고양이"}]}],
        "generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}
    }
)

result = response.json()
for part in result["candidates"][0]["content"]["parts"]:
    if "inlineData" in part:
        img_data = base64.b64decode(part["inlineData"]["data"])
        with open("output.png", "wb") as f:
            f.write(img_data)
        print("이미지가 output.png로 저장되었습니다")
    elif "text" in part:
        print("모델 설명:", part["text"])

전체 구현 코드 보기 (오류 처리 및 화면비율 설정 포함)
import requests
import base64
import os
from typing import Optional

def generate_image(
    prompt: str,
    model: str = "gemini-3.1-flash-image-preview",
    aspect_ratio: str = "1:1",
    output_path: str = "output.png",
    api_key: Optional[str] = None
) -> dict:
    """
    Nano Banana 2 generateContent 엔드포인트를 사용하여 이미지 생성

    Args:
        prompt: 이미지 설명
        model: 모델 이름
        aspect_ratio: 화면비율 (1:1, 16:9, 9:16, 4:3, 3:4)
        output_path: 출력 파일 경로
        api_key: API 키

    Returns:
        파일 경로와 모델 설명을 포함한 딕셔너리
    """
    api_key = api_key or os.getenv("APIYI_API_KEY")
    base_url = "https://api.apiyi.com"  # APIYI 통합 인터페이스

    response = requests.post(
        f"{base_url}/v1beta/models/{model}:generateContent",
        headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        },
        json={
            "contents": [{"parts": [{"text": prompt}]}],
            "generationConfig": {
                "responseModalities": ["TEXT", "IMAGE"],
                "imageConfig": {"aspectRatio": aspect_ratio}
            }
        },
        timeout=60
    )

    if response.status_code != 200:
        raise Exception(f"API 요청 실패: {response.status_code} - {response.text}")

    result = response.json()
    candidates = result.get("candidates", [])
    if not candidates:
        raise Exception("유효한 결과가 반환되지 않았습니다")

    output = {"text": "", "image_path": ""}
    for part in candidates[0]["content"]["parts"]:
        if "inlineData" in part:
            img_data = base64.b64decode(part["inlineData"]["data"])
            with open(output_path, "wb") as f:
                f.write(img_data)
            output["image_path"] = output_path
        elif "text" in part:
            output["text"] = part["text"]

    return output

# 사용 예시
result = generate_image(
    prompt="먹물 스타일의 산수화, 멀리 안개가 자욱한 산맥이 보임",
    model="gemini-3.1-flash-image-preview",
    aspect_ratio="16:9",
    output_path="landscape.png"
)
print(f"이미지가 저장되었습니다: {result['image_path']}")
print(f"모델 설명: {result['text']}")

권장사항: APIYI apiyi.com에서 API 키를 획득하세요. 플랫폼은 무료 테스트 한도를 제공하며, Nano Banana 2와 Nano Banana Pro 두 가지 Gemini 이미지 모델의 generateContent 호출을 지원합니다.

Nano Banana 2 이미지 API 모델 비교

다른 이미지 생성 모델의 API 호출 방식 차이를 이해하면 다음과 같은 형식 오류를 피하는 데 도움이 됩니다:

모델 코드명 API 엔드포인트 호출 형식 사용 가능 플랫폼
Nano Banana 2 gemini-3.1-flash-image-preview :generateContent Google 네이티브 형식 APIYI 등 플랫폼
Nano Banana Pro gemini-3-pro-image-preview :generateContent Google 네이티브 형식 APIYI 등 플랫폼
Imagen 3 imagen-3.0-generate-001 /v1/images/generations 또는 :predict OpenAI 호환 형식 APIYI 등 플랫폼
DALL-E 3 dall-e-3 /v1/images/generations OpenAI 형식 APIYI 등 플랫폼

Nano Banana 2 이미지 API 주요 매개변수 설명

nano-banana-2-api-error-fix-generatecontent-guide-ko 图示

generateContent 엔드포인트는 다양한 이미지 생성 매개변수를 지원합니다:

매개변수 설명 필수 여부 예시 값
contents.parts.text 이미지 설명 프롬프트 ✅ 필수 "햇살 아래 주황색 고양이"
responseModalities 응답 모달리티 설정 ✅ 필수 ["TEXT", "IMAGE"]
imageConfig.aspectRatio 이미지 종횡비 선택 사항 "1:1", "16:9", "9:16"
contents.parts.inlineData 참조 이미지 (이미지-이미지 변환) 선택 사항 Base64 이미지 데이터

💡 중요 참고사항: responseModalities는 반드시 "TEXT""IMAGE"를 모두 포함해야 합니다. ["IMAGE"]만 설정하면 요청이 실패합니다. 이는 Gemini 이미지 모델이 멀티모달 모델로, 항상 텍스트 설명과 이미지를 동시에 출력하기 때문입니다.


자주 묻는 질문

Q1: Nano Banana 2는 왜 OpenAI 형식으로 호출할 수 없나요?

Nano Banana 2(gemini-3.1-flash-image-preview)는 Gemini 기반의 멀티모달 언어 모델입니다. 이 모델의 이미지 생성 능력은 전용 "텍스트-이미지 변환 API"가 아니라 "대화 생성"을 통해 구현됩니다. OpenAI 형식의 /v1/images/generations 엔드포인트는 DALL-E나 Imagen 같은 전용 이미지 생성 모델을 위해 설계되었으며, Gemini 모델의 멀티모달 요청 구조를 처리할 수 없습니다. APIYI apiyi.com 플랫폼을 통해 호출할 때는 모델 유형에 맞는 엔드포인트 형식을 선택해야 합니다.

Q2: Nano Banana 2와 Nano Banana Pro 이미지 API의 차이점은 무엇인가요?

두 모델 모두 generateContent 엔드포인트를 사용하며, 호출 형식은 완전히 동일합니다. 주요 차이점은 다음과 같습니다:

  • Nano Banana 2 (Flash 버전): 생성 속도가 더 빠르며(약 3-5초), 대량 생성이나 빠른 프로토타이핑에 적합합니다.
  • Nano Banana Pro: 이미지 품질이 더 높고, 텍스트 렌더링 정확도가 94%에 달해 정밀한 디자인이나 상업적 용도에 적합합니다.

APIYI apiyi.com 플랫폼에서 두 모델 모두 사용 가능하며, 엔드포인트 URL에서 모델 이름만 변경하면 됩니다.

Q3: generateContent가 반환한 이미지 데이터는 어떻게 처리하나요?

OpenAI 형식이 이미지 URL을 반환하는 것과 달리, generateContent는 Base64로 인코딩된 인라인 이미지 데이터를 반환합니다. 처리 단계는 다음과 같습니다:

  1. 응답 JSON의 candidates[0].content.parts에서 inlineData를 포함하는 부분을 찾습니다.
  2. inlineData.data 필드의 Base64 문자열을 가져옵니다.
  3. base64.b64decode()를 사용해 디코딩한 후 이미지 파일로 저장합니다.
  4. inlineData.mimeType 필드에서 이미지 형식(보통 image/png)을 확인할 수 있습니다.

요약

Nano Banana 2 이미지 API 오류의 핵심 포인트입니다:

  1. 오류 원인 명확: /v1/images/generations(OpenAI 형식)을 사용해 Gemini 이미지 모델을 호출하면 "not supported model" 오류가 발생합니다.
  2. generateContent로 전환: 올바른 엔드포인트는 /v1beta/models/gemini-3.1-flash-image-preview:generateContent입니다.
  3. responseModalities 설정: generationConfig에 반드시 ["TEXT", "IMAGE"]를 포함해야 하며, 그렇지 않으면 이미지를 생성할 수 없습니다.

Nano Banana 2 API 오류를 만났을 때 핵심은 한 마디로 요약됩니다: OpenAI의 이미지 생성 엔드포인트를 Google 네이티브의 generateContent 엔드포인트로 교체하세요.

Google Cloud 계정 설정 없이 generateContent 형식을 직접 호출할 수 있는 APIYI apiyi.com 플랫폼을 통해 Nano Banana 2와 Nano Banana Pro를 빠르게 테스트해 보시기 바랍니다. 플랫폼은 무료 사용량을 제공합니다.

📚 참고 자료

  1. Google Gemini 이미지 생성 문서: Gemini API 공식 이미지 생성 가이드

    • 링크: ai.google.dev/gemini-api/docs/image-generation
    • 설명: generateContent 엔드포인트의 완전한 매개변수 설명과 예제를 포함합니다.
  2. Google generateContent API 참조: Gemini API 콘텐츠 생성 인터페이스 문서

    • 링크: ai.google.dev/api/generate-content
    • 설명: generateContent 엔드포인트의 요청 및 응답 구조에 대한 상세 설명입니다.
  3. Google Gemini OpenAI 호환성 문서: Gemini와 OpenAI 형식의 호환성 설명

    • 링크: ai.google.dev/gemini-api/docs/openai
    • 설명: 어떤 기능이 OpenAI 호환 형식을 지원하고, 어떤 기능이 네이티브 형식이 필요한지 확인할 수 있습니다.

저자: APIYI 기술 팀
기술 교류: Nano Banana 2 이미지 API 호출 문제에 대해 댓글에서 토론해 주세요. 더 많은 자료는 APIYI docs.apiyi.com 문서 센터에서 확인하실 수 있습니다.

Similar Posts