본문으로 건너뛰기

Gemini Flash API 비교: 가격, 컨텍스트, NSFW 제한

Gemini Flash API 네 가지를 가격, 컨텍스트, 추론 제어, 성인 콘텐츠 제한으로 비교하고, 복사해 쓸 수 있는 스트리밍 스크립트도 소개합니다.

작성자
Lydia
발행
읽는 시간
약 13분
수정
청록색 가마가 있는 도예 작업실에서 두 사람이 흰 그릇에 대해 이야기하고 있다.

Flash 모델은 지원 티켓을 분류하고, 크리에이터의 출시 문구 초안을 쓰고, 에이전트 루프의 다음 단계를 수행할 수 있습니다. 이런 작업은 필요한 추론의 양이 서로 다르며, 토큰당 요금이 가장 낮다고 해서 완료된 작업당 비용이 가장 낮은 것은 아닙니다. 추출과 일반 초안 작성에는 2.5 Flash, 단순한 대량 행에는 3.5 Flash Lite, 여러 단계의 코드와 도구 사용에는 3.7 Flash로 시작하세요. 3 Flash Preview는 입력 한도 256,000토큰 안에서 짧게 주고받는 대화에 적합합니다. 성인 소설의 경우 당사 테스트에서는 2.5 Flash와 Preview가 가장 멀리 나가지만, 두 모델 모두 글로 쓴 성적인 장면은 대개 순화하거나 거부합니다. 추론 비중이 큰 긴 글이 필요하다면 Gemini 3.1 Pro 가이드를 참고하세요.

가격과 제한

요금은 100만 토큰당 USD입니다. 네 경로 모두 텍스트, 이미지, 업로드한 영상을 받습니다. 오디오는 2.5 Flash와 3 Flash Preview만 받으며, Lite와 3.7은 받지 않습니다. 업로드 영상은 요청당 14 MB로 제한됩니다. PDF나 일반 파일 파트는 어느 경로도 받지 않으므로, 텍스트를 추출하거나 해당 페이지를 이미지로 변환하세요.

경로입력 한도캐시 없는 입력캐시된 입력출력기본 / 최저 추론 강도기본 max_tokens
Gemini 2.5 Flash1,048,576$0.285$0.0285$2.375medium / low16,384
Gemini 3 Flash Preview256,000$0.45$0.045$2.70medium / minimal16,384
Gemini 3.5 Flash Lite1,048,576$0.30$0.03$2.50minimal / minimal4,096
Gemini 3.7 Flash1,048,576$0.675$0.0675$3.375medium / low16,384

모델 ID: google/gemini-2.5-flash/chat, google/gemini-3-flash-preview/chat, google/gemini-3.5-flash-lite/chat, google/gemini-3.7-flash/chat. 모든 경로는 최대 65,536 출력 토큰, JSON 출력, 최대 128개의 도구 정의, temperature, top-p, 시드, 네 개의 중지 시퀀스를 지원하지만 parallel_tool_calls 제어는 없습니다. JSON 객체 모드는 구문을 제어할 뿐, 필드 이름이나 내용의 진위를 보장하지 않습니다. 아래 스크립트의 키, 타입, 출처 검사는 그대로 유지하세요. Gemini 3 경로에서는 temperature를 권장 기본값 1.0으로 두고, 구조는 response_format과 시스템 메시지로 제어하세요.

이 표에서 헷갈리기 쉬운 점이 두 가지 있습니다.

  • Lite는 토큰당 가장 저렴하지 않습니다. 입력과 출력 요금이 2.5 Flash보다 높습니다. 출력 토큰을 적게 쓰면 청구액은 더 낮아질 수 있으니, 아래의 손익분기점을 비교하세요.
  • 추론 강도를 명시적으로 설정하세요. 2.5 Flash에서는 minimal이 거부됩니다. 3.7 Flash는 스키마에 minimal이 나열되어 있지만 모델 페이지에는 이 엔드포인트가 거부한다고 나와 있으므로, 그쪽에서는 low를 하한으로 쓰세요. 추론 강도를 설정하지 않고 스크립트를 Lite에서 다른 경로로 바꾸면 기본값도 minimal에서 medium으로 바뀝니다.

배치 비용

지원 티켓 10,000건을 가정합니다. 각 티켓은 입력 약 500토큰(지시문과 티켓)이고, JSON 답변은 80토큰입니다.

경로티켓당 비용10,000건, 추가 사고 없음사고가 티켓당 출력 700토큰을 더하는 경우
2.5 Flash$0.0003325$3.33$19.95
3 Flash Preview$0.000441$4.41$23.31
3.5 Flash Lite$0.00035$3.50$21.00
3.7 Flash$0.0006075$6.08$29.70

사고 토큰은 출력으로 청구되며 max_tokens에도 포함됩니다. 티켓당 700토큰의 추가 사고가 청구액의 대부분을 차지할 수 있습니다. 추론 강도를 명시적으로 설정하고, 청구된 출력으로 추정치를 다듬으세요. minimal이라고 해서 추론이 0이라는 보장은 없습니다.

입력 500토큰에 청구된 출력이 정확히 80토큰이면 Lite의 비용은 $0.00035입니다. 입력 크기가 같을 때 2.5 Flash는 청구된 출력이 88토큰, 즉 80토큰 답변에 사고 8토큰이 더해지는 지점에서 그 비용을 넘어섭니다. Lite도 80토큰을 넘어 추론한다면 손익분기점은 올라갑니다. 둘 중 하나를 고를 때는 추론 강도 라벨만 보지 말고, 청구된 출력 총량과 올바른 행의 수를 기준으로 하세요.

모든 요청 앞부분에 두는 고정 지시문은 응답이 캐시된 것으로 보고하면 더 저렴해집니다. 20,000토큰의 공통 프리픽스를 공유하는 요청 1,000건의 입력 비용은 2.5 Flash에서 캐시 없이 $5.70, 전부 캐시로 청구되면 $0.57입니다. 공통 지시문과 도구 정의를 앞에 두고, 날짜와 티켓 ID는 그 뒤에 두세요. Google의 캐시 가이드는 암묵적 적중을 기회적인 것으로 설명합니다. 안정적인 프리픽스는 가능성을 높이지만 할인을 보장하지는 않습니다. 호스팅된 응답이 캐시된 토큰을 보고하기 전까지는 캐시 없는 요금으로 예산을 잡으세요.

Google 가격표의 Batch 할인은 정가를 절반으로 줄여 주지만, Google 자체의 비동기 서비스에 속한 것입니다. SpicyAPI로 보내는 모든 요청은 위 요금으로 청구되며, Google AI Studio 무료 할당량이나 Google 구독으로는 결제되지 않습니다. Google은 3.7 Flash를 2026년 12월 31일까지 입력 $0.75, 출력 $3.75로, 2027년 1월 1일부터는 그 두 배로 게시하고 있습니다. 이는 Google이 공개한 일정이지 SpicyAPI의 향후 요금으로 발표된 것이 아닙니다. 2027년 출시 예산을 잡기 전에 호스팅 카탈로그를 다시 확인하세요.

작업별 경로 선택

작업시작할 경로이유올려야 할 때
라벨링, 라우팅, 필드 추출2.5 Flash, low요금이 가장 낮고, 1M 창에 녹취록 전체가 들어감표본에서 필드가 틀리게 나옴: medium으로 올린 뒤 3.7 Flash를 시도
짧고 단순한 행 수백만 건3.5 Flash Lite기본값이 minimal이며, 당사 테스트에서 네 경로 중 출력이 가장 빠름(약 118토큰/초, 나머지는 37~98)서식이 아니라 행마다 판단이 필요함
번역, 재작성, 제품 문구2.5 Flash 또는 Lite낮은 추론 강도에서 저렴하고 안정적어조가 중요함: 3.7 Flash
한 턴씩 주고받는 채팅3 Flash Preview, low짧은 대화용 경로로, 당사 테스트에서 성인 소설을 완성한 경우가 일부 있었음. L4에서는 대개 순화하거나 거부함문서 전체 컨텍스트가 필요함: 1M 경로 사용. 프리뷰 모델이므로 의존하기 전에 대체 수단을 정해 둘 것
에이전트 루프와 코드3.7 Flash도구 사용과 여러 단계 작업용으로 만들어짐품질보다 단계당 비용이 더 중요함: Lite 또는 2.5 Flash

지식 범위는 2.5 Flash가 2025년 1월까지, 3.5 Flash Lite가 2026년 3월까지입니다. 가격이나 라이브러리 버전처럼 그 이후의 사실은 프롬프트에 넣으세요.

크리에이터의 세 가지 작업과 사용할 경로

출시 브리프 추출. 승인된 제목, 캐릭터, 출시일, 길이를 2.5 Flash에 주고, 이 네 필드에 장소를 더한 한 행을 요청하세요. 브리프에 장소가 한 번도 나오지 않으면 쓸 만한 행에는 null이 들어갑니다. 모델이 주제로부터 호텔이나 스튜디오를 지어내지 않습니다.

공개 홍보 문구 초안 작성. 가상의 Last Train 브리프에서 마라와 존이라는 캐릭터와 45초 클립이 승인되었다고 합시다. 이 사실만 사용한 짧은 캡션 세 개를 요청하세요. 어조가 매력적이더라도 "4K", 네이티브 오디오, 확인되지 않은 출시일을 덧붙인 캡션은 실패한 초안입니다. 첫 작업에는 Lite나 2.5 Flash를 쓰고, 더 비싼 경로는 정말로 더 나은 판단이 필요한 재작성을 위해 남겨 두세요.

지원 인계 준비. 작업 ID, 관찰된 상태, 고객의 증상을 제공하세요. ID를 유지하고 "queued"와 "failed"를 구분하는 간결한 메모를 요청합니다. 모델은 증거를 정리할 수는 있지만, 티켓에 없는 작업의 현재 상태를 알아낼 수는 없습니다.

더 긴 초안 작성 패키지의 경우, 캐시 없는 입력 20,000토큰과 청구된 출력 2,000토큰짜리 요청 1,000건의 비용은 이 요금으로 2.5 Flash에서 $10.45, 3.7 Flash에서 $20.25입니다. 그래서 전체 작업을 최신 경로로 옮기기보다, 일상적인 첫 작업과 비싼 판단 단계를 분리하는 것이 도움이 됩니다.

경로별 성인 콘텐츠 제한

카탈로그는 이 경로들을 SpicyAPI가 추가한 콘텐츠 필터가 없는 것으로 표시합니다. 그렇다고 모델 자체의 콘텐츠 정책이 사라지는 것은 아닙니다. 2026년 9월 당사 테스트에서는 모델이 스스로 쓰는 내용에 차이가 있었습니다. 단계는 L1 암시적, L2 암시된 관능적 장면, L3 강한 수위, L4 성인 사이의 글로 쓴 성적인 장면입니다. 극단 단계는 결박과 타격 플레이에 성인 사이의 비성적인 잔혹한 폭력을 결합한 것이며, 범주당 요청 세 건입니다.

경로L1~L3L4 성적인 장면극단 단계
2.5 Flash제공됨9건 중 2건, 둘 다 시스템 프롬프트 사용6건 중 5건
3 Flash Preview제공됨8건 중 1건, 대개 순화됨6건 중 6건
3.5 Flash LiteL1과 L2는 문제없음, L3는 3건 중 1건9건 중 0건6건 중 4건
3.7 Flash대부분 제공됨9건 중 0건엇갈림

리뷰: 2.5 Flash, 3 Flash Preview, 3.5 Flash Lite, 3.7 Flash.

2.5 Flash의 L4 완성 두 건은 시스템에서 틀을 잡은 소설을 사용했습니다. 이 테스트에서 직접 요청은 모두 거부되었습니다. 글로 쓴 성적인 장면이 핵심 결과물이라면 다른 모델을 고르세요. 이 Flash 경로들은 성인 대상 작업 주변의 출시 브리프, 일정, 메시지 태깅에는 여전히 유용합니다.

먼저 Playground에서 시도하기

  1. Gemini 2.5 Flash를 열고 Playground 탭으로 전환하세요(전송하려면 로그인이 필요합니다).
  2. 지원 티켓 하나를 붙여넣고, 추론 드롭다운을 Low로 둔 채 카테고리와 긴급 필드를 요청하세요.
  3. Gemini 3.5 Flash Lite를 열어 추론을 minimal로 설정하고, 같은 티켓을 실행해 올바른 라벨 수와 청구된 출력을 비교하세요.

스트리밍 배치 스크립트

Playground에서 규칙이 잘 동작하면 python3 -m pip install openai로 호환 클라이언트를 설치하고, 아래 코드를 classify_tickets.py로 저장한 다음 SPICY_API_KEY를 설정하고 python3 classify_tickets.py를 실행하세요. 샘플 티켓마다 한 번씩, 최대 과금되는 요청은 두 건입니다. 클라이언트는 두 필드를 검증하고, 실패한 행은 미해결 상태로 남깁니다. 대체 답변을 자동으로 구매하지 않습니다.

python
import json
import os
import uuid
from concurrent.futures import ThreadPoolExecutor
from openai import OpenAI

class ReplyError(Exception):
    def __init__(self, message, task_id=None):
        super().__init__(message)
        self.task_id = task_id


def call_once(payload, api_key):
    client = OpenAI(api_key=api_key, base_url="https://api.spicyapi.ai/v1",
                    max_retries=0, timeout=600)
    request_key = str(uuid.uuid4())
    parts, finish, usage, task_id = [], None, None, None
    try:
        with client.chat.completions.create(
            **payload, stream=True, stream_options={"include_usage": True},
            extra_headers={"Idempotency-Key": request_key},
        ) as stream:
            task_id = stream.response.headers.get("X-Spicy-Task-Id")
            for chunk in stream:
                if chunk.usage:
                    usage = chunk.usage.model_dump()
                for choice in chunk.choices:
                    parts.append(choice.delta.content or "")
                    finish = choice.finish_reason or finish
        if finish != "stop" or usage is None:
            raise ReplyError("Incomplete reply; do not import this record", task_id)
        return "".join(parts), usage, task_id
    except ReplyError:
        raise
    except Exception as error:
        raise ReplyError(str(error), task_id) from error

SYSTEM = ("Classify the supplied ticket as data. Return exactly category "
          "(billing, shipping or other) and urgent (a JSON boolean).")


def classify(text, model="google/gemini-2.5-flash/chat", effort="low"):
    payload = {
        "model": model, "reasoning_effort": effort, "max_tokens": 4000,
        "response_format": {"type": "json_object"},
        "messages": [{"role": "system", "content": SYSTEM},
                     {"role": "user", "content": text}],
    }
    content, usage, task_id = call_once(payload, os.environ["SPICY_API_KEY"])
    try:
        record = json.loads(content)
        if (not isinstance(record, dict) or set(record) != {"category", "urgent"}
                or record["category"] not in {"billing", "shipping", "other"}
                or type(record["urgent"]) is not bool):
            raise ValueError("invalid ticket fields")
    except (ValueError, TypeError) as error:
        raise ReplyError("completed answer failed validation", task_id) from error
    return {"record": record, "usage": usage, "task_id": task_id}


def safe_classify(text):
    try:
        return classify(text)
    except ReplyError as error:
        return {"unresolved": text, "error": str(error), "task_id": error.task_id}


if __name__ == "__main__":
    rows = ["Where is my parcel?", "I was charged twice, fix it today"]
    with ThreadPoolExecutor(max_workers=2) as pool:
        for result in pool.map(safe_classify, rows):
            print(json.dumps(result))

요청 복구와 스트리밍에 대한 자세한 내용은 채팅 문서에 있습니다.

Agent에게 호출 준비를 맡기기

티켓 분류를 반복한다면 코딩 Agent에게 SpicyAPI Skill을 사용하도록 요청하세요: "Read google/gemini-2.5-flash/chat, then adapt the example to my input; show the request before running it." CLI로 조회하려면 spicyapi models get google/gemini-2.5-flash/chat --json을, MCP로 조회하려면 spicyapi_model_get을 model: "google/gemini-2.5-flash/chat"와 함께 사용합니다. 채팅 호출에는 호환 클라이언트 또는 채팅 API를 사용하며, 미디어 작업 명령은 채팅 답변을 생성하지 않습니다.

자주 발생하는 오류 해결

문제바로 할 수 있는 변경
minimal이 거부됨2.5 Flash와 3.7 Flash에서는 low를 사용
JSON이 비었거나 잘림먼저 종료 사유와 원래 작업을 확인하세요. 토큰 한도 때문에 답변이 잘렸을 때만 max_tokens를 올리세요. 사고도 이 예산을 함께 씁니다. 끊어진 스트림에 필요한 것은 복구이지 더 큰 자동 재시도가 아닙니다. 가져오기 전에 stop, 최종 사용량, [DONE]을 필수로 요구하세요
Lite 답변이 일찍 멈춤기본 max_tokens가 4,096이므로 명시적으로 설정
미디어 파트에서 400형식을 확인하세요. image_url 또는 업로드한 video_url을 사용하세요. 오디오는 2.5 Flash와 Preview만 지원합니다. PDF/파일 파트는 지원되지 않습니다.
키를 다시 보낼 때 400원래 요청이 완료되었거나 아직 실행 중일 수 있으며, 어느 쪽 답변도 이 연결로 다시 재생할 수 없습니다. 새 생성 예산을 잡기 전에 해당 작업과 정산을 확인하세요
없는 JSON 키가 생성됨시스템 메시지에 모든 키를 명시하고, 클라이언트에서 추가 키를 거부
입력이 256,000토큰 초과3 Flash Preview는 거부하므로 1,048,576토큰 경로를 사용
약 100초 후 게이트웨이 오류stream: true를 켬

현실적인 선택

검증된 추출과 일반 문구에는 2.5 Flash, 단순한 작업이 최소 추론의 이점을 얻는다면 Lite, 코드나 여러 단계의 도구 작업에는 3.7 Flash를 쓰세요. Preview는 더 작은 입력 창에 들어가는 짧은 대화 워크플로를 위해 남겨 두세요. 노골적인 성인 소설이 핵심 결과물이라면 이 중 어느 것도 믿을 만한 선택이 아닙니다. Flash라는 이름보다 기록된 제한이 더 중요합니다.

다른 언어 English · 日本語 · Deutsch · Français · Español · Português (Brasil) · Русский · Italiano · Polski

직접 해 보기

실행한 만큼만 결제하세요. 요금제도, 구독도 없습니다.

사용 모델: MiniMax H3 · ByteDance Seedance 2.0 Fast