Claude Sonnet 5 API 요금 $2/$10 영구 고정 — 단가표보다 먼저 봐야 할 캐시·토크나이저

mini_knows·2026년 8월 14일

AI 트렌드·이슈

목록 보기
72/119


안녕하세요, 미니지식공간입니다.

Claude Sonnet 5 API 요금이 입력 $2 / 출력 $10(100만 토큰당)으로 고정됐다. 9월 1일 예정이던 $3/$15 인상이 취소된 것이라, Claude API 비용을 모델링해 둔 코드와 대시보드는 상수만 그대로 두면 된다. 다만 이 발표로 청구서가 줄지는 않으므로, 이 글에서는 단가표 다음에 실제로 금액을 움직이는 캐시 파라미터와 토크나이저 쪽을 더 깊게 본다.

결론부터

  • 도입가 $2/$10이 표준가로 확정. 2026-09-01 예정이던 $3/$15 인상 철회.
  • 공식 블로그 변경 이력 날짜는 2026-08-10, Claude 공식 X 계정 공지는 2026-08-11로 보도됨. 하루 차이는 채널·시간대 차이로 보인다.
  • 모델 ID(claude-sonnet-5), 엔드포인트, 요청 스키마는 변경 없음. 마이그레이션 작업 불필요.
  • 실제 청구액을 좌우하는 건 단가가 아니라 캐시 적중률과 요청당 토큰 수다.

과금 항목 전체

공식 가격 문서 기준, 100만 토큰당 USD.

항목Sonnet 5Sonnet 4.6Opus 5
기본 입력$2$3$5
5분 캐시 쓰기 (1.25x)$2.50$3.75$6.25
1시간 캐시 쓰기 (2x)$4$6$10
캐시 히트·갱신 (0.1x)$0.20$0.30$0.50
출력$10$15$25
배치 입력 / 출력 (0.5x)$1 / $5$1.50 / $7.50$2.50 / $12.50

배수는 문서에 명시된 값 그대로다. 5분 캐시 쓰기는 기본 입력가의 1.25배, 1시간 캐시 쓰기는 2배, 캐시 읽기는 0.1배다. 배치 할인과 데이터 레지던시 배수는 이 위에 곱해진다.

Sonnet 5에서 별도로 확인해야 할 값이 하나 더 있다. 최소 캐시 가능 프롬프트 길이가 1,024 토큰이다. 이보다 짧으면 cache_control을 붙여도 캐시되지 않고 오류도 반환되지 않는다. Opus 5·Fable 5는 512 토큰, Haiku 4.5는 4,096 토큰으로 모델마다 다르므로, 라우팅 계층에서 모델을 바꿀 때 함께 점검해야 한다.

요청 단위로 환산하면

요청당 입력 8,000 토큰 / 출력 1,000 토큰, 월 100만 요청을 가정한다.

시나리오입력 비용출력 비용월 합계
취소된 인상안 $3/$15, 캐시 미적용$24,000$15,000$39,000
확정 단가 $2/$10, 캐시 미적용$16,000$10,000$26,000
확정 단가 $2/$10, 입력 7,000토큰 캐시 히트$3,400$10,000$13,400

가격 정책 변경으로 아낀 금액은 월 $13,000이다. 그런데 같은 표에서 캐시를 제대로 태워 얻는 금액도 월 $12,600이다. 두 효과의 크기가 비슷한데, 하나는 공급사가 결정했고 다른 하나는 우리가 결정한다.

캐시를 태우는 최소 코드

공식 문서의 자동 캐싱(automatic caching) 예제다. 요청 본문 최상위에 cache_control을 한 번만 넣으면 시스템이 마지막 캐시 가능 블록에 브레이크포인트를 자동 배치한다. 문서 예제의 model 값만 claude-sonnet-5로 바꿨다.

# 출처: https://platform.claude.com/docs/en/build-with-claude/prompt-caching
client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    cache_control={"type": "ephemeral"},
    system="You are an AI assistant tasked with analyzing literary works. Your goal is to provide insightful commentary on themes, characters, and writing style.",
    messages=[
        {
            "role": "user",
            "content": "Analyze the major themes in 'Pride and Prejudice'.",
        }
    ],
)
print(response.usage.model_dump_json())

1시간 TTL이 필요하면 같은 필드에 ttl을 붙인다. 문서에 명시된 형식은 다음과 같다.

{ "cache_control": { "type": "ephemeral", "ttl": "1h" } }

캐시가 실제로 걸렸는지는 응답의 usage로만 판단할 수 있다. 문서에 나온 응답 예시 구조다.

{
  "usage": {
    "input_tokens": 2048,
    "cache_read_input_tokens": 1800,
    "cache_creation_input_tokens": 248,
    "output_tokens": 503,
    "cache_creation": {
      "ephemeral_5m_input_tokens": 148,
      "ephemeral_1h_input_tokens": 100
    }
  }
}

문서가 명시하는 계산식은 total_input_tokens = cache_read_input_tokens + cache_creation_input_tokens + input_tokens다. input_tokens는 전체 입력이 아니라 마지막 캐시 브레이크포인트 이후의 토큰만 센다. 이걸 전체 입력으로 착각하면 비용 대시보드가 실제보다 작게 나온다. cache_creation_input_tokens와 cache_read_input_tokens가 모두 0이면 캐시가 아예 걸리지 않은 것이고, 대개 원인은 위에서 말한 1,024 토큰 최소 길이 미달이다.

아래는 위 단가를 그대로 대입한 비용 환산 스크립트다. API 호출 코드가 아니라 문서상 단가를 코드로 옮긴 것이다.

# 단가 출처: https://platform.claude.com/docs/en/about-claude/pricing
RATE = {"input": 2.0, "cache_read": 0.20, "cache_write_5m": 2.50, "output": 10.0}

def cost(usage: dict) -> float:
    return (
        usage["input_tokens"] * RATE["input"]
        + usage["cache_read_input_tokens"] * RATE["cache_read"]
        + usage["cache_creation_input_tokens"] * RATE["cache_write_5m"]
        + usage["output_tokens"] * RATE["output"]
    ) / 1_000_000

print(cost({
    "input_tokens": 1000, "cache_read_input_tokens": 7000,
    "cache_creation_input_tokens": 0, "output_tokens": 1000,
}))

캐시를 깨뜨리는 것들

문서의 무효화 표에서 에이전트 코드에 실제로 걸리는 항목만 추리면 이렇다.

  • 도구 정의 변경: 이름·설명·파라미터를 건드리면 tools / system / messages 캐시가 전부 무효화된다. 도구 스키마를 런타임에 조립한다면 직렬화 순서를 고정해야 한다.
  • speed 설정 전환: speed: "fast"와 표준 속도를 오가면 system·messages 캐시가 깨진다.
  • effort 값 변경: output_config.effort를 바꾸면 messages 캐시가 항상 무효화된다. 모델의 기본값을 명시적으로 지정하는 것은 생략과 동일하게 취급돼 무효화되지 않는다.
  • tool_use 블록의 키 순서: Swift·Go 등 일부 언어는 JSON 변환 시 키 순서를 무작위화해 캐시를 깬다고 문서가 직접 언급한다.
  • 브레이크포인트 위치: 타임스탬프나 사용자 메시지처럼 매 요청 바뀌는 블록에 cache_control을 걸면 쓰기만 계속 발생하고 읽기는 영영 없다. 룩백 창은 20블록이다.

Sonnet 5는 대화 중간에 시스템 지시를 추가해도 캐시가 유지되는 모델군에 포함된다. 최상위 system 필드를 수정하는 대신 {"role": "system"} 메시지를 messages에 덧붙이면 캐시된 프리픽스가 그대로 남는다.

토크나이저 이슈는 그대로다

단가가 고정됐다고 토큰 수까지 고정된 것은 아니다. 앤트로픽은 Sonnet 5 출시 공지 각주에서 "갱신된 토크나이저를 사용하며, 같은 입력이 대략 1.0~1.35배의 토큰으로 매핑될 수 있다"고 밝혔다. 한편 공식 가격 문서는 Claude 4.7 이후 모델 전반에 대해 "같은 텍스트에서 약 30% 더 많은 토큰을 생성한다"고 적고 있다. 두 공식 서술의 표현이 다르므로, Sonnet 4.6 이하에서 옮겨온 파이프라인이라면 동일 입력에 대한 실제 토큰 카운트를 로그로 비교해 두는 편이 확실하다.

이 항목이 중요한 이유는 단가 차이보다 크게 작동할 수 있어서다. 단가는 $3에서 $2로 33% 낮아진 반면, 토크나이저 변화는 최대 35% 증가 방향이다. 두 값의 크기가 비슷하다.

라우팅 관점에서

Sonnet 5가 가장 싼 프런티어급 모델은 아니다. OpenAI는 2026-07-30 공식 블로그에서 GPT-5.6 Luna를 입력 $0.20 / 출력 $1.20으로 인하했다고 발표했다(관련 정리: GPT-5.6 Luna 가격 인하와 API 비용 재계산). 단가 격차는 10배다.

다만 단가 비교는 라우팅 결정의 출발점일 뿐이다. 발표 직후 커뮤니티에서는 Artificial Analysis의 작업당 비용(cost per Intelligence Index task) 수치가 회자되며 Sonnet 5의 토큰 소비량을 지적하는 반응이 나왔다. 이 수치들은 제3자 벤치마크이고 공개 게시물을 통해 인용된 값이므로 확인 필요 항목으로 둔다. 실무에서 신뢰할 수 있는 유일한 숫자는 자기 워크로드에서 측정한 완료 작업당 비용이다. 실패·재시도까지 실패한 모델 쪽에 계상해야 비교가 성립한다.

Sonnet 5 자체의 성능 프로필과 Opus 4.8 대비 위치는 이전 글 Claude Sonnet 5 — Opus에 근접한 성능을 낮은 가격 티어로에 정리해 두었다.

자주 묻는 질문

Claude Sonnet 5 가격이 9월 1일에 오르나?
오르지 않는다. 앤트로픽이 $3/$15 인상 계획을 철회했고, 공식 가격 문서에도 인상이 발생하지 않는다고 명시돼 있다. $2/$10이 표준가다.

기존 API 코드를 고쳐야 하나?
아니다. 모델 ID claude-sonnet-5, 엔드포인트, 요청 스키마 모두 그대로다. 비용 계산 로직에 $3/$15를 하드코딩해 뒀다면 그 상수만 되돌리면 된다.

캐시가 걸렸는지 어떻게 확인하나?
응답 usage의 cache_creation_input_tokens와 cache_read_input_tokens를 본다. 둘 다 0이면 캐시되지 않은 것이며, Sonnet 5의 최소 캐시 길이 1,024 토큰을 넘겼는지부터 확인한다.

마무리

이번 발표에서 개발자가 실제로 할 일은 비용 상수 되돌리기 한 줄이다. 그 외에는 바뀐 게 없다. 대신 단가가 고정된 지금이 캐시 적중률과 요청당 토큰 수를 측정하기에 좋은 시점이다. 분모가 멈췄으니 분자를 재는 실험이 월 단위로 비교 가능해진다.

출처

본 글은 공개 자료를 바탕으로 정리했으며, 세부 내용·수치는 원 출처·공식 문서와 대조 확인을 권장합니다. 제3자 벤치마크 및 경쟁 모델 단가는 각 사 발표·제3자 측정값입니다.

profile
작지만 알아야 할 모든 것

0개의 댓글