LLM API 비용, 어떻게 계산하는가 – 3가지 모델 토큰 비교

AI 엔지니어로 일하다 보면 가장 자주 받는 질문 중 하나가 “API 비용이 얼마나 나와요?”이다.

이런 질문을 받으면 보통은 답하기 애매하다.

모델마다 다르고, 입력 길이마다 다르고, 캐싱 여부에 따라서도 달라지기 때문이다.

그래서 이번 포스팅에서는 모델별, 길이별, 캐싱 적용 여부까지 한번 정리해보려 한다.


여기서 다루는 수치는 2026년 3월 기준 공식 문서에서 직접 확인한 내용이다.


기본 단위: 토큰이란 무엇인가

LLM API는 글자 수가 아니라 토큰(token) 단위로 비용을 청구한다.

영어 기준으로 1토큰은 대략 4글자, 0.75단어 수준이다.

한국어는 영어보다 토큰을 더 소비한다. 대략 한글 1글자는 1~2토큰으로 처리되는 경우가 많다.

정확한 수치는 모델마다 다르기 때문에 실제 개발 환경에서는 토크나이저를 직접 돌려 확인하는 것이 좋다.

비용은 입력 토큰출력 토큰으로 나뉜다.

API에 보내는 텍스트(시스템 프롬프트 + 유저 메시지 + 이전 대화)가 입력, 모델이 생성하는 답변이 출력이다.

일반적으로 출력이 입력보다 3~5배 비싸다.


주요 모델 가격 비교 (2026년 3월 기준)

모든 가격은 100만 토큰(1 MTok) 당 USD 기준이다.

Claude (Anthropic)

출처: Anthropic API 가격 문서

모델                  입력       출력       캐시 읽기
Claude Opus 4.6      $5.00     $25.00     $0.50
Claude Sonnet 4.6    $3.00     $15.00     $0.30
Claude Haiku 4.5     $1.00      $5.00     $0.10

Claude는 캐시 쓰기(cache write) 비용이 별도로 있다.

5분 유지 시 기본 입력가의 1.25배, 1시간 유지 시 2배다.

캐시에 저장된 내용을 읽을 때(cache read)는 기본 입력가의 10%만 낸다.

Batch API를 사용하면 입력/출력 모두 50% 할인이 적용된다.

실시간 응답이 필요 없는 작업이라면 배치로 처리하는 것이 비용 절감에 효과적이다.

GPT (OpenAI)

출처: OpenAI Developer Community – GPT-5.4 deep dive

모델          입력       캐시 입력   출력
GPT-5.4      $2.50      $0.25      $15.00
GPT-5.2      $1.75      $0.175     $14.00
GPT-5 mini   $1.25      —         $10.00

GPT-5.4는 컨텍스트 272K 토큰을 초과하면 입력 요금이 2배, 출력 요금이 1.5배로 오른다.

1M 토큰 컨텍스트를 쓴다면 비용 설계를 별도로 해야 한다.

Gemini (Google)

출처: Google Cloud Vertex AI 가격 페이지

모델                  입력 (≤200K)   출력 (≤200K)   캐시 입력
Gemini 2.5 Pro        $1.25         $10.00         $0.125
Gemini 2.5 Flash      $0.30          $2.50         $0.030
Gemini 2.0 Flash      $0.15          $0.60          —
Gemini 2.0 Flash Lite $0.075         $0.30          —

Gemini 2.5 Pro는 200K 토큰 초과 시 입력 $2.50, 출력 $15.00으로 올라간다.


실제 비용 계산

이 공식 하나를 기억하면 된다.

비용 = (입력 토큰 수 × 입력 단가) + (출력 토큰 수 × 출력 단가)

단가는 1MTok 기준이므로 토큰 수를 1,000,000으로 나눠 계산한다.

def calculate_cost(
    input_tokens: int,
    output_tokens: int,
    input_price_per_mtok: float,  # USD per 1M tokens
    output_price_per_mtok: float,
) -> float:
    """API 호출 비용 계산 (USD)"""
    input_cost = (input_tokens / 1_000_000) * input_price_per_mtok
    output_cost = (output_tokens / 1_000_000) * output_price_per_mtok
    return input_cost + output_cost


# 예시: Claude Sonnet 4.6으로 글 요약 1회
# 시스템 프롬프트 500토큰 + 본문 2,000토큰 = 입력 2,500토큰
# 요약 결과 = 출력 400토큰
cost = calculate_cost(
    input_tokens=2_500,
    output_tokens=400,
    input_price_per_mtok=3.0,   # Claude Sonnet 4.6 입력
    output_price_per_mtok=15.0, # Claude Sonnet 4.6 출력
)
print(f"1회 비용: ${cost:.6f}")  # $0.013500 = 약 0.013달러

호출 1회는 아주 저렴하다. 문제는 이게 하루에 수천, 수만 번 쌓일 때다.

# 하루 10,000건 처리 시 월간 예상 비용
daily_calls = 10_000
cost_per_call = calculate_cost(2_500, 400, 3.0, 15.0)
monthly_cost = cost_per_call * daily_calls * 30

print(f"월간 예상 비용: ${monthly_cost:.2f}")  # $4,050

같은 규모를 Claude Haiku 4.5로 처리하면 월 $810, GPT-5.4로 처리하면 약 $5,325다.

모델 선택이 비용에서 가장 큰 레버다.


비용을 줄이는 세 가지 방법

1. 프롬프트 캐싱

시스템 프롬프트나 긴 컨텍스트가 반복 사용된다면 캐싱이 효과적이다.

Claude 기준으로 캐시 읽기 비용은 기본 입력가의 10%다.

즉 같은 시스템 프롬프트를 열 번 이상 재사용하면 거의 이득이라고 보면 된다.

import anthropic

client = anthropic.Anthropic()

# 캐시 제어가 포함된 API 호출
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "당신은 전문 번역가입니다. 한국어를 영어로 번역합니다.",
            "cache_control": {"type": "ephemeral"},  # 이 블록을 캐시
        }
    ],
    messages=[
        {"role": "user", "content": "안녕하세요, 오늘 날씨가 좋네요."}
    ],
)

# 사용량 확인
usage = response.usage
print(f"입력 토큰: {usage.input_tokens}")
print(f"캐시 생성: {usage.cache_creation_input_tokens}")
print(f"캐시 읽기: {usage.cache_read_input_tokens}")
print(f"출력 토큰: {usage.output_tokens}")

첫 번째 요청에서는 캐시 쓰기 비용이 발생한다(기본 입력가의 1.25배).

이후 요청부터는 해당 블록이 캐시에서 읽힌다(기본 입력가의 10%).

시스템 프롬프트가 1,000토큰이라면 두 번째 요청부터는 그 부분의 비용이 90% 절감된다.

2. 모델 라우팅

모든 요청에 같은 모델을 쓸 필요가 없다. 요청 복잡도에 따라 모델을 선택하면 비용을 상당히 줄일 수 있다.

def select_model(task_type: str) -> str:
    """작업 유형에 따라 적절한 모델 선택"""
    routing = {
        "classification": "claude-haiku-4-5",    # 단순 분류 → Haiku
        "summarization": "claude-haiku-4-5",     # 요약 → Haiku
        "analysis": "claude-sonnet-4-6",         # 분석 → Sonnet
        "complex_reasoning": "claude-opus-4-6",  # 복잡한 추론 → Opus
    }
    return routing.get(task_type, "claude-sonnet-4-6")  # 기본값: Sonnet

같은 파이프라인에서도 전처리는 Haiku, 최종 판단은 Sonnet으로 나누는 패턴이 실무에서 자주 쓰인다.

3. Batch API

24시간 내 처리되어도 되는 작업이라면 배치 API를 쓰면 된다.

Claude Batch API는 입력/출력 모두 50% 할인이 적용된다. OpenAI도 Flex 처리를 지원한다.

# Anthropic Batch API 사용 예시
import anthropic

client = anthropic.Anthropic()

# 요청 목록 준비
requests = [
    {
        "custom_id": f"task-{i}",
        "params": {
            "model": "claude-sonnet-4-6",
            "max_tokens": 512,
            "messages": [{"role": "user", "content": f"텍스트 {i}를 요약해줘"}],
        },
    }
    for i in range(100)
]

# 배치 생성
batch = client.messages.batches.create(requests=requests)
print(f"배치 ID: {batch.id}")  # 완료 후 결과 조회

실시간 응답이 필요한 사용자 대면 기능에는 쓸 수 없지만

대용량 데이터 처리, 정기 보고서 생성, 오프라인 분석 작업에는 배치가 적합하다.


실제 서비스에서의 비용 추산

서비스를 설계할 때 내가 쓰는 기준이다.

API 호출당 평균 토큰 추정:
– 시스템 프롬프트: 200~1,000토큰 (기능마다 다름)
– 유저 입력: 평균 100~500토큰 (사용자 인터페이스에 따라 다름)
– 대화 히스토리: 요청당 평균 누적 토큰 (세션이 길어질수록 증가)
– 모델 출력: 기능에 따라 100~2,000토큰

이 수치를 예상 일일 호출 수에 곱하고 각 모델 단가를 적용하면 월간 예상 비용이 나온다.

한 가지 놓치기 쉬운 항목이 있다. Tool use(도구 호출)는 시스템 프롬프트 토큰을 추가로 소비한다.

Claude 기준으로 도구를 하나라도 정의하면 346토큰의 추가 시스템 프롬프트가 붙는다.

도구가 많아질수록 도구 정의(이름, 설명, 스키마)도 입력 토큰에 포함된다.

에이전트 시스템을 설계할 때 이 부분을 비용 계산에 반드시 넣어야 한다.


숫자를 직접 뽑아보기 전까지 비용 직관이 잘 생기지 않는다.

코드 다섯 줄로 계산할 수 있는 것이니 새 기능을 붙이기 전에 먼저 계산해보는 습관을 들이는 게 좋다.

다음 글에서는 Claude와 GPT-5.4를 실제 작업에서 어떻게 선택하는지,

벤치마크 너머의 판단 기준을 정리해볼 예정이다.


참고 출처

  • Anthropic API 가격: https://docs.anthropic.com/en/docs/about-claude/pricing
  • OpenAI GPT-5.4 가격 심층 분석: https://community.openai.com/t/gpt-5-4-deep-dive-pricing-context-limits-and-tool-search-explained/1375800
  • Google Cloud Vertex AI Gemini 가격: https://cloud.google.com/vertex-ai/generative-ai/pricing

댓글 남기기