AI 이미지 생성 비용을 6.7배 줄인 방법 — Gemini API 실전 최적화

Gemini API로 이미지를 생성할 때 비용의 98%가 출력 토큰에서 발생한다. PNG를 JPEG로 바꾸고, Imagen Fast를 기본으로 쓰고, 품질 선택 UI를 만들어서 장당 $0.134를 $0.02로 줄인 과정.

AI 이미지 생성 비용을 6.7배 줄인 방법 — Gemini API 실전 최적화

이미지 1장에 $0.134 — 이게 맞는 건가?

나는 텔레그램 봇으로 블로그를 운영한다. 글을 쓸 때마다 이미지 4장을 자동 생성하는데, Gemini 3 Pro로 한 장 만들면 $0.134다. 포스트 하나에 $0.54, 한 달에 20개 포스트를 쓰면 이미지만 $10.8이 나간다.

글 생성 비용보다 이미지 생성 비용이 더 크다. 뭔가 이상하다.

그래서 파고들었다. Gemini API의 이미지 토큰 과금 구조를 뜯어보고, 실제로 비용을 6.7배 줄인 과정을 정리한다.

핵심 발견 — 비용의 98%는 ‘출력’에서 나온다

Gemini API의 이미지 관련 과금을 분석하면 구조가 명확하다.

항목토큰 수단가 (Gemini 3 Pro)비용
입력 텍스트 (프롬프트)~200$1.25/1M$0.00025
입력 이미지 (편집 시)~260$1.25/1M$0.000325
출력 이미지~8,000$16.875/1M$0.135

출력 이미지 토큰이 전체 비용의 98% 이상을 차지한다. 입력 프롬프트를 아무리 줄여봤자 비용에는 의미 없는 수준이다. 진짜 비용 절감 포인트는 모델 선택에 있다.

비용 구조 분석

최적화 1: PNG → JPEG 변환 — 입력 크기 10-20배 절감

이건 비용보다는 속도와 안정성 최적화다. 이미지를 편집할 때 원본 이미지를 API에 보내야 하는데, PIL Image를 그냥 넘기면 내부적으로 PNG로 인코딩된다.

문제는 PNG가 무겁다는 것이다. 같은 1280px 사진이 PNG로 3-5MB, JPEG로 200-400KB다. 10배 이상 차이가 난다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Before: PIL Image를 그냥 전달 → 내부적으로 PNG 인코딩 (3-5MB)
response = client.models.generate_content(
    model="gemini-3-pro-image-preview",
    contents=[prompt, pil_image],  # PIL Image → PNG (느림)
)

# After: JPEG로 명시적 변환 → 200-400KB
jpeg_buf = io.BytesIO()
rgb_img = image.convert("RGB")
rgb_img.save(jpeg_buf, format="JPEG", quality=85)
image_part = types.Part(
    inline_data=types.Blob(data=jpeg_buf.getvalue(), mime_type="image/jpeg")
)
response = client.models.generate_content(
    model="gemini-3-pro-image-preview",
    contents=[prompt, image_part],  # JPEG Part (빠름)
)

이미지 분석 용도(스타일 판별 등)는 quality=70으로 더 낮춰도 된다. 분석에는 디테일보다 전체 분위기가 중요하니까.

실측 결과:

  • 업로드 크기: 3.2MB → 280KB (11.4배 절감)
  • API 응답 시간: 체감 1-2초 빨라짐
  • 토큰 비용: 입력 이미지 토큰이 원래 $0.000325 수준이라 비용 차이는 미미

솔직히 비용 절감 효과는 거의 없다. 하지만 대용량 PNG 전송으로 인한 타임아웃이 사라졌고, 특히 모바일 네트워크에서 안정성이 올라갔다.

최적화 2: Imagen Fast — 장당 $0.02의 가성비 왕

이게 진짜 핵심이다. Gemini API에서 이미지를 생성하는 방법은 크게 두 가지다.

방식모델장당 비용속도품질
generateContentGemini 3 Pro$0.13415초⭐⭐⭐⭐⭐
generateContentGemini 2.5 Flash Image~$0.0210초⭐⭐⭐⭐
generate_imagesImagen 4.0 Fast$0.027초⭐⭐⭐⭐
generate_imagesImagen 4.0$0.049초⭐⭐⭐⭐
generate_imagesImagen 4.0 Ultra$0.0810초⭐⭐⭐⭐⭐

Imagen Fast가 장당 $0.02다. Gemini 3 Pro의 6.7분의 1. 품질도 블로그 이미지로 쓰기에 충분하다. 사실적인 사진 스타일은 Imagen이 오히려 Gemini보다 낫다.

실제 사용법 — Gemini API 콘솔에서 설정

Google AI Studio에서 Imagen 모델을 직접 테스트해볼 수 있다:

  1. Google AI Studio 접속
  2. 왼쪽 메뉴에서 Image generation 선택
  3. 모델 드롭다운에서 imagen-4.0-fast-generate-001 선택
  4. 프롬프트 입력 후 Generate 클릭

Python SDK로는 이렇게 사용한다:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import google.generativeai as genai
from google.generativeai import types

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

# 2. Imagen Fast로 이미지 생성 ($0.02/장)
response = client.models.generate_images(
    model="imagen-4.0-fast-generate-001",
    prompt="A vibrant illustration of a developer analyzing cost metrics on a laptop",
    config=types.GenerateImagesConfig(
        number_of_images=1,
        aspect_ratio="1:1",  # 1:1, 3:4, 4:3, 9:16, 16:9 지원
    ),
)

# 3. 이미지 저장
image_data = response.images[0]._image_data
with open("output.jpg", "wb") as f:
    f.write(image_data)

generateContent vs generate_images 차이:

  • generateContent (Gemini 3 Pro): 텍스트와 이미지를 동시에 분석/생성. 복잡한 프롬프트 해석에 강함. 하지만 비쌈 ($0.134/장)
  • generate_images (Imagen Fast): 순수 이미지 생성 전용. 프롬프트 단순해도 품질 우수. 사진 사실성은 오히려 더 좋음. ($0.02/장)

블로그 이미지 4장 기준:

  • Before: Gemini 3 Pro × 4장 = $0.536
  • After: Imagen Fast × 4장 = $0.08
  • 절감: 85% 비용 절감, 포스트당 $0.456 절약

Gemini Pro vs Imagen Fast — 품질 비교

실제 사용해보면 차이는 이렇다:

Gemini 3 Pro Image:

  • ✅ 복잡한 프롬프트 해석력 우수 (추상적 개념, 은유 표현)
  • ✅ 텍스트 생성 시도 (이미지 내 텍스트, 하지만 깨지는 경우 많음)
  • ❌ 토큰 기반 과금이라 비쌈 ($0.134/장)
  • 🎯 추천 용도: 복잡한 컨셉 아트, 스토리텔링이 필요한 이미지

Imagen 4.0 Fast:

  • ✅ 사진 사실성 탁월 (인물, 풍경, 제품 사진)
  • ✅ 빠른 생성 속도 (7초)
  • ✅ 저렴한 고정 비용 ($0.02/장)
  • ❌ 텍스트 생성 약함 (이미지 내 글자는 거의 못 씀)
  • ❌ 추상적 프롬프트 해석은 다소 약함
  • 🎯 추천 용도: 블로그 썸네일, 일러스트, 배경 이미지

결론: 텍스트가 들어가야 하면 Gemini, 사진/일러스트만 필요하면 Imagen. 내 블로그는 텍스트 없는 이미지만 쓰니 Imagen Fast가 정답이었다.

모델별 비용 비교

최적화 3: 3단계 품질 시스템 — 사용자가 선택하게

모든 이미지를 저렴하게 만드는 게 정답은 아니다. 히어로 이미지나 중요한 일러스트는 고품질이 필요할 때가 있다. 그래서 quality 파라미터를 도입했다.

1
2
3
4
5
6
7
8
def _detect_image_quality(text: str) -> str:
    """메시지에서 이미지 품질 힌트를 감지."""
    t = text.lower()
    if any(kw in t for kw in ["울트라", "ultra", "최고품질"]):
        return "ultra"
    if any(kw in t for kw in ["프로", "pro", "고품질", "고화질"]):
        return "pro"
    return "fast"  # 기본값은 저비용
품질모델 우선순위장당 비용용도
⚡ FastImagen Fast → Gemini Flash → 나머지$0.02블로그 일반 이미지 (기본)
🎨 ProGemini 3 Pro → Imagen Fast (폴백)$0.134히어로 이미지, 고품질 필요 시
💎 UltraGemini 3 Pro → Imagen Ultra → 나머지$0.08~0.134최고 품질 요구 시

핵심 UX는 “Fast로 빠르게 생성 → 마음에 안 들면 Pro로 재생성” 패턴이다. 텔레그램에서 이미지를 받으면 “🎨 프로 품질로 재생성” 버튼이 같이 온다. 대부분의 경우 Fast로 충분하고, 정말 필요할 때만 Pro를 쓰게 된다.

1
2
3
4
5
6
7
8
# Fast로 생성 후, Pro 재생성 버튼 표시
if quality == "fast":
    reply_markup = InlineKeyboardMarkup([[
        InlineKeyboardButton(
            "🎨 프로 품질로 재생성",
            callback_data="quality_regen_pro"
        ),
    ]])

실제 사용 패턴을 보면, 10장 중 8-9장은 Fast로 충분하다. Pro 재생성은 10-20% 정도. 이 비율이면 평균 비용이 장당 $0.03-0.04 수준으로 떨어진다.

품질 시스템 흐름

모델 폴백 전략 — 하나가 실패해도 멈추지 않는다

API 쿼터 초과, 인증 실패, 모델 장애 등 실전에서는 다양한 실패가 발생한다. 그래서 폴백 체인을 구축했다.

1
2
Fast 모드:  Imagen Fast → Gemini Flash → Gemini Pro → Imagen → SVG 플레이스홀더
Pro 모드:   Gemini 3 Pro → Gemini Flash → Imagen Fast → SVG 플레이스홀더

각 모델마다 여러 API 키를 로테이션하면서 시도한다. 첫 번째 키가 쿼터 초과면 두 번째 키로, 그것도 실패하면 다음 모델로 넘어간다. 최악의 경우에도 SVG 플레이스홀더가 나와서 블로그 빌드가 깨지지는 않는다.

폴백 전략 다이어그램

결과 — 포스트당 $0.54 → $0.08

항목BeforeAfter절감
이미지 4장 비용$0.536$0.0885%
월 20포스트 비용$10.72$1.60$9.12/월
연간$128.64$19.20$109/년
이미지 편집 (PNG→JPEG)3-5MB 업로드200-400KB10-20x

비용을 줄인다고 품질을 포기한 건 아니다. Fast 모드로 만족스러운 결과가 나오면 그대로 쓰고, 아니면 버튼 하나로 Pro 품질을 받을 수 있다. 기본값을 저비용으로 바꾸되, 고품질 옵션을 항상 열어두는 것이 핵심이다.

최종 결과 비교

적용하려면

Gemini API로 이미지를 생성하고 있다면 바로 적용할 수 있는 포인트 3가지:

  1. 이미지 편집 시 PIL Image를 직접 전달하지 말 것 — JPEG로 변환해서 types.Part로 보내면 업로드 크기가 10배 이상 줄어든다
  2. 블로그/썸네일 등 대량 생성에는 Imagen Fast를 기본으로 — 장당 $0.02, 품질도 충분하다
  3. 품질 선택을 사용자에게 맡길 것 — “일단 싸게, 필요하면 비싸게” 패턴이 가장 효율적이다

이미지 생성 API 비용은 앞으로도 계속 변할 것이다. 중요한 건 비용 구조를 이해하고 유연하게 대응하는 시스템을 만들어두는 것이다. 모델이 바뀌어도 폴백 체인과 품질 파라미터 구조는 그대로 쓸 수 있다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.