본문 바로가기

Gemini

Gemini 3.5 Flash 완전 가이드 — 오늘 출시된 구글 최신 모델, 실제 벤치마크와 API 실전 사용법

반응형

Flash 시리즈가 Pro를 넘었습니다. Google I/O 2026에서 오늘 출시된 Gemini 3.5 Flash는 코딩·에이전트 벤치마크에서 Gemini 3.1 Pro를 앞서면서 속도는 4배 빠릅니다. 가격은 3.1 Pro보다 40% 저렴합니다. 다만 가격 관련 한 가지 주의할 것이 있습니다.

[핵심 요약 — 오늘자 정확한 정보]
→ 출시: 2026년 5월 19일 GA — 지금 바로 사용 가능, 대기 없음
→ 모델 ID: gemini-3.5-flash (preview 접미사 없음)
→ 내부 버전: 3.5-flash-05-2026
→ API 가격: $1.50/M 입력, $9.00/M 출력 (캐시된 입력 $0.15/M)
→ 주의: 기존 Gemini 3 Flash($0.50/$3.00) 대비 3배 비쌈 — "소폭 인상"은 오보
→ 컨텍스트: 1M 토큰 입력 / 65,536 토큰 출력
→ 속도: 284 tok/s (Artificial Analysis 실측) — 유사 가격대 중앙값 63 tok/s의 4.5배
→ Thinking: 기본값 medium — 구버전 preview에서 넘어올 때 주의 필요
→ 지식 컷오프: 2026년 1월
→ Gemini 3.5 Pro: 내부 사용 중, 다음 달(6월) 출시 예정

가격 — 정확한 수치

[Gemini 3.5 Flash API 가격 — 글로벌/비글로벌 구분]

글로벌 리전:
→ 입력: $1.50 / 1M 토큰
→ 출력: $9.00 / 1M 토큰
→ 캐시된 입력: $0.15 / 1M 토큰 (90% 절감)

비글로벌 리전 (한국 포함):
→ 입력: $1.65 / 1M 토큰
→ 출력: $9.90 / 1M 토큰

Gemini 앱·Search AI Mode:
→ 무료 (일반 사용자)
→ AI Pro/Ultra 구독자: 무제한

[모델 간 가격 비교]
모델                      입력        출력
──────────────────────────────────────────
Gemini 3 Flash           $0.50       $3.00   ← 기존
Gemini 3.5 Flash         $1.50       $9.00   ← 오늘 출시 (3배↑)
Gemini 3.1 Pro           $2.50       $15.00
Claude Sonnet 4.6        $3.00       $15.00
GPT-5.4                  $2.00       $8.00
Claude Opus 4.7          $5.00       $25.00

→ Gemini 3.5 Flash는 3.1 Pro보다 40% 저렴
→ 그러나 기존 3 Flash 대비 3배 인상 — "소폭 인상"이라는 일부 보도는 오보
→ 성능 대비 가격 스위트스폿은 GPT-5.4 대비 입력 비슷, 출력은 비쌈

벤치마크 — Google 공식 발표 수치 (검증된 것만)

[Google 공식 발표 벤치마크]

Terminal-Bench 2.1 (터미널 태스크):
→ Gemini 3.5 Flash: 76.2%
→ Gemini 3.1 Pro:   70.3% ← 3.5 Flash 승

MCP Atlas (MCP 툴 사용 에이전트):
→ Gemini 3.5 Flash: 83.6%
→ Gemini 3.1 Pro:   78.2% ← 3.5 Flash 승

GDPval-AA (경제적 가치 있는 작업):
→ Gemini 3.5 Flash: 1,656 Elo
→ Gemini 3.1 Pro:   1,317 Elo ← 339점 차이

Toolathlon (툴 사용 능력):
→ Gemini 3.5 Flash: 56.5% (리포트된 최고)

Finance Agent v2:
→ Gemini 3.5 Flash: 57.9%

CharXiv Reasoning (과학 추론):
→ Gemini 3.5 Flash: 84.2%

MMMU-Pro (멀티모달 이해):
→ Gemini 3.5 Flash: 83.6% ← Artificial Analysis 역대 최고 기록

[3.1 Pro가 여전히 앞서는 영역]
MRCR v2 at 128k (장문 컨텍스트 검색):
→ Gemini 3.1 Pro:   84.9%
→ Gemini 3.5 Flash: 77.3% ← 3.1 Pro 승

결론:
→ 코딩·에이전트·멀티모달: 3.5 Flash 승
→ 매우 긴 컨텍스트 검색·최고 난이도 순수 추론: 3.1 Pro 여전히 우세
→ "모든 벤치마크에서 앞선다"는 마케팅은 약간 과장
[Artificial Analysis 독립 평가 (사전 접근)]

Intelligence Index: 55점 (유사 가격대 중앙값: 36점)
출력 속도: 284 tok/s (유사 가격대 중앙값: 63 tok/s)
TTFT: 17.75초 (유사 가격대 중앙값 2.72초보다 높음 — Thinking 모드 때문)

→ 속도: 압도적 (동급 대비 4.5배)
→ Intelligence: 동급 대비 크게 우세
→ TTFT: Thinking 기본 활성화로 첫 토큰까지 시간 김 — 스트리밍 UX 고려 필요

참고: Sundar Pichai 키노트에서 "300 tok/s" 언급 → 실측은 284 tok/s

실전 1 — 지금 바로 쓰는 법

Gemini API

# pip install google-generativeai
import google.generativeai as genai
import os

genai.configure(api_key=os.environ["GEMINI_API_KEY"])

# 기본 사용
model = genai.GenerativeModel("gemini-3.5-flash")
response = model.generate_content("파이썬 asyncio 패턴 설명해줘")
print(response.text)

OpenAI SDK 호환

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["GEMINI_API_KEY"],
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

response = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[{"role": "user", "content": "FastAPI 에러 핸들링 패턴 알려줘"}]
)
print(response.choices[0].message.content)

OpenRouter 경유

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["OPENROUTER_API_KEY"],
    base_url="https://openrouter.ai/api/v1"
)

response = client.chat.completions.create(
    model="google/gemini-3.5-flash",
    messages=[{"role": "user", "content": "안녕"}]
)

Firebase AI Logic (모바일·웹)

// Android — 오늘부터 사용 가능
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel("gemini-3.5-flash")
// Web
const model = getGenerativeModel(ai, { model: "gemini-3.5-flash" });

실전 2 — Thinking 레벨 제어 (핵심 변경사항)

Gemini 3.5 Flash의 가장 중요한 API 변경입니다. 기존 gemini-3-flash-preview에서 넘어올 때 반드시 확인해야 합니다.

# ⚠️ 핵심 변경사항: thinking_budget → thinking_level

# 기존 Gemini 3 Flash Preview (정수)
# model.generate_content(prompt, thinking_budget=1024)  # 이제 안 됨

# Gemini 3.5 Flash (문자열 enum)
import google.generativeai as genai

model = genai.GenerativeModel("gemini-3.5-flash")

# thinking_level 옵션: "minimal" / "low" / "medium" / "high"
# 기본값: "medium"

# ── minimal: 추론 최소화 — 가장 빠름, 가장 저렴 ──────
response = model.generate_content(
    "파이썬 리스트 컴프리헨션 예시 보여줘",
    generation_config={
        "thinking_config": {"thinking_level": "minimal"}
    }
)

# ── low: 코딩·에이전트 태스크 튜닝 ───────────────────
# 주의: "low"는 더 이상 "추론 건너뜀"이 아님
# Gemini 3.5에서 low는 코딩·에이전트에 최적화된 설정으로 재조정됨
response = model.generate_content(
    "이 함수의 버그 찾아줘: def add(a,b): return a-b",
    generation_config={
        "thinking_config": {"thinking_level": "low"}
    }
)

# ── medium: 기본값 — 균형 (비용과 품질) ──────────────
response = model.generate_content(
    "REST API 설계 리뷰해줘",
    generation_config={
        "thinking_config": {"thinking_level": "medium"}
    }
)

# ── high: 최고 추론 — 복잡한 문제 ─────────────────────
response = model.generate_content(
    "이 분산 시스템의 데드락 가능성 분석해줘",
    generation_config={
        "thinking_config": {"thinking_level": "high"}
    }
)
[⚠️ Preview → 3.5 Flash 마이그레이션 주의]

기존 gemini-3-flash-preview 기본값: high (최대 추론)
Gemini 3.5 Flash 기본값: medium (중간 추론)

→ 모델만 교체하면 기존보다 추론량 줄어듦
→ 의도적으로 설계한 변경 — 비용 효율 우선
→ 기존과 동일한 추론 깊이가 필요하면:
   thinking_level: "high" 명시 필요

[thinking_level별 비용·속도 영향]
minimal: 가장 빠름, 가장 저렴 (추론 토큰 최소)
low:     코딩 최적화, 중간 속도·비용
medium:  기본값, 균형
high:    가장 느림, 가장 비쌈 (추론 토큰 최대)
         TTFT 기준: 최대 수십 초 (복잡한 문제)

실전 3 — 멀티모달 입력

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

genai.configure(api_key=os.environ["GEMINI_API_KEY"])
model = genai.GenerativeModel("gemini-3.5-flash")

# ── 이미지 분석 ───────────────────────────────────────
image_path = Path("screenshot.png")
image_data = base64.b64encode(image_path.read_bytes()).decode()

response = model.generate_content([
    {
        "mime_type": "image/png",
        "data": image_data
    },
    "이 스크린샷의 UI 문제점을 찾아줘"
])
print(response.text)

# ── PDF 분석 ──────────────────────────────────────────
pdf_data = base64.b64encode(Path("contract.pdf").read_bytes()).decode()

response = model.generate_content([
    {
        "mime_type": "application/pdf",
        "data": pdf_data
    },
    "이 계약서의 핵심 조항을 요약해줘",
])

# ── 오디오 분석 ───────────────────────────────────────
audio_data = base64.b64encode(Path("meeting.mp3").read_bytes()).decode()

response = model.generate_content([
    {
        "mime_type": "audio/mp3",
        "data": audio_data
    },
    "이 회의 녹음을 텍스트로 변환하고 액션 아이템 추출해줘"
])

# ── 영상 분석 ─────────────────────────────────────────
video_data = base64.b64encode(Path("demo.mp4").read_bytes()).decode()

response = model.generate_content([
    {
        "mime_type": "video/mp4",
        "data": video_data
    },
    "이 데모 영상에서 버그가 발생하는 시점을 찾아줘"
])
[지원 입력 형식 — Gemini 3.5 Flash]
텍스트: 기본
이미지: image/jpeg, image/png, image/gif, image/webp
오디오: audio/mp3, audio/wav, audio/aiff, audio/aac
영상:   video/mp4, video/mpeg, video/mov, video/webm
문서:   application/pdf, text/plain, text/html, text/csv

출력: 텍스트 전용 (Gemini Omni Flash가 영상 출력 담당)

실전 4 — 구조화 출력 + 툴 콜링

from pydantic import BaseModel
from typing import Literal
import json

# ── 구조화 출력 ───────────────────────────────────────
class BugReport(BaseModel):
    severity: Literal["critical", "high", "medium", "low"]
    description: str
    affected_lines: list[int]
    fix_suggestion: str

response = model.generate_content(
    f"""다음 코드를 분석해서 버그 리포트를 JSON으로 작성해줘:

def divide(a, b):
    return a / b
""",
    generation_config={
        "response_mime_type": "application/json",
        "response_schema": BugReport,
    }
)

bug = json.loads(response.text)
print(f"심각도: {bug['severity']}")
print(f"설명: {bug['description']}")

# ── 툴 콜링 (Function Calling) ────────────────────────
tools = [
    genai.protos.Tool(
        function_declarations=[
            genai.protos.FunctionDeclaration(
                name="get_weather",
                description="특정 도시의 날씨 조회",
                parameters=genai.protos.Schema(
                    type=genai.protos.Type.OBJECT,
                    properties={
                        "city": genai.protos.Schema(
                            type=genai.protos.Type.STRING,
                            description="도시 이름"
                        )
                    },
                    required=["city"]
                )
            )
        ]
    )
]

model_with_tools = genai.GenerativeModel(
    "gemini-3.5-flash",
    tools=tools
)

response = model_with_tools.generate_content("서울 날씨 알려줘")

# 툴 콜 감지
if response.candidates[0].content.parts[0].function_call:
    fc = response.candidates[0].content.parts[0].function_call
    print(f"툴 호출: {fc.name}({dict(fc.args)})")
    # → 툴 호출: get_weather({'city': '서울'})

실전 5 — 비용 최적화 패턴

# ── 패턴 1: 프롬프트 캐싱으로 90% 절감 ───────────────
# 캐시된 입력: $0.15/M (일반 $1.50/M 대비 90% 절감)

import google.generativeai as genai
from google.generativeai import caching
import datetime

# 긴 시스템 프롬프트나 문서를 캐시
cache = caching.CachedContent.create(
    model="gemini-3.5-flash",
    contents=[
        {
            "role": "user",
            "parts": [{
                "text": "이 문서를 기반으로 질문에 답해줘:\n\n" + long_document
            }]
        }
    ],
    ttl=datetime.timedelta(hours=1),
)

# 캐시 사용
model = genai.GenerativeModel.from_cached_content(cached_content=cache)
response = model.generate_content("이 문서의 핵심 주장은?")
# → 문서 토큰: $0.15/M 적용 (90% 절감)
# ── 패턴 2: thinking_level로 비용 제어 ───────────────

def smart_generate(prompt: str, task_type: str) -> str:
    """태스크 유형에 따라 thinking_level 자동 선택"""

    level_map = {
        "simple_qa": "minimal",      # 간단한 질문
        "code": "low",               # 코딩 (low가 코딩 최적화됨)
        "analysis": "medium",        # 분석
        "complex_reasoning": "high", # 복잡한 추론
    }

    thinking_level = level_map.get(task_type, "medium")

    response = model.generate_content(
        prompt,
        generation_config={
            "thinking_config": {"thinking_level": thinking_level}
        }
    )
    return response.text

# 사용
result = smart_generate("파이썬 리스트가 뭐야?", "simple_qa")        # minimal
result = smart_generate("이 코드의 버그 찾아줘", "code")              # low
result = smart_generate("이 아키텍처 리뷰해줘", "analysis")           # medium
result = smart_generate("분산 시스템 설계 최적화 방법", "complex_reasoning")  # high
# ── 패턴 3: LiteLLM으로 Gemini 3.5 Flash 폴백 체인 ──
import litellm

response = litellm.completion(
    model="gemini/gemini-3.5-flash",   # 1순위 — 빠름, 코딩 강점
    messages=[{"role": "user", "content": "코드 리뷰해줘"}],
    fallbacks=[
        "anthropic/claude-sonnet-4-6", # 2순위 — 순수 추론 강점
        "openai/gpt-5.4",              # 3순위
    ],
    api_key=os.environ["GEMINI_API_KEY"],
)

Gemini 3.5 Flash vs 경쟁 모델 — 언제 뭘 쓰나

[실전 선택 가이드 — 2026년 5월 기준]

Gemini 3.5 Flash ($1.50/$9.00) 선택:
→ 코딩·에이전트 태스크 (MCP Atlas 83.6%, Terminal-Bench 76.2% 1위)
→ 멀티모달 이해 (MMMU-Pro 83.6% 역대 최고)
→ 속도가 최우선 (284 tok/s — 압도적 1위)
→ Antigravity·Firebase AI Logic 기본 모델로 쓸 때
→ 1M 토큰 컨텍스트가 필요할 때

Claude Sonnet 4.6 ($3.00/$15.00) 선택:
→ 뉘앙스 있는 글쓰기·번역
→ 복잡한 다단계 추론 (MRCR 장문 컨텍스트)
→ Anthropic 생태계 (Claude Code, 기존 워크플로우)

GPT-5.4 ($2.00/$8.00) 선택:
→ OpenAI 에코시스템 강한 통합 필요
→ 출력 가격 효율 (Gemini 3.5 Flash보다 저렴)
→ 코딩·추론 균형

Gemini 3 Flash ($0.50/$3.00) 계속 선택:
→ 비용이 절대 최우선 + 3.5의 높은 추론 불필요
→ 단순 분류·태깅·요약 대량 처리

Claude Opus 4.7 ($5.00/$25.00) 선택:
→ 최고 난이도 추론·에이전트 장기 태스크
→ 2576px 고해상도 이미지 분석 (유일)
→ 품질이 비용보다 훨씬 중요한 경우

[비용 예시 — 1만 건 요청, 평균 2,000 input + 500 output 토큰]
Gemini 3 Flash:    $1.50 (입력) + $1.50 (출력) = $3.00
Gemini 3.5 Flash:  $3.00 + $4.50 = $7.50
Claude Sonnet 4.6: $6.00 + $7.50 = $13.50
Claude Opus 4.7:   $10.00 + $12.50 = $22.50

gemini-3-flash-preview 마이그레이션 가이드

# ── 마이그레이션 체크리스트 ─────────────────────────

# 1. 모델 ID 변경
# 기존: "gemini-3-flash-preview"
# 신규: "gemini-3.5-flash"

# 2. thinking_budget → thinking_level (필수 변경)
# 기존 (동작 안 함):
# generation_config={"thinking_budget": 1024}

# 신규:
# generation_config={"thinking_config": {"thinking_level": "medium"}}

# 3. 기본 thinking_level 변화 주의
# 기존 preview 기본값: high
# 3.5 Flash 기본값: medium
# → 기존과 동일한 추론 원하면 thinking_level: "high" 명시

# 4. low thinking_level 동작 변화
# 기존: low ≈ 추론 건너뜀
# 신규: low = 코딩·에이전트 최적화 설정

# 마이그레이션 예시 코드
old_config = {
    "model": "gemini-3-flash-preview",
    # "thinking_budget": 2048  # 이제 안 됨
}

new_config = {
    "model": "gemini-3.5-flash",
    "generation_config": {
        "thinking_config": {
            "thinking_level": "high"  # 기존 high thinking 유지하려면 명시
        }
    }
}

마무리

✅ Gemini 3.5 Flash가 빛나는 경우
→ 코딩·에이전트·멀티모달 — 동급 최강 벤치마크
→ 속도가 중요한 실시간 앱 (284 tok/s)
→ 긴 컨텍스트 (1M 토큰) 필요한 문서 처리
→ Antigravity·Firebase AI Logic 기본 모델
→ 비용과 성능 균형 (3.1 Pro보다 40% 저렴하면서 코딩은 앞섬)

❌ 주의해야 할 것
→ 가격: 기존 Gemini 3 Flash 대비 3배 — 비용 예산 재검토 필요
→ TTFT: Thinking 모드 기본 활성화 → 첫 토큰까지 최대 수십 초
   → 스트리밍 UI에서 로딩 인디케이터 반드시 구현
→ thinking_level 기본값 변경 (high → medium) — preview에서 넘어올 때 주의
→ 장문 컨텍스트 검색 (128K+): 아직 3.1 Pro가 우세
→ 순수 최고난이도 추론: Claude Opus 4.7 여전히 강점

관련 글

반응형