Skip to content

Claude API 가격 체계

Published: at 10:10 PM

들어가며

Claude API를 사용하면 비용이 얼마나 들까? 이 질문은 Claude를 프로덕션 환경에 도입하려는 개발자라면 반드시 알아야 하는 내용이다.

Claude API는 토큰 기반 가격 정책을 사용한다. 사용한 만큼만 지불하는 구조로, 입력 토큰과 출력 토큰에 따라 비용이 결정된다.

이번 차시에서는 Claude API의 가격 체계를 상세히 알아보고, 모델별 가격 차이와 실제 비용 계산 방법을 학습한다.

토큰 기반 가격 정책

기본 개념

Claude API 가격은 세 가지 핵심 요소로 구성된다:

  1. MTok (Million Tokens): 백만 토큰 단위로 가격을 표시
  2. 입력 토큰: 사용자가 보낸 프롬프트
  3. 출력 토큰: Claude가 생성한 응답

가격 비율

모든 Claude 모델에서 출력 토큰은 입력 토큰보다 5배 비싸다.

출력 토큰 가격 = 입력 토큰 가격 × 5

이유는 다음과 같다:

모델별 가격 비교

현재 모델 가격표 (2026년 2월 기준)

모델입력 (MTok)출력 (MTok)비율
Claude Opus 4.6$5$251:5
Claude Opus 4.5$5$251:5
Claude Sonnet 4.6$3$151:5
Claude Sonnet 4.5$3$151:5
Claude Haiku 4.5$1$51:5
Claude Haiku 3.5$0.80$41:5

가격 계층 분석

Opus 계열 (최고 성능)

Sonnet 계열 (균형)

Haiku 계열 (경제적)

실제 비용 계산

비용 계산 공식

총 비용 = (입력 토큰 × 입력 가격 / 1,000,000) + (출력 토큰 × 출력 가격 / 1,000,000)

예시 1: 간단한 질문

시나리오:
- 입력: 500 토큰 (짧은 질문)
- 출력: 1,000 토큰 (간단한 답변)
- 모델: Claude Sonnet 4.5

계산:
- 입력 비용: 500 × $3 / 1,000,000 = $0.0015
- 출력 비용: 1,000 × $15 / 1,000,000 = $0.015
- 총 비용: $0.0165 (약 22원)

예시 2: 코드 생성

시나리오:
- 입력: 2,000 토큰 (코드 컨텍스트 + 요청)
- 출력: 5,000 토큰 (함수 구현 + 설명)
- 모델: Claude Opus 4.6

계산:
- 입력 비용: 2,000 × $5 / 1,000,000 = $0.01
- 출력 비용: 5,000 × $25 / 1,000,000 = $0.125
- 총 비용: $0.135 (약 180원)

예시 3: 긴 문서 분석

시나리오:
- 입력: 50,000 토큰 (긴 문서)
- 출력: 2,000 토큰 (요약)
- 모델: Claude Sonnet 4.5

계산:
- 입력 비용: 50,000 × $3 / 1,000,000 = $0.15
- 출력 비용: 2,000 × $15 / 1,000,000 = $0.03
- 총 비용: $0.18 (약 241원)

예시 4: 대량 분류 작업

시나리오:
- 입력: 500 토큰 × 1,000건
- 출력: 50 토큰 × 1,000건
- 모델: Claude Haiku 4.5

계산:
- 입력 비용: 500,000 × $1 / 1,000,000 = $0.50
- 출력 비용: 50,000 × $5 / 1,000,000 = $0.25
- 총 비용: $0.75 (약 1,004원)

월간 비용 추정

개인 개발자

일일 사용량:
- API 호출: 50회
- 평균 입력: 1,000 토큰
- 평균 출력: 2,000 토큰
- 모델: Claude Sonnet 4.5

일일 비용:
- 입력: 50,000 × $3 / 1,000,000 = $0.15
- 출력: 100,000 × $15 / 1,000,000 = $1.50
- 합계: $1.65

월간 비용: $1.65 × 30 = $49.50 (약 66,000원)

소규모 스타트업

일일 사용량:
- API 호출: 500회
- 평균 입력: 2,000 토큰
- 평균 출력: 3,000 토큰
- 모델: Claude Sonnet 4.5

일일 비용:
- 입력: 1,000,000 × $3 / 1,000,000 = $3.00
- 출력: 1,500,000 × $15 / 1,000,000 = $22.50
- 합계: $25.50

월간 비용: $25.50 × 30 = $765 (약 102만원)

중규모 서비스

일일 사용량:
- API 호출: 5,000회
- 평균 입력: 3,000 토큰
- 평균 출력: 2,000 토큰
- 모델: Claude Haiku 4.5 (비용 최적화)

일일 비용:
- 입력: 15,000,000 × $1 / 1,000,000 = $15.00
- 출력: 10,000,000 × $5 / 1,000,000 = $50.00
- 합계: $65.00

월간 비용: $65 × 30 = $1,950 (약 261만원)

Python으로 비용 계산하기

기본 비용 계산

import anthropic

client = anthropic.Anthropic()

# API 호출
response = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": "Python에서 리스트 컴프리헨션을 설명해줘."
    }]
)

# 토큰 사용량 확인
input_tokens = response.usage.input_tokens
output_tokens = response.usage.output_tokens

print(f"입력 토큰: {input_tokens}")
print(f"출력 토큰: {output_tokens}")

# 비용 계산 (Sonnet 4.5 기준)
input_cost = input_tokens * 3 / 1_000_000
output_cost = output_tokens * 15 / 1_000_000
total_cost = input_cost + output_cost

print(f"입력 비용: ${input_cost:.6f}")
print(f"출력 비용: ${output_cost:.6f}")
print(f"총 비용: ${total_cost:.6f}")

모델별 비용 계산기

# 모델별 가격 (MTok 기준)
PRICING = {
    "claude-opus-4-6-20250629": {"input": 5, "output": 25},
    "claude-opus-4-5-20250929": {"input": 5, "output": 25},
    "claude-sonnet-4-6-20250929": {"input": 3, "output": 15},
    "claude-sonnet-4-5-20250929": {"input": 3, "output": 15},
    "claude-haiku-4-5-20250929": {"input": 1, "output": 5},
    "claude-haiku-3-5-20240307": {"input": 0.80, "output": 4},
}

def calculate_cost(model: str, input_tokens: int, output_tokens: int) -> dict:
    """모델별 비용 계산"""
    if model not in PRICING:
        raise ValueError(f"알 수 없는 모델: {model}")

    prices = PRICING[model]
    input_cost = input_tokens * prices["input"] / 1_000_000
    output_cost = output_tokens * prices["output"] / 1_000_000

    return {
        "input_cost": input_cost,
        "output_cost": output_cost,
        "total_cost": input_cost + output_cost,
        "total_cost_krw": (input_cost + output_cost) * 1340  # 환율 적용
    }

# 사용 예시
result = calculate_cost(
    model="claude-sonnet-4-5-20250929",
    input_tokens=5000,
    output_tokens=2000
)

print(f"입력 비용: ${result['input_cost']:.4f}")
print(f"출력 비용: ${result['output_cost']:.4f}")
print(f"총 비용: ${result['total_cost']:.4f}")
print(f"원화: ₩{result['total_cost_krw']:.0f}")

월간 비용 추적기

from datetime import datetime
from collections import defaultdict

class CostTracker:
    """API 비용 추적기"""

    def __init__(self):
        self.daily_usage = defaultdict(lambda: {"input": 0, "output": 0, "calls": 0})

    def log_usage(self, model: str, input_tokens: int, output_tokens: int):
        """사용량 기록"""
        today = datetime.now().strftime("%Y-%m-%d")
        self.daily_usage[today]["input"] += input_tokens
        self.daily_usage[today]["output"] += output_tokens
        self.daily_usage[today]["calls"] += 1

    def get_daily_cost(self, date: str, model: str) -> float:
        """일일 비용 계산"""
        usage = self.daily_usage[date]
        result = calculate_cost(model, usage["input"], usage["output"])
        return result["total_cost"]

    def get_monthly_report(self, model: str) -> dict:
        """월간 리포트 생성"""
        total_input = sum(d["input"] for d in self.daily_usage.values())
        total_output = sum(d["output"] for d in self.daily_usage.values())
        total_calls = sum(d["calls"] for d in self.daily_usage.values())

        result = calculate_cost(model, total_input, total_output)

        return {
            "total_calls": total_calls,
            "total_input_tokens": total_input,
            "total_output_tokens": total_output,
            "total_cost_usd": result["total_cost"],
            "total_cost_krw": result["total_cost_krw"],
            "avg_cost_per_call": result["total_cost"] / total_calls if total_calls > 0 else 0
        }

# 사용 예시
tracker = CostTracker()

# 사용량 기록
tracker.log_usage("claude-sonnet-4-5-20250929", 1000, 500)
tracker.log_usage("claude-sonnet-4-5-20250929", 2000, 1000)

# 월간 리포트
report = tracker.get_monthly_report("claude-sonnet-4-5-20250929")
print(f"총 호출: {report['total_calls']}회")
print(f"총 비용: ${report['total_cost_usd']:.4f}")
print(f"호출당 평균: ${report['avg_cost_per_call']:.4f}")

모델 선택 가이드

비용 효율성 비교

동일한 작업을 각 모델로 수행했을 때의 비용 비교:

작업: 1,000개 문서 요약
- 입력: 문서당 3,000 토큰
- 출력: 요약당 500 토큰

Opus 4.6:
- 비용: (3M × $5 + 0.5M × $25) / 1M = $27.50

Sonnet 4.5:
- 비용: (3M × $3 + 0.5M × $15) / 1M = $16.50

Haiku 4.5:
- 비용: (3M × $1 + 0.5M × $5) / 1M = $5.50

결론: Haiku는 Opus 대비 80% 저렴

모델 선택 기준

상황권장 모델이유
복잡한 코드 생성Opus높은 정확도 필요
일반 질의응답Sonnet균형 잡힌 성능과 비용
분류/태깅 작업Haiku간단한 작업, 대량 처리
고객 지원 챗봇Sonnet/Haiku실시간 응답 필요
데이터 분석Sonnet중간 복잡도 작업
문서 요약Haiku비용 효율적

하이브리드 접근법

def smart_model_selector(task_type: str, input_tokens: int) -> str:
    """작업 유형에 따른 모델 자동 선택"""

    # 복잡한 작업은 Opus
    if task_type in ["code_generation", "complex_analysis", "agent_task"]:
        return "claude-opus-4-6-20250629"

    # 중간 복잡도는 Sonnet
    if task_type in ["summarization", "qa", "content_creation"]:
        return "claude-sonnet-4-5-20250929"

    # 간단한 작업은 Haiku
    if task_type in ["classification", "extraction", "simple_qa"]:
        return "claude-haiku-4-5-20250929"

    # 기본값
    return "claude-sonnet-4-5-20250929"

# 사용 예시
model = smart_model_selector("classification", 500)
print(f"선택된 모델: {model}")

비용 최적화 팁

1. max_tokens 최적화

필요한 만큼만 출력을 제한한다.

# ❌ 비효율적: 불필요하게 큰 max_tokens
response = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=4096,  # 실제로 100 토큰만 필요한 경우
    messages=[{"role": "user", "content": "Yes or No?"}]
)

# ✅ 효율적: 적절한 max_tokens
response = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=10,  # 필요한 만큼만
    messages=[{"role": "user", "content": "Yes or No?"}]
)

2. 프롬프트 최적화

불필요한 설명을 제거한다.

# ❌ 비효율적: 장황한 프롬프트
prompt = """
안녕하세요. 저는 개발자입니다. 오늘 Python에 대해 질문이 있습니다.
Python에서 리스트를 정렬하는 방법을 알고 싶습니다.
가능하다면 여러 가지 방법을 알려주시면 감사하겠습니다.
그리고 각 방법의 장단점도 설명해 주세요.
"""

# ✅ 효율적: 간결한 프롬프트
prompt = "Python 리스트 정렬 방법 3가지와 각각의 장단점을 설명해줘."

3. 적절한 모델 선택

작업 복잡도에 맞는 모델을 선택한다.

# ❌ 비효율적: 간단한 작업에 Opus 사용
response = client.messages.create(
    model="claude-opus-4-6-20250629",
    max_tokens=10,
    messages=[{"role": "user", "content": "2 + 2 = ?"}]
)

# ✅ 효율적: 간단한 작업에 Haiku 사용
response = client.messages.create(
    model="claude-haiku-4-5-20250929",
    max_tokens=10,
    messages=[{"role": "user", "content": "2 + 2 = ?"}]
)

4. 캐싱 활용

반복 사용되는 시스템 프롬프트를 캐싱한다. (다음 차시에서 상세히 다룸)

# 캐싱으로 비용 90% 절감 가능
response = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": "긴 시스템 프롬프트...",
        "cache_control": {"type": "ephemeral"}  # 5분간 캐싱
    }],
    messages=[{"role": "user", "content": "질문"}]
)

5. 배치 API 활용

대량 처리 시 50% 할인을 받을 수 있다. (다음 차시에서 상세히 다룸)

# 배치 API로 50% 할인
batch = client.messages.batches.create(
    requests=[
        {
            "custom_id": f"request-{i}",
            "params": {
                "model": "claude-sonnet-4-5-20250929",
                "max_tokens": 1024,
                "messages": [{"role": "user", "content": f"질문 {i}"}]
            }
        }
        for i in range(100)
    ]
)

비용 모니터링

API 응답에서 사용량 확인

response = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}]
)

# 사용량 정보
print(f"입력 토큰: {response.usage.input_tokens}")
print(f"출력 토큰: {response.usage.output_tokens}")

# 캐싱 사용 시 추가 정보
if hasattr(response.usage, 'cache_creation_input_tokens'):
    print(f"캐시 생성 토큰: {response.usage.cache_creation_input_tokens}")
if hasattr(response.usage, 'cache_read_input_tokens'):
    print(f"캐시 읽기 토큰: {response.usage.cache_read_input_tokens}")

콘솔에서 모니터링

Anthropic 콘솔(https://platform.claude.com)에서 다음을 확인할 수 있다:

정리

핵심 요점

  1. MTok 단위: 백만 토큰당 가격으로 계산
  2. 5배 비율: 출력 토큰이 입력 토큰보다 5배 비쌈
  3. 모델별 가격:
    • Opus: $5/$25 (MTok)
    • Sonnet: $3/$15 (MTok)
    • Haiku: $1/$5 (MTok)
  4. 비용 최적화: 적절한 모델 선택, 프롬프트 최적화, 캐싱 활용

비용 계산 공식

총 비용 = (입력 토큰 × 입력 가격) + (출력 토큰 × 출력 가격)
       ─────────────────────────────────────────────────
                        1,000,000

모델 선택 체크리스트

다음 단계

다음 차시에서는 고급 기능별 가격을 알아본다. 프롬프트 캐싱으로 비용을 89% 절감하는 방법, 배치 API로 50% 할인받는 방법, 그리고 긴 컨텍스트 사용 시 추가 비용에 대해 학습한다.

참고 자료


Previous Post
Claude API 고급 기능별 가격
Next Post
컨텍스트 윈도우 이해