본문 바로가기

Gemini

Gemini 3.5 Flash vs GPT-5.5 실전 비교: 속도 4배, 가격 1/3, 근데 진짜로 쓸 수 있나?

반응형

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입니다.


 

반응형