Seedance 2.0 API — Coming SoonGet early access
Nano Banana 2 API 사용법: 코드 예제가 포함된 완전 가이드 (2026)
지도 시간

Nano Banana 2 API 사용법: 코드 예제가 포함된 완전 가이드 (2026)

EvoLink Team
EvoLink Team
Product Team
2026년 2월 27일
14분 소요

요약

  • Nano Banana 2 (gemini-3.1-flash-image-preview)는 2026년 2월 26일 출시 — Pro 수준의 품질을 Flash 속도로 제공
  • 유료 API 키가 필요합니다. 이미지 생성을 위한 무료 할당량은 0입니다
  • Google 가격: $0.101/이미지 (2K), $0.150/이미지 (4K). EvoLink는 약 20% 저렴한 $0.0806 (2K) 제공
  • 세 가지 접근 방법: Google AI Studio (코드 없음), Gemini API (Python/Node.js), 또는 통합 게이트웨이 사용
  • 이 튜토리얼로 10분 이내에 이미지 생성 시작 가능

What Is Nano Banana 2

Nano Banana 2란 무엇인가?

Nano Banana 2는 Gemini 3.1 Flash Image를 기반으로 구축된 Google의 최신 이미지 생성 모델입니다. 2026년 2월 26일, Nano Banana 2는 Gemini 앱의 Fast, Thinking, Pro 모드 전반에서 기본 이미지 모델로 Nano Banana Pro를 대체했습니다.

최대 충실도에 최적화된 다른 모델인 Nano Banana Pro (gemini-3-pro-image-preview)와 혼동하지 마세요. NB2는 속도와 비용 측면에서 유리합니다 — Pro에 가까운 품질을 훨씬 빠르게 제공합니다.
주요 사양 (출처: Google 블로그):
  • 모델 ID: gemini-3.1-flash-image-preview
  • 해상도: 512px ~ 4K, 4:1, 1:4, 8:1, 1:8을 포함한 네이티브 종횡비
  • 주제 일관성: 생성당 최대 5개 캐릭터 + 14개 객체
  • 텍스트 렌더링: 이미지 내 다국어 텍스트 개선
  • 사고 수준: 복잡한 프롬프트를 위한 Minimal (기본값) vs. High/Dynamic
  • AI 식별: SynthID + C2PA Content Credentials
NB2와 Pro의 상세 비교는 상세 비교 분석을 참조하세요.

사전 준비사항: 시작하기 전에 필요한 것

대부분의 개발자가 막히는 부분입니다. Reddit에서 가장 많은 불만은 이유를 이해하지 못한 채 할당량 오류가 발생하는 것입니다.

답은 간단합니다: 이미지 생성에는 유료 API 키가 필요합니다. 예외는 없습니다.

무료 키로 시도하면 다음과 같은 오류가 발생합니다:

"Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count, limit: 0"

옵션 A: Google Cloud 결제

  1. Google AI Studio로 이동
  2. Get API KeyCreate API key 클릭
  3. Google Cloud Console → Billing에서 결제 계정 연결
  4. 프로젝트에서 Gemini API 활성화
  5. 이제 키가 이미지 생성에 작동합니다

옵션 B: 서드파티 게이트웨이

Google Cloud 결제 설정을 건너뛰고 싶다면, EvoLink와 같은 게이트웨이가 더 간단한 온보딩으로 동일한 모델로 라우팅합니다 — 가입하고, 키를 받고, 크레딧을 추가하고, 생성을 시작하세요.

방법 1: Google AI Studio (코드 없음)

코드 작성 없이 테스트하는 가장 빠른 방법:

  1. AI Studio 열기
  2. 모델 드롭다운에서 gemini-3.1-flash-image-preview 선택
  3. 프롬프트 입력: "햇빛이 비치는 초원에 있는 사실적인 골든 리트리버 강아지"
  4. Run 클릭

이미지가 몇 초 내에 나타납니다. 다운로드하거나 프롬프트를 수정하여 다시 시도하세요.

제한사항: 배치 생성, 자동화 또는 프로덕션 통합에는 적합하지 않습니다. 이를 위해서는 API가 필요합니다.

방법 2: Gemini API (Python)

설치

pip install google-generativeai

코드

import google.generativeai as genai
import base64
from pathlib import Path

# API 키 설정
genai.configure(api_key="YOUR_GOOGLE_API_KEY")

# 모델 초기화
model = genai.GenerativeModel(
    model_name="gemini-3.1-flash-image-preview"
)

# 이미지 생성
response = model.generate_content(
    "A photorealistic golden retriever puppy in a sunlit meadow",
    generation_config={
        "response_modalities": ["image"],  # 필수
        "temperature": 1.0,
        "top_p": 0.95
    }
)

# 이미지 저장
if response.candidates and response.candidates[0].content.parts:
    for part in response.candidates[0].content.parts:
        if hasattr(part, 'inline_data'):
            image_data = part.inline_data.data
            Path("output.png").write_bytes(base64.b64decode(image_data))
            print("✓ 이미지가 output.png에 저장되었습니다")
핵심 포인트:
  • response_modalities: ["image"]는 필수입니다. 이것이 없으면 텍스트 응답을 받게 됩니다
  • 이미지는 base64로 인코딩되어 inline_data.data에 반환됩니다
  • 기본 해상도는 2K입니다. 4K의 경우 "image_size": "4K"를 추가하세요

방법 3: Gemini API (Node.js)

설치

npm install @google/generative-ai

코드

import { GoogleGenerativeAI } from "@google/generative-ai";
import fs from "fs";

const genAI = new GoogleGenerativeAI("YOUR_GOOGLE_API_KEY");

const model = genAI.getGenerativeModel({
  model: "gemini-3.1-flash-image-preview"
});

const result = await model.generateContent({
  contents: [{
    role: "user",
    parts: [{
      text: "A photorealistic golden retriever puppy in a sunlit meadow"
    }]
  }],
  generationConfig: {
    responseModalities: ["image"],
    temperature: 1.0,
    topP: 0.95
  }
});

// 이미지 저장
const response = result.response;
if (response.candidates?.[0]?.content?.parts) {
  for (const part of response.candidates[0].content.parts) {
    if (part.inlineData) {
      const buffer = Buffer.from(part.inlineData.data, "base64");
      fs.writeFileSync("output.png", buffer);
      console.log("✓ 이미지가 output.png에 저장되었습니다");
    }
  }
}

Google Cloud 결제를 건너뛰고 싶거나 여러 모델 (Seedream, VEO3, GPT-4O Image)을 하나의 API로 관리하고 싶다면, 게이트웨이가 더 간단합니다.

Python (OpenAI SDK 호환)

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_EVOLINK_API_KEY",
    base_url="https://api.evolink.ai/v1"
)

response = client.chat.completions.create(
    model="gemini-3.1-flash-image-preview",
    messages=[
        {
            "role": "user",
            "content": "A photorealistic golden retriever puppy sitting in a sunlit meadow",
        }
    ],
)

print(response.choices[0].message.content)

Node.js (OpenAI SDK 호환)

npm install openai
const OpenAI = require("openai");

const client = new OpenAI({
  apiKey: "YOUR_EVOLINK_API_KEY",
  baseURL: "https://api.evolink.ai/v1",
});

async function generateImage() {
  const response = await client.chat.completions.create({
    model: "gemini-3.1-flash-image-preview",
    messages: [
      {
        role: "user",
        content:
          "A photorealistic golden retriever puppy sitting in a sunlit meadow",
      },
    ],
  });

  console.log(response.choices[0].message.content);
}

generateImage();

게이트웨이를 사용하는 이유? 하나의 API 키로 여러 모델(NB2, Pro, GPT-4o Image, Seedream)에 접근 가능. Google Cloud 결제 설정 불필요. 같은 모델, 같은 출력.


고급 기능

1. 해상도 제어

generation_config={
    "response_modalities": ["image"],
    "image_size": "4K"  # 옵션: "512", "1K", "2K", "4K"
}
가격 영향:
  • 2K: $0.101 (Google) / $0.0806 (EvoLink)
  • 4K: $0.150 (Google) / $0.120 (EvoLink)

2. 종횡비

generation_config={
    "response_modalities": ["image"],
    "aspect_ratio": "16:9"  # 옵션: "1:1", "16:9", "9:16", "4:3", "3:4", "4:1", "1:4", "8:1", "1:8"
}

3. 사고 수준 (복잡한 프롬프트용)

generation_config={
    "response_modalities": ["image"],
    "thinking_level": "high"  # 옵션: "minimal" (기본값), "high", "dynamic"
}
사용 시기:
  • Minimal: 간단한 프롬프트 (예: "빨간 사과")
  • High: 복잡한 장면 (예: "5명의 캐릭터가 있는 사이버펑크 시장, 각각 고유한 의상")
  • Dynamic: 모델이 자동으로 선택하도록 함

4. 멀티턴 편집

# 첫 번째 생성
chat = model.start_chat()
response1 = chat.send_message(
    "A red apple on a wooden table",
    generation_config={"response_modalities": ["image"]}
)

# 편집
response2 = chat.send_message(
    "Add a green leaf on top of the apple",
    generation_config={"response_modalities": ["image"]}
)

가격 분석

Google 공식 가격

해상도가격/이미지
2K$0.101
4K$0.150
해상도가격/이미지절감액
2K$0.080620.2%
4K$0.12020.0%
비용 예시 (월 1,000개 이미지 @ 2K):
  • Google: $101
  • EvoLink: $80.60
  • 절감액: $20.40/월

프롬프트 작성 팁

✅ 좋은 프롬프트

"A photorealistic portrait of a 30-year-old woman with curly auburn hair, wearing a navy blue blazer, standing in a modern office with floor-to-ceiling windows showing a city skyline at sunset. Soft natural lighting, shallow depth of field, professional photography style."
효과적인 이유:
  • 구체적인 세부사항 (나이, 머리 색깔, 의상)
  • 명확한 설정 (현대적인 사무실, 도시 스카이라인)
  • 조명 및 스타일 지침

❌ 약한 프롬프트

"A woman in an office"
문제점: 너무 모호함. 모델이 추측해야 합니다.

프롬프트 구조

  1. 주제: 무엇을 생성할 것인가 (사람, 객체, 장면)
  2. 세부사항: 외모, 색상, 질감
  3. 설정: 위치, 배경, 환경
  4. 스타일: 사실적, 만화, 유화 등
  5. 조명: 자연광, 극적인, 부드러운, 황금 시간대
  6. 구도: 클로즈업, 와이드 샷, 조감도

일반적인 오류 및 해결 방법

오류 1: 할당량 초과

"Quota exceeded for metric: generativelanguage.googleapis.com/generate_content_free_tier_input_token_count"
원인: 무료 API 키 사용 해결 방법: Google Cloud에서 결제 활성화 또는 유료 게이트웨이 사용

오류 2: 이미지 대신 텍스트 응답

원인: response_modalities: ["image"] 누락 해결 방법: generation_config에 추가

오류 3: 400 잘못된 요청

"Invalid argument: response_modalities must include 'image'"
원인: 오타 또는 잘못된 구성 형식 해결 방법: 위의 코드 예제와 정확히 일치하는지 확인

오류 4: 429 속도 제한

원인: 너무 많은 요청을 너무 빠르게 전송 해결 방법: 지수 백오프 구현:
import time

def generate_with_retry(prompt, max_retries=3):
    for attempt in range(max_retries):
        try:
            return model.generate_content(prompt, generation_config={...})
        except Exception as e:
            if "429" in str(e) and attempt < max_retries - 1:
                wait_time = 2 ** attempt
                print(f"{wait_time}초 후 재시도 중...")
                time.sleep(wait_time)
            else:
                raise

프로덕션 체크리스트

프로덕션에 배포하기 전:

  • API 키를 환경 변수에 저장 (코드에 하드코딩하지 않음)
  • 속도 제한을 위한 재시도 로직 구현
  • 생성된 이미지를 클라우드 스토리지에 저장 (S3, GCS)
  • 비용 추적을 위한 사용량 로깅 추가
  • 부적절한 콘텐츠를 위한 프롬프트 필터링 설정
  • 프롬프트 인젝션 공격에 대한 입력 검증
  • 대기 시간 모니터링 (평균 생성 시간: 2-4초)
  • 예산 초과를 방지하기 위한 지출 한도 설정

자주 묻는 질문

Q: Nano Banana 2와 Nano Banana Pro 중 어느 것을 사용해야 하나요?
A: 기본적으로 NB2를 사용하세요. 더 빠르고 약 50% 저렴합니다. 최대 충실도 또는 정확한 텍스트 렌더링 (94% 정확도)이 필요한 경우에만 Pro를 사용하세요. NB2 vs Pro 비교를 참조하세요.
Q: 속도 제한은 어떻게 되나요?

A: Google의 RPM 제한은 결제 등급에 따라 다르며 완전히 문서화되어 있지 않습니다. 429 오류에 대한 지수 백오프를 구현하세요.

Q: NB2로 이미지를 편집할 수 있나요?

A: 예. 멀티턴 대화 — 이미지를 생성한 다음 후속 메시지에서 편집 내용을 설명하세요.

Q: 어떤 해상도가 지원되나요?

A: 512px, 1K, 2K, 4K. 종횡비: 1:1, 16:9, 9:16, 4:3, 3:4, 4:1, 1:4, 8:1, 1:8.

Q: 이미지에 워터마크가 있나요?

A: SynthID (보이지 않음) + C2PA Content Credentials. 시각적으로 보이지 않지만 검증 도구로 감지 가능합니다.

Q: Pro에서 NB2로 전환하는 방법은?
A: 모델을 gemini-3-pro-image-preview에서 gemini-3.1-flash-image-preview로 변경하세요. API 인터페이스는 동일하며 다른 코드 변경은 필요하지 않습니다.

생성 시작하기

세 단계:

  1. 유료 API 키 받기 (Google AI Studio 또는 evolink.ai/signup)
  2. 위의 코드 복사
  3. 실행

AI 비용을 89% 절감할 준비가 되셨나요?

오늘 EvoLink를 시작하고 지능형 API 라우팅의 힘을 경험해보세요.