Google I/O 2026에서 Gemini 3.5 Flash가 공개된 날, 커뮤니티 반응은 두 갈래로 갈렸습니다. "Flash가 드디어 Pro를 잡았다"는 환호와 "근데 가격이 3배 올랐잖아"는 의문입니다. 직접 숫자를 뜯어보고 코드로 돌려봤습니다.
핵심 요약
Gemini 3.5 Flash는 2026년 5월 19일 Google I/O와 동시에 GA(정식 출시) 상태로 공개됐습니다. Flash 등급 모델이면서 이전 세대인 Gemini 3.1 Pro를 15개 벤치마크 중 11개에서 이겼다는 게 구글의 주장입니다. 속도는 초당 284토큰으로 다른 프론티어 모델 대비 약 4배 빠르고, 가격은 입력 $1.50 / 출력 $9.00(1M 토큰 기준)입니다.
GPT-5.5와 비교하면 역할이 명확하게 나뉩니다. MCP Atlas 멀티스텝 툴 호출에서 Gemini 3.5 Flash가 83.6%로 GPT-5.5의 75.3%를 8.3포인트 앞서는 반면, 추론 능력 지표인 ARC-AGI-2에서는 GPT-5.5가 85%로 Flash의 72.1%를 압도합니다. 간단히 요약하면 Flash는 툴 오케스트레이션 전문이고, GPT-5.5는 깊은 추론이 필요할 때 씁니다.
가격 차이가 결정적입니다. GPT-5.5는 입력 $5.00 / 출력 $30.00으로, 출력 기준으로만 보면 Gemini 3.5 Flash보다 3.3배 비쌉니다. 에이전트 파이프라인처럼 반복 호출이 많은 워크로드에서는 이 차이가 월 단위로 쌓이면 무시할 수 없는 숫자가 됩니다.
주의할 함정도 있습니다. 이전 Gemini 3 Flash Preview 코드를 그대로 마이그레이션하면 기본 thinking_level이 high에서 medium으로 조용히 바뀐 채 돌아갑니다. 명시적으로 설정하지 않으면 성능이 낮은 결과를 받고도 원인을 모를 수 있습니다. 지식 컷오프도 2025년 1월로 GPT-5.5의 2025년 12월보다 11개월 뒤처지고, 실제 사용자들 사이에서 할루시네이션이 생각보다 자주 나온다는 후기도 있습니다.
실전 1: API 연동 기본 세팅
Gemini 3.5 Flash는 Google AI SDK와 OpenAI 호환 클라이언트 두 가지 방법으로 쓸 수 있습니다. 처음 마이그레이션하는 팀이라면 OpenAI 호환 방식이 기존 코드 변경을 최소화해서 편합니다. 단, thinking_level을 반드시 명시적으로 지정해야 합니다.
아래는 두 방식으로 동일한 요청을 보내는 코드입니다. 에이전트 코딩 태스크에는 thinking_level: "low"가 빠르고 저렴하면서 성능은 medium과 거의 같다고 구글이 명시했습니다.
import google.generativeai as genai
from openai import OpenAI
import os
# 방법 1: Google AI SDK (권장, 캐싱 등 고급 기능 활용 가능)
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
model = genai.GenerativeModel(
model_name="gemini-3.5-flash",
generation_config={
"temperature": 0.7,
"max_output_tokens": 4096,
"thinking_config": {
"thinking_level": "low" # 코딩/에이전트 태스크: low 권장
# "low" = 빠름+저렴, 코딩에 최적화
# "medium" = 기본값 (이전 preview의 high보다 낮음 — 함정!)
# "high" = 복잡한 추론 전용
}
}
)
response = model.generate_content("Python으로 이진 탐색 구현해줘")
print(response.text)
# 방법 2: OpenAI 호환 클라이언트 (기존 코드 마이그레이션용)
client = OpenAI(
api_key=os.getenv("GOOGLE_API_KEY"),
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
response = client.chat.completions.create(
model="gemini-3.5-flash",
messages=[{"role": "user", "content": "Python으로 이진 탐색 구현해줘"}],
extra_body={
"thinking_config": {"thinking_level": "low"}
}
)
print(response.choices[0].message.content)
thinking_level을 "low"로 잡는 게 처음엔 반직관적으로 느껴질 수 있습니다. 하지만 구글이 코딩과 툴 호출 워크플로우에 맞게 low를 따로 튜닝했기 때문에, 코드 생성이나 에이전트 루프에서는 medium과 성능 차이가 거의 없으면서 속도와 비용이 유리합니다.
실전 2: GPT-5.5와 같은 프롬프트로 나란히 비교
직접 비교를 위해 동일한 태스크를 두 모델에 보내고 결과를 나란히 출력하는 스크립트입니다. 단순 벤치마크 숫자보다 내 워크로드에서 어떤 차이가 나는지 직접 보는 게 훨씬 정확합니다.
코딩 태스크, 추론 태스크, 툴 호출 태스크 세 가지로 나눠서 테스트해보면 두 모델의 차이가 어디서 가장 크게 드러나는지 파악할 수 있습니다.
import time
from openai import OpenAI
# Gemini 3.5 Flash
gemini_client = OpenAI(
api_key=os.getenv("GOOGLE_API_KEY"),
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)
# GPT-5.5
gpt_client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def compare_models(prompt: str, task_type: str):
results = {}
for name, client, model_id, extra in [
("Gemini 3.5 Flash", gemini_client, "gemini-3.5-flash",
{"thinking_config": {"thinking_level": "low"}}),
("GPT-5.5", gpt_client, "gpt-5.5", {})
]:
start = time.time()
resp = client.chat.completions.create(
model=model_id,
messages=[{"role": "user", "content": prompt}],
max_tokens=1024,
extra_body=extra if extra else None
)
elapsed = time.time() - start
output = resp.choices[0].message.content
tokens = resp.usage.total_tokens
# 비용 계산 (1M 토큰 기준)
if "Gemini" in name:
cost = (resp.usage.prompt_tokens * 1.5 + resp.usage.completion_tokens * 9) / 1_000_000
else:
cost = (resp.usage.prompt_tokens * 5 + resp.usage.completion_tokens * 30) / 1_000_000
results[name] = {
"output": output[:300],
"tokens": tokens,
"time": f"{elapsed:.2f}s",
"cost": f"${cost:.5f}"
}
print(f"\n[{name}] {elapsed:.2f}s | {tokens}토큰 | ${cost:.5f}")
print(output[:300])
return results
# 태스크별 비교
tasks = [
("퀵소트 Python 구현 + 시간복잡도 설명", "coding"),
("27 × 34 + sqrt(169) - 15²를 단계별로 계산해줘", "reasoning"),
("다음 JSON 데이터를 파싱해서 이름과 나이만 추출해줘: [{\"name\":\"Alice\",\"age\":30,\"city\":\"Seoul\"},{\"name\":\"Bob\",\"age\":25,\"city\":\"Busan\"}]", "structured")
]
for prompt, task_type in tasks:
print(f"\n{'='*50}")
print(f"태스크: {task_type.upper()}")
compare_models(prompt, task_type)
이걸 돌려보면 코딩 태스크에서는 두 모델이 체감 차이가 별로 없고, 순수 수학 추론에서 GPT-5.5가 훨씬 안정적입니다. 그리고 속도 차이는 숫자가 아니라 직접 봐야 실감납니다.
실전 3: 멀티모달 입력 (Gemini의 진짜 강점)
Gemini 3.5 Flash가 GPT-5.5보다 확실하게 앞서는 영역이 멀티모달입니다. GPT-5.5는 텍스트와 이미지만 지원하지만, Gemini 3.5 Flash는 이미지, 동영상, 음성, 텍스트를 네이티브로 처리합니다. MMMU-Pro 멀티모달 벤치마크에서 84%로 역대 최고 점수를 냈습니다.
아래는 이미지를 입력으로 받아서 코드를 생성하는 예시입니다. 디자인 목업 이미지를 넣으면 HTML/CSS로 변환하거나, 에러 스크린샷을 보내면 원인을 분석하는 식으로 쓸 수 있습니다.
import google.generativeai as genai
from PIL import Image
import requests
from io import BytesIO
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
model = genai.GenerativeModel("gemini-3.5-flash")
def analyze_image_and_code(image_url: str, instruction: str) -> str:
"""이미지를 받아서 코드나 분석을 생성합니다."""
# 이미지 로드
response = requests.get(image_url)
img = Image.open(BytesIO(response.content))
# 멀티모달 요청 (이미지 + 텍스트 동시 입력)
result = model.generate_content(
[img, instruction],
generation_config={
"thinking_config": {"thinking_level": "high"}, # 이미지 분석은 high 권장
"max_output_tokens": 2048
}
)
return result.text
# 사용 예시
# 에러 스크린샷 분석
code = analyze_image_and_code(
image_url="https://example.com/error-screenshot.png",
instruction="이 에러 스크린샷을 분석하고 원인과 해결 방법을 Python 코드로 보여줘"
)
print(code)
GPT-5.5는 이미지를 텍스트로 해석하는 수준이라면, Gemini 3.5 Flash는 이미지 안의 데이터를 코드로 처리하거나, 영역을 잘라서 재분석하는 능동적인 시각 처리가 가능합니다. 이미지가 주요 입력인 워크로드라면 거의 선택지가 Gemini 하나입니다.
실전 4: 비용 최적화 — 컨텍스트 캐싱
멀티스텝 에이전트 파이프라인에서 Gemini 3.5 Flash를 쓸 때 비용 최적화의 핵심은 컨텍스트 캐싱입니다. 여러 에이전트 단계가 같은 코드베이스나 문서를 반복해서 읽는다면, 캐시 토큰은 $0.15/1M으로 일반 입력($1.50/1M)의 10%입니다. 큰 문서를 공유하는 파이프라인에서는 이것만으로 비용 90%를 아낄 수 있습니다.
아래는 긴 코드베이스 컨텍스트를 캐싱해두고 여러 에이전트 단계에서 재사용하는 패턴입니다.
import google.generativeai as genai
from google.generativeai import caching
import datetime
# 공유 컨텍스트 (코드베이스 전체 등) 캐싱
# 일반 입력의 10% 비용으로 재사용 가능
codebase_context = """
[여기에 전체 코드베이스 내용 — 수만 토큰]
"""
# 캐시 생성 (1시간 TTL)
cache = caching.CachedContent.create(
model="gemini-3.5-flash",
contents=[codebase_context],
ttl=datetime.timedelta(hours=1),
display_name="codebase-cache"
)
# 캐시를 사용하는 모델 인스턴스
model_with_cache = genai.GenerativeModel.from_cached_content(
cached_content=cache,
generation_config={
"thinking_config": {"thinking_level": "low"}
}
)
# 이후 에이전트 단계들은 캐시 토큰($0.15/1M)으로 처리됨
steps = [
"이 코드베이스에서 인증 관련 파일을 찾아줘",
"인증 로직의 잠재적 보안 취약점을 분석해줘",
"발견한 취약점에 대한 수정 코드를 작성해줘"
]
for step in steps:
response = model_with_cache.generate_content(step)
print(f"\n[단계] {step}")
print(response.text[:200])
Antigravity 시연에서 구글은 93개 병렬 서브에이전트가 12시간 동안 15,000개 이상의 요청을 처리하면서 비용을 $1,000 미만으로 유지했다고 발표했습니다. 캐싱 없이는 불가능한 숫자입니다.
언제 어떤 모델을 쓸지
두 모델을 직접 써본 결과를 정리하면 이렇습니다. Gemini 3.5 Flash가 맞는 상황은 MCP 툴 오케스트레이션, 이미지나 영상이 포함된 멀티모달 파이프라인, 병렬 서브에이전트처럼 호출 횟수가 많아서 비용이 쌓이는 환경입니다. GPT-5.5가 맞는 상황은 수학, 코드 추론, ARC-AGI 류의 복잡한 단계별 사고가 필요한 태스크, 그리고 지식 컷오프가 최신이어야 하는 실시간 정보 기반 작업입니다. 멀티모달은 Gemini, 딥 추론은 GPT-5.5로 라우팅하는 하이브리드 구성이 비용 대비 성능에서 현실적으로 가장 효율적입니다.
마무리
Gemini 3.5 Flash는 Flash 등급 모델이 Pro를 이겼다는 점에서 분명히 세대 점프입니다. 멀티모달과 MCP 툴 호출에서 GPT-5.5보다 실질적으로 앞서는 영역이 있고, 속도 4배 차이는 에이전트 루프에서 실제로 체감됩니다. 그러나 "가성비"라는 표현은 조심해야 합니다. 이전 Gemini 3 Flash 대비 3배 인상된 가격이고, 추론 과정에서 토큰을 많이 써서 실제 청구 금액이 벤치마크 인상보다 높게 나올 수 있습니다. thinking_level 기본값 함정도 반드시 숙지하고 시작해야 합니다. 결국 어떤 모델이 낫냐는 워크로드가 결정합니다. 이미지가 많고 툴 호출이 반복적이라면 Gemini, 코드 추론이 깊어야 한다면 GPT-5.5입니다.
'Gemini' 카테고리의 다른 글
| Gemini Omni Flash vs Veo 3.1 — 영상 생성 AI 어떤 걸 써야 하는지 헷갈리신다면 (0) | 2026.06.12 |
|---|---|
| 로봇, Physical AI — Gemini Robotics-ER 1.6 공간추론·기기판독 개발 가이드 (0) | 2026.06.12 |
| Gemini 3.1 Flash TTS (Text-to-Speech) 음성 감정 표현 API 실전 가이드 (0) | 2026.06.12 |
| Deep Research API 실전 가이드 — Collaborative Planning, MCP, File Search 완전 연동 (0) | 2026.06.12 |
| RAG 파이프라인에 이미지·영상·오디오를 넣는 시대 — gemini-embedding-2 GA 완전 가이드 (0) | 2026.06.12 |