/posts/claude-code-anthropic-api-cost-optimization-prompt-caching-ai-coding-tools

Claude Code 프롬프트 캐싱으로 Anthropic API 비용 최대 90% 절감하기 (2026년 7월 기준)

Claude Code API 비용, 어떻게 줄일 수 있을까요?

개발 업무에 AI 코딩 도구를 도입하려는 개발자라면 Claude Code의 기능에 매력을 느끼면서도, API 호출 비용에 대한 고민이 함께 따르기 마련입니다. 특히 반복적인 시스템 프롬프트나 도구 정의를 사용하는 경우, 매번 동일한 토큰에 대한 비용을 지불해야 하는 비효율을 경험할 수 있습니다.

이 글에서는 Claude Code의 프롬프트 캐싱(Prompt Caching) 기능을 활용하여 Anthropic API 호출 비용을 효과적으로 절감하는 방법을 분석합니다. 캐싱의 원리, 모델별 요금 구조, 실제 적용 방법, 그리고 주의사항과 한계까지 실무 관점에서 살펴봅니다. 본 글의 모든 요금 정보는 2026년 7월 기준이며, 최신 정보는 Anthropic 공식 문서를 참고하시기 바랍니다.

프롬프트 캐싱의 원리와 비용 절감 효과

Anthropic Claude API는 요청마다 시스템 프롬프트, 도구 정의, 이전 대화 기록 등 전체 컨텍스트를 처리하여 응답을 생성합니다. 프롬프트가 길거나 반복적으로 사용될수록 동일한 토큰을 처리하는 비용이 누적됩니다.

프롬프트 캐싱은 이 비효율을 해결하기 위한 기능입니다. tools 또는 system 프롬프트처럼 고정된 안정적인 접두사 부분을 서버에 캐시해 재사용합니다. 반복 요청 시 캐시된 접두사를 활용하므로 전체 프롬프트 토큰을 매번 다시 처리할 필요가 없어 비용과 처리 시간을 줄일 수 있습니다1.

캐시된 입력 토큰은 일반 입력 토큰 가격의 약 10% 수준으로 청구됩니다. 서드파티 자료에서는 이상적인 조건에서 입력 토큰 비용을 최대 90%까지 절감할 수 있다고 언급하고 있으나23, 이는 이상적인 조건에서의 최대치이며 실제 절감 폭은 워크로드 특성에 따라 달라질 수 있습니다. 긴 시스템 프롬프트나 다중 턴 대화처럼 반복 비중이 높은 워크플로우일수록 효과가 큽니다.

캐싱에는 캐시를 처음 생성하는 캐시 쓰기 비용과 캐시된 내용을 재사용하는 캐시 읽기 비용이 별도로 존재합니다. 캐시 쓰기 비용은 기본 입력 토큰보다 높지만, 캐시 읽기 비용은 매우 저렴합니다. 따라서 반복 사용 빈도가 충분히 높아야 초기 쓰기 비용을 상쇄하고 실질적인 절감 효과를 얻을 수 있습니다.

캐싱 요금 구조와 손익분기점 분석 (2026년 7월 기준)

Anthropic API의 프롬프트 캐싱 요금은 사용하는 모델과 캐시 유효 기간(TTL: Time-To-Live) 옵션에 따라 달라집니다4.

주요 모델별 캐싱 요금 (100만 토큰당, 2026년 7월 기준)

모델기본 입력5분 TTL 캐시 쓰기1시간 TTL 캐시 쓰기캐시 읽기
Sonnet 4.6$3$3.75 (기본의 1.25배)$6 (기본의 2배)$0.30 (기본의 10%)
Sonnet 5*$2 (도입 가격)작성 시점 기준 공식 문서에 명확히 공개되지 않음작성 시점 기준 공식 문서에 명확히 공개되지 않음작성 시점 기준 공식 문서에 명확히 공개되지 않음
Opus 4.6$5$6.25 (기본의 1.25배)$10 (기본의 2배)$0.50 (기본의 10%)
Haiku 4.5$1$1.25 (기본의 1.25배)$2 (기본의 2배)$0.10 (기본의 10%)

* Sonnet 5는 2026년 8월 31일까지 입력 $2/M, 출력 $10/M의 도입 가격이 적용되며, 이후 입력 $3/M, 출력 $15/M으로 변경될 예정입니다5. 캐싱 요율은 작성 시점 기준으로 공식 문서에 명확히 공개되지 않았습니다.

손익분기점 분석

캐시 쓰기 비용이 기본 입력보다 높으므로, 실제 비용 절감 효과를 얻으려면 일정 횟수 이상의 캐시 읽기가 발생해야 합니다. flightlesstux/prompt-caching 자료에 따르면, 5분 TTL 캐시는 3회 이상, 1시간 TTL 캐시는 5회 이상 캐시 읽기가 발생해야 손익분기점을 넘는 것으로 알려져 있습니다.

예시 (Sonnet 4.6, 100만 토큰 기준):

  • 5분 TTL 캐시 쓰기: $3.75

    • 캐시 읽기 3회: $0.30 × 3 = $0.90
    • 캐싱 총비용: $4.65
    • 캐싱 미사용 시 3회 입력 비용: $3 × 3 = $9.00
    • 절감액: $4.35
  • 1시간 TTL 캐시 쓰기: $6.00

    • 캐시 읽기 5회: $0.30 × 5 = $1.50
    • 캐싱 총비용: $7.50
    • 캐싱 미사용 시 5회 입력 비용: $3 × 5 = $15.00
    • 절감액: $7.50

캐시 유효 기간 (TTL)

캐시는 기본적으로 5분 동안 유효하며, 캐시된 콘텐츠가 사용될 때마다 추가 비용 없이 유효 기간이 갱신됩니다. 더 긴 유효 기간이 필요한 경우 추가 비용을 지불하고 1시간 TTL 옵션을 사용할 수 있습니다6.

단, 1시간 TTL은 캐시 쓰기 비용이 5분 TTL의 두 배 수준입니다. 사용 빈도가 충분히 높지 않으면 오히려 비용이 늘어날 수 있으므로, 워크로드 특성을 먼저 파악한 뒤 선택하는 것이 좋습니다.

Claude Code에 프롬프트 캐싱 적용하기

프롬프트 캐싱은 API 요청 시 cache_control 필드를 사용하여 활성화합니다. 캐싱은 tools, system, messages 순서로 프롬프트의 안정적인 접두사에 적용됩니다4.

1. 최상위 cache_control 필드를 이용한 자동 캐싱

가장 간단한 방법은 API 요청 최상위에 cache_control 필드를 추가하는 것입니다. Claude가 요청의 접두사 부분을 자동으로 분석하여 캐싱을 시도합니다.

python
import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system="당신은 전문 Python 개발 어시스턴트입니다.",
    messages=[
        {"role": "user", "content": "버블 정렬 알고리즘을 Python으로 작성해 주세요."}
    ],
    cache_control={"type": "use_read_write_cache", "ttl": "5m"}  # 5분 TTL 캐시
)

print(response.content)

동일한 system 프롬프트로 다른 user 메시지를 보내면 캐시된 접두사를 재사용하여 비용을 절감할 수 있습니다. ttl 필드에는 "5m" 또는 "1h"를 지정합니다.

2. 명시적 브레이크포인트 설정

더 세밀한 제어가 필요한 경우, system 프롬프트나 tools 정의 내 특정 콘텐츠 블록에 cache_control을 배치하여 캐싱 브레이크포인트를 명시적으로 지정할 수 있습니다. 특정 지점까지만 캐시하고 이후 내용은 매번 새롭게 처리하도록 지시할 때 유용합니다.

python
import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "당신은 전문 Python 개발 어시스턴트입니다. 다음 지침을 따르세요."
        },
        {
            "type": "text",
            "text": "사용자 요청을 정확히 이해하고, 효율적인 코드를 작성하며, 발생할 수 있는 오류를 미리 방지해야 합니다."
        },
        {
            "type": "text",
            "text": "코드 설명과 사용 예시를 함께 제공해야 합니다.",
            "cache_control": {"type": "use_read_write_cache", "ttl": "5m"}  #  블록까지 캐시
        }
    ],
    messages=[
        {"role": "user", "content": "퀵 정렬 알고리즘을 Python으로 작성해 주세요."}
    ]
)

print(response.content)

이 예시에서는 system 프롬프트의 세 번째 블록에 cache_control을 배치하여 해당 블록까지의 내용만 캐시되도록 지정했습니다. 다중 턴 대화에서는 최상위 cache_control을 사용하는 자동 캐싱이 더 편리한 경우가 많습니다4.

캐시 무효화 조건

프롬프트 캐싱은 접두사가 정확히 일치할 때만 작동합니다1. 공백 하나, 대소문자 변경, 또는 타임스탬프·사용자 ID 같은 동적 요소가 캐시 대상 구간에 포함되면 캐시가 무효화됩니다. 캐시가 무효화되면 전체 비용을 다시 지불하고 캐시를 새로 작성해야 하므로, 캐싱 대상 프롬프트는 최대한 정적이고 안정적인 내용으로 구성해야 합니다. 동적 정보를 포함해야 한다면 캐시 브레이크포인트를 신중하게 설정하여 동적 부분이 캐시 구간 밖에 위치하도록 해야 합니다.

주의사항 및 한계

프롬프트 캐싱은 유용한 비용 절감 수단이지만, 효과를 극대화하고 예상치 못한 비용 발생을 막으려면 다음 사항을 숙지해야 합니다.

  • 요금 변동성: Anthropic API 요금은 모델 버전 및 정책에 따라 수시로 변동될 수 있습니다. 실제 적용 전에는 반드시 Anthropic 공식 가격 페이지에서 최신 정보를 확인하시기 바랍니다.

  • 캐시 무효화 리스크: 시스템 프롬프트에 타임스탬프, 사용자 ID, 랜덤 값 등 동적 요소가 포함되면 캐시가 무효화되어 비용 절감 효과를 얻지 못할 수 있습니다1.

  • 1시간 TTL 캐시의 높은 초기 쓰기 비용: 1시간 TTL 캐시는 5분 TTL보다 쓰기 비용이 두 배 수준입니다. 사용 빈도가 충분하지 않으면 오히려 비용이 증가할 수 있으므로, 워크로드 특성을 먼저 파악한 뒤 선택해야 합니다.

  • 절감 수치의 불확실성: 서드파티 자료에서 언급하는 "최대 90% 절감" 수치는 이상적인 조건에서의 최대치이며, 실제 환경에 따라 달라질 수 있습니다2. 실제 환경에서 캐싱 효과를 직접 측정하고 최적화하는 과정이 필요합니다.

  • 새로운 토크나이저의 영향: Sonnet 5 등 일부 최신 모델은 새로운 토크나이저를 사용하여 동일한 텍스트에 대해 더 많은 토큰을 소비할 수 있습니다. 캐싱이 적용되더라도 토큰 수 자체가 늘어나므로, 기존 모델과 비교하여 비용 효율성을 재평가할 필요가 있습니다.

  • US-only inference 할증: 미국 내 추론을 지정하는 경우, 입력·출력·캐시 쓰기·캐시 읽기를 포함한 모든 토큰 가격에 할증이 적용됩니다. 캐싱 비용 계산 시 이 점을 반드시 고려해야 합니다.

결론

Claude Code의 프롬프트 캐싱은 반복적인 API 호출 비용을 줄이는 데 실질적으로 유용한 기능입니다. 안정적인 시스템 프롬프트나 도구 정의를 사용하는 워크로드에서 캐싱을 적절히 활용하면 입력 토큰 비용을 의미 있는 수준으로 낮출 수 있습니다. 다만 캐시 무효화 조건을 이해하고, 5분과 1시간 TTL 중 워크로드에 맞는 옵션을 신중하게 선택하는 것이 중요합니다. 캐싱 외에도 적절한 모델 선택, 불필요한 컨텍스트 제거 등 다양한 비용 절감 방법을 함께 적용하면 더 효과적입니다7.

출처

  1. How Prompt Caching Actually Works in Claude Code 2 3

  2. Prompt Caching in the Claude API: A Production Guide 2

  3. What Is Prompt Caching in Claude Code?

  4. Models overview - Claude Platform Docs 2 3

  5. Claude Sonnet - Anthropic

  6. flightlesstux/prompt-caching

  7. 비용을 효과적으로 관리하기 - Claude Code Docs