Loading...
    • 개발자 가이드
    • API 레퍼런스
    • MCP
    • 리소스
    • 릴리스 노트
    Search...
    ⌘K
    시작하기
    Claude 소개빠른 시작
    모델 및 가격
    모델 개요모델 선택Claude 4.6의 새로운 기능마이그레이션 가이드모델 지원 중단가격
    Claude로 구축하기
    기능 개요Messages API 사용중지 사유 처리프롬프트 모범 사례
    모델 기능
    확장 사고적응형 사고노력도빠른 모드 (연구 프리뷰)구조화된 출력인용스트리밍 메시지배치 처리PDF 지원검색 결과다국어 지원임베딩비전
    도구
    개요도구 사용 구현 방법웹 검색 도구웹 페치 도구코드 실행 도구메모리 도구Bash 도구컴퓨터 사용 도구텍스트 편집기 도구
    도구 인프라
    도구 검색프로그래밍 방식 도구 호출세분화된 도구 스트리밍
    컨텍스트 관리
    컨텍스트 윈도우압축컨텍스트 편집프롬프트 캐싱토큰 카운팅
    파일 및 자산
    Files API
    Agent Skills
    개요빠른 시작모범 사례엔터프라이즈용 SkillsAPI에서 Skills 사용
    Agent SDK
    개요빠른 시작TypeScript SDKTypeScript V2 (프리뷰)Python SDK마이그레이션 가이드
    API에서 MCP 사용
    MCP 커넥터원격 MCP 서버
    서드파티 플랫폼의 Claude
    Amazon BedrockMicrosoft FoundryVertex AI
    프롬프트 엔지니어링
    개요프롬프트 생성기프롬프트 템플릿 사용프롬프트 개선기명확하고 직접적으로 작성하기예시 사용 (멀티샷 프롬프팅)Claude에게 생각하게 하기 (CoT)XML 태그 사용Claude에게 역할 부여 (시스템 프롬프트)복잡한 프롬프트 연결긴 컨텍스트 팁확장 사고 팁
    테스트 및 평가
    성공 기준 정의테스트 케이스 개발평가 도구 사용지연 시간 줄이기
    가드레일 강화
    환각 줄이기출력 일관성 높이기탈옥 방지스트리밍 거부프롬프트 유출 줄이기Claude 캐릭터 유지
    관리 및 모니터링
    Admin API 개요데이터 레지던시워크스페이스사용량 및 비용 APIClaude Code Analytics API제로 데이터 보존
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    컨텍스트 관리

    프롬프트 캐싱

    Was this page helpful?

    • TTL 지원
    • 1시간 캐시 지속 시간
    • 1시간 캐시를 사용해야 하는 경우
    • 다른 TTL 혼합
    • FAQ

    프롬프트 캐싱은 프롬프트의 특정 접두사에서 재개할 수 있도록 하여 API 사용을 최적화합니다. 이를 통해 반복적인 작업이나 일관된 요소가 있는 프롬프트의 처리 시간과 비용을 크게 줄일 수 있습니다.

    This feature qualifies for Zero Data Retention (ZDR) with limited technical retention. See the Data retention section for details on what is retained and why.

    프롬프트 캐싱을 활성화하는 두 가지 방법이 있습니다:

    • 자동 캐싱: 요청의 최상위 레벨에 단일 cache_control 필드를 추가합니다. 시스템이 자동으로 마지막 캐시 가능한 블록에 캐시 중단점을 적용하고, 대화가 길어짐에 따라 앞으로 이동시킵니다. 증가하는 메시지 기록이 자동으로 캐시되어야 하는 멀티턴 대화에 가장 적합합니다.
    • 명시적 캐시 중단점: 개별 콘텐츠 블록에 직접 cache_control을 배치하여 캐시되는 내용을 세밀하게 제어합니다.

    가장 간단한 시작 방법은 자동 캐싱입니다:

    curl https://api.anthropic.com/v1/messages \
      -H "content-type: application/json" \
      -H "x-api-key: $ANTHROPIC_API_KEY" \
      -H "anthropic-version: 2023-06-01" \
      -d '{
        "model": "claude-opus-4-6",
        "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."
          }
        ]
      }'

    자동 캐싱을 사용하면 시스템이 마지막 캐시 가능한 블록까지의 모든 콘텐츠를 캐시합니다. 동일한 접두사로 이후 요청을 보낼 때 캐시된 콘텐츠가 자동으로 재사용됩니다.


    프롬프트 캐싱 작동 방식

    프롬프트 캐싱이 활성화된 상태에서 요청을 보내면:

    1. 시스템이 지정된 캐시 중단점까지의 프롬프트 접두사가 최근 쿼리에서 이미 캐시되어 있는지 확인합니다.
    2. 캐시된 버전이 있으면 이를 사용하여 처리 시간과 비용을 줄입니다.
    3. 없으면 전체 프롬프트를 처리하고 응답이 시작되면 접두사를 캐시합니다.

    이는 다음과 같은 경우에 특히 유용합니다:

    • 많은 예시가 포함된 프롬프트
    • 대량의 컨텍스트 또는 배경 정보
    • 일관된 지침이 있는 반복적인 작업
    • 긴 멀티턴 대화

    기본적으로 캐시의 수명은 5분입니다. 캐시된 콘텐츠가 사용될 때마다 추가 비용 없이 캐시가 갱신됩니다.

    5분이 너무 짧다고 느껴지면 Anthropic은 추가 비용으로 1시간 캐시 지속 시간도 제공합니다.

    자세한 내용은 1시간 캐시 지속 시간을 참조하세요.

    프롬프트 캐싱은 전체 접두사를 캐시합니다

    프롬프트 캐싱은 cache_control로 지정된 블록까지 포함하여 tools, system, messages (이 순서로) 전체 프롬프트를 참조합니다.


    가격

    프롬프트 캐싱은 새로운 가격 구조를 도입합니다. 아래 표는 지원되는 각 모델의 백만 토큰당 가격을 보여줍니다:

    ModelBase Input Tokens5m Cache Writes1h Cache WritesCache Hits & RefreshesOutput Tokens
    Claude Opus 4.6$5 / MTok$6.25 / MTok$10 / MTok$0.50 / MTok$25 / MTok
    Claude Opus 4.5$5 / MTok$6.25 / MTok$10 / MTok$0.50 / MTok$25 / MTok
    Claude Opus 4.1$15 / MTok$18.75 / MTok$30 / MTok$1.50 / MTok$75 / MTok
    Claude Opus 4$15 / MTok$18.75 / MTok$30 / MTok$1.50 / MTok$75 / MTok
    Claude Sonnet 4.6

    위 표는 프롬프트 캐싱에 대한 다음 가격 배수를 반영합니다:

    • 5분 캐시 쓰기 토큰은 기본 입력 토큰 가격의 1.25배입니다
    • 1시간 캐시 쓰기 토큰은 기본 입력 토큰 가격의 2배입니다
    • 캐시 읽기 토큰은 기본 입력 토큰 가격의 0.1배입니다

    이 배수는 Batch API 할인, 긴 컨텍스트 가격, 데이터 레지던시 등 다른 가격 수정자와 함께 적용됩니다. 전체 세부 정보는 가격을 참조하세요.


    지원되는 모델

    프롬프트 캐싱(자동 및 명시적 모두)은 현재 다음 모델에서 지원됩니다:

    • Claude Opus 4.6
    • Claude Opus 4.5
    • Claude Opus 4.1
    • Claude Opus 4
    • Claude Sonnet 4.6
    • Claude Sonnet 4.5
    • Claude Sonnet 4
    • Claude Sonnet 3.7 (지원 중단)
    • Claude Haiku 4.5
    • Claude Haiku 3.5 (지원 중단)
    • Claude Haiku 3

    자동 캐싱

    자동 캐싱은 프롬프트 캐싱을 활성화하는 가장 간단한 방법입니다. 개별 콘텐츠 블록에 cache_control을 배치하는 대신, 요청 본문의 최상위 레벨에 단일 cache_control 필드를 추가합니다. 시스템이 자동으로 마지막 캐시 가능한 블록에 캐시 중단점을 적용합니다.

    멀티턴 대화에서 자동 캐싱 작동 방식

    자동 캐싱을 사용하면 대화가 길어짐에 따라 캐시 포인트가 자동으로 앞으로 이동합니다. 각 새 요청은 마지막 캐시 가능한 블록까지 모든 것을 캐시하고, 이전 콘텐츠는 캐시에서 읽어옵니다.

    요청콘텐츠캐시 동작
    요청 1System
    + User(1) + Asst(1)
    + User(2) ◀ 캐시
    모든 것이 캐시에 쓰여짐
    요청 2System
    + User(1) + Asst(1)
    + User(2) + Asst(2)
    + User(3) ◀ 캐시
    System부터 User(2)까지 캐시에서 읽음;
    Asst(2) + User(3)이 캐시에 쓰여짐
    요청 3System
    + User(1) + Asst(1)
    + User(2) + Asst(2)
    + User(3) + Asst(3)
    + User(4) ◀ 캐시
    System부터 User(3)까지 캐시에서 읽음;
    Asst(3) + User(4)가 캐시에 쓰여짐

    캐시 중단점은 각 요청의 마지막 캐시 가능한 블록으로 자동으로 이동하므로, 대화가 길어져도 cache_control 마커를 업데이트할 필요가 없습니다.

    TTL 지원

    기본적으로 자동 캐싱은 5분 TTL을 사용합니다. 기본 입력 토큰 가격의 2배로 1시간 TTL을 지정할 수 있습니다:

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

    블록 레벨 캐싱과 결합

    자동 캐싱은 명시적 캐시 중단점과 호환됩니다. 함께 사용할 경우, 자동 캐시 중단점은 사용 가능한 4개의 중단점 슬롯 중 하나를 사용합니다.

    이를 통해 두 가지 접근 방식을 결합할 수 있습니다. 예를 들어, 명시적 중단점을 사용하여 시스템 프롬프트와 도구를 독립적으로 캐시하면서, 자동 캐싱이 대화를 처리하도록 할 수 있습니다:

    {
      "model": "claude-opus-4-6",
      "max_tokens": 1024,
      "cache_control": {"type": "ephemeral"},
      "system": [
        {
          "type": "text",
          "text": "You are a helpful assistant.",
          "cache_control": {"type": "ephemeral"}
        }
      ],
      "messages": [...]
    }

    변경되지 않는 사항

    자동 캐싱은 동일한 기본 캐싱 인프라를 사용합니다. 가격, 최소 토큰 임계값, 컨텍스트 순서 요구 사항, 20블록 되돌아보기 창은 모두 명시적 중단점과 동일하게 적용됩니다.

    엣지 케이스

    • 마지막 블록에 이미 동일한 TTL의 명시적 cache_control이 있는 경우, 자동 캐싱은 아무 작업도 수행하지 않습니다.
    • 마지막 블록에 다른 TTL의 명시적 cache_control이 있는 경우, API는 400 오류를 반환합니다.
    • 이미 4개의 명시적 블록 레벨 중단점이 존재하는 경우, API는 400 오류를 반환합니다(자동 캐싱을 위한 슬롯이 없음).
    • 마지막 블록이 자동 캐시 중단점 대상으로 적합하지 않은 경우, 시스템은 자동으로 뒤로 이동하여 가장 가까운 적합한 블록을 찾습니다. 찾지 못하면 캐싱을 건너뜁니다.

    자동 캐싱은 Claude API와 Azure AI Foundry(미리 보기)에서 사용할 수 있습니다. Amazon Bedrock 및 Google Vertex AI에 대한 지원은 나중에 제공될 예정입니다.


    명시적 캐시 중단점

    캐싱을 더 세밀하게 제어하려면 개별 콘텐츠 블록에 직접 cache_control을 배치할 수 있습니다. 이는 서로 다른 빈도로 변경되는 섹션을 캐시해야 하거나, 캐시되는 내용을 세밀하게 제어해야 할 때 유용합니다.

    프롬프트 구조화

    정적 콘텐츠(도구 정의, 시스템 지침, 컨텍스트, 예시)를 프롬프트의 시작 부분에 배치합니다. cache_control 매개변수를 사용하여 재사용 가능한 콘텐츠의 끝을 캐싱을 위해 표시합니다.

    캐시 접두사는 다음 순서로 생성됩니다: tools, system, 그 다음 messages. 이 순서는 각 레벨이 이전 레벨을 기반으로 구축되는 계층 구조를 형성합니다.

    자동 접두사 확인 작동 방식

    정적 콘텐츠의 끝에 하나의 캐시 중단점만 사용할 수 있으며, 시스템이 자동으로 캐시된 블록의 가장 긴 일치 시퀀스를 찾습니다. 이 작동 방식을 이해하면 캐싱 전략을 최적화하는 데 도움이 됩니다.

    세 가지 핵심 원칙:

    1. 캐시 키는 누적됩니다: cache_control로 블록을 명시적으로 캐시할 때, 캐시 해시 키는 대화의 모든 이전 블록을 순차적으로 해싱하여 생성됩니다. 즉, 각 블록의 캐시는 그 이전에 온 모든 콘텐츠에 의존합니다.

    2. 역방향 순차 확인: 시스템은 명시적 중단점에서 뒤로 작업하면서 각 이전 블록을 역순으로 확인하여 캐시 히트를 확인합니다. 이를 통해 가능한 가장 긴 캐시 히트를 얻을 수 있습니다.

    3. 20블록 되돌아보기 창: 시스템은 각 명시적 cache_control 중단점 이전의 최대 20개 블록만 확인합니다. 일치 항목 없이 20개 블록을 확인한 후에는 확인을 중지하고 다음 명시적 중단점(있는 경우)으로 이동합니다.

    예시: 되돌아보기 창 이해

    cache_control을 블록 30에만 설정한 30개의 콘텐츠 블록이 있는 대화를 고려해 보세요:

    • 이전 블록에 변경 없이 블록 31을 보내는 경우: 시스템이 블록 30을 확인합니다(일치!). 블록 30에서 캐시 히트가 발생하고, 블록 31만 처리가 필요합니다.

    • 블록 25를 수정하고 블록 31을 보내는 경우: 시스템이 블록 30 → 29 → 28... → 25(불일치) → 24(일치!)로 역방향으로 확인합니다. 블록 24가 변경되지 않았으므로 블록 24에서 캐시 히트가 발생하고, 블록 25-30만 재처리가 필요합니다.

    • 블록 5를 수정하고 블록 31을 보내는 경우: 시스템이 블록 30 → 29 → 28... → 11(확인 #20)로 역방향으로 확인합니다. 일치 항목 없이 20번 확인한 후 확인을 중지합니다. 블록 5가 20블록 창 밖에 있으므로 캐시 히트가 발생하지 않고 모든 블록을 재처리해야 합니다. 그러나 블록 5에 명시적 cache_control 중단점을 설정했다면, 시스템은 해당 중단점에서 계속 확인합니다: 블록 5(불일치) → 블록 4(일치!). 이를 통해 블록 4에서 캐시 히트가 가능하며, 편집 가능한 콘텐츠 앞에 중단점을 배치해야 하는 이유를 보여줍니다.

    핵심 요점: 캐시 히트 가능성을 최대화하려면 항상 대화 끝에 명시적 캐시 중단점을 설정하세요. 또한 편집 가능한 콘텐츠 블록 바로 앞에 중단점을 설정하여 해당 섹션이 독립적으로 캐시될 수 있도록 하세요.

    여러 중단점을 사용해야 하는 경우

    다음과 같은 경우 최대 4개의 캐시 중단점을 정의할 수 있습니다:

    • 서로 다른 빈도로 변경되는 섹션을 캐시해야 하는 경우(예: 도구는 거의 변경되지 않지만 컨텍스트는 매일 업데이트됨)
    • 캐시되는 내용을 더 세밀하게 제어해야 하는 경우
    • 최종 중단점 이전 20블록 이상의 콘텐츠에 대한 캐싱을 보장해야 하는 경우
    • 편집 가능한 콘텐츠 앞에 중단점을 배치하여 20블록 창 밖에서 변경이 발생하더라도 캐시 히트를 보장해야 하는 경우

    중요한 제한 사항: 캐시 중단점 이전에 20개 이상의 콘텐츠 블록이 있고, 해당 20개 블록보다 이전의 콘텐츠를 수정하면, 해당 콘텐츠에 더 가까운 추가 명시적 중단점을 추가하지 않는 한 캐시 히트가 발생하지 않습니다.

    캐시 중단점 비용 이해

    캐시 중단점 자체는 추가 비용이 없습니다. 다음에 대해서만 요금이 부과됩니다:

    • 캐시 쓰기: 새 콘텐츠가 캐시에 쓰여질 때(5분 TTL의 경우 기본 입력 토큰보다 25% 더 많음)
    • 캐시 읽기: 캐시된 콘텐츠가 사용될 때(기본 입력 토큰 가격의 10%)
    • 일반 입력 토큰: 캐시되지 않은 콘텐츠에 대해

    더 많은 cache_control 중단점을 추가해도 비용이 증가하지 않습니다. 실제로 캐시되고 읽히는 콘텐츠를 기반으로 동일한 금액을 지불합니다. 중단점은 단순히 어떤 섹션을 독립적으로 캐시할 수 있는지 제어하는 역할을 합니다.


    캐싱 전략 및 고려 사항

    캐시 제한 사항

    캐시 가능한 최소 프롬프트 길이는 다음과 같습니다:

    • Claude Opus 4.6, Claude Opus 4.5의 경우 4096 토큰
    • Claude Sonnet 4.6의 경우 2048 토큰
    • Claude Sonnet 4.5, Claude Opus 4.1, Claude Opus 4, Claude Sonnet 4, Claude Sonnet 3.7(지원 중단)의 경우 1024 토큰
    • Claude Haiku 4.5의 경우 4096 토큰
    • Claude Haiku 3.5(지원 중단) 및 Claude Haiku 3의 경우 2048 토큰

    더 짧은 프롬프트는 cache_control로 표시되어 있어도 캐시할 수 없습니다. 이 수보다 적은 토큰을 캐시하려는 요청은 캐싱 없이 처리됩니다. 프롬프트가 캐시되었는지 확인하려면 응답 사용량 필드를 참조하세요.

    동시 요청의 경우, 캐시 항목은 첫 번째 응답이 시작된 후에만 사용 가능해집니다. 병렬 요청에 대한 캐시 히트가 필요한 경우, 후속 요청을 보내기 전에 첫 번째 응답을 기다리세요.

    현재 "ephemeral"이 유일하게 지원되는 캐시 유형이며, 기본적으로 5분의 수명을 가집니다.

    캐시 가능한 항목

    요청의 대부분의 블록을 캐시할 수 있습니다. 여기에는 다음이 포함됩니다:

    • 도구: tools 배열의 도구 정의
    • 시스템 메시지: system 배열의 콘텐츠 블록
    • 텍스트 메시지: 사용자 및 어시스턴트 턴 모두에서 messages.content 배열의 콘텐츠 블록
    • 이미지 및 문서: 사용자 턴에서 messages.content 배열의 콘텐츠 블록
    • 도구 사용 및 도구 결과: 사용자 및 어시스턴트 턴 모두에서 messages.content 배열의 콘텐츠 블록

    이러한 각 요소는 자동으로 또는 cache_control로 표시하여 캐시할 수 있습니다.

    캐시할 수 없는 항목

    대부분의 요청 블록을 캐시할 수 있지만 몇 가지 예외가 있습니다:

    • 생각 블록은 cache_control로 직접 캐시할 수 없습니다. 그러나 생각 블록은 이전 어시스턴트 턴에 나타날 때 다른 콘텐츠와 함께 캐시될 수 있습니다. 이 방식으로 캐시되면 캐시에서 읽을 때 입력 토큰으로 계산됩니다.

    • 하위 콘텐츠 블록(예: 인용)은 직접 캐시할 수 없습니다. 대신 최상위 블록을 캐시하세요.

      인용의 경우, 인용의 소스 자료 역할을 하는 최상위 문서 콘텐츠 블록을 캐시할 수 있습니다. 이를 통해 인용이 참조할 문서를 캐시하여 인용과 함께 프롬프트 캐싱을 효과적으로 사용할 수 있습니다.

    • 빈 텍스트 블록은 캐시할 수 없습니다.

    캐시를 무효화하는 항목

    캐시된 콘텐츠를 수정하면 캐시의 일부 또는 전체가 무효화될 수 있습니다.

    프롬프트 구조화에서 설명한 것처럼, 캐시는 tools → system → messages 계층 구조를 따릅니다. 각 레벨의 변경은 해당 레벨과 모든 후속 레벨을 무효화합니다.

    다음 표는 다양한 유형의 변경으로 인해 캐시의 어떤 부분이 무효화되는지 보여줍니다. ✘는 캐시가 무효화됨을 나타내고, ✓는 캐시가 유효하게 유지됨을 나타냅니다.

    변경 사항도구 캐시시스템 캐시메시지 캐시영향
    도구 정의✘✘✘도구 정의(이름, 설명, 매개변수) 수정은 전체 캐시를 무효화합니다
    웹 검색 토글✓✘✘웹 검색 활성화/비활성화는 시스템 프롬프트를 수정합니다
    인용 토글✓✘✘인용 활성화/비활성화는 시스템 프롬프트를 수정합니다
    속도 설정✓✘✘speed: "fast"와 표준 속도 간 전환은 시스템 및 메시지 캐시를 무효화합니다
    도구 선택✓✓

    캐시 성능 추적

    응답의 usage 내 다음 API 응답 필드를 사용하여 캐시 성능을 모니터링합니다(스트리밍 시 message_start 이벤트):

    • cache_creation_input_tokens: 새 항목을 생성할 때 캐시에 쓰여진 토큰 수.
    • cache_read_input_tokens: 이 요청에 대해 캐시에서 검색된 토큰 수.
    • input_tokens: 캐시에서 읽거나 캐시를 생성하는 데 사용되지 않은 입력 토큰 수(즉, 마지막 캐시 중단점 이후의 토큰).

    토큰 분류 이해

    input_tokens 필드는 요청에서 보낸 모든 입력 토큰이 아니라 마지막 캐시 중단점 이후에 오는 토큰만 나타냅니다.

    총 입력 토큰을 계산하려면:

    total_input_tokens = cache_read_input_tokens + cache_creation_input_tokens + input_tokens

    공간적 설명:

    • cache_read_input_tokens = 중단점 이전에 이미 캐시된 토큰(읽기)
    • cache_creation_input_tokens = 중단점 이전에 현재 캐시되는 토큰(쓰기)
    • input_tokens = 마지막 중단점 이후의 토큰(캐시 불가)

    예시: 100,000 토큰의 캐시된 콘텐츠(캐시에서 읽음), 새로 캐시되는 콘텐츠 0 토큰, 사용자 메시지에 50 토큰(캐시 중단점 이후)이 있는 요청의 경우:

    • cache_read_input_tokens: 100,000
    • cache_creation_input_tokens: 0
    • : 50

    생각 블록과 캐싱

    확장 생각과 프롬프트 캐싱을 함께 사용할 때 생각 블록은 특별한 동작을 합니다:

    다른 콘텐츠와 함께 자동 캐싱: 생각 블록은 cache_control로 명시적으로 표시할 수 없지만, 도구 결과와 함께 후속 API 호출을 할 때 요청 콘텐츠의 일부로 캐시됩니다. 이는 대화를 계속하기 위해 생각 블록을 다시 전달할 때 도구 사용 중에 일반적으로 발생합니다.

    입력 토큰 계산: 생각 블록이 캐시에서 읽힐 때 사용량 지표에서 입력 토큰으로 계산됩니다. 이는 비용 계산 및 토큰 예산 책정에 중요합니다.

    캐시 무효화 패턴:

    • 도구 결과만 사용자 메시지로 제공될 때 캐시가 유효하게 유지됩니다
    • 비도구 결과 사용자 콘텐츠가 추가되면 캐시가 무효화되어 이전의 모든 생각 블록이 제거됩니다
    • 이 캐싱 동작은 명시적 cache_control 마커 없이도 발생합니다

    캐시 무효화에 대한 자세한 내용은 캐시를 무효화하는 항목을 참조하세요.

    도구 사용 예시:

    요청 1: 사용자: "파리의 날씨는 어때요?"
    응답: [thinking_block_1] + [tool_use block 1]
    
    요청 2:
    사용자: ["파리의 날씨는 어때요?"],
    어시스턴트: [thinking_block_1] + [tool_use block 1],
    사용자: [tool_result_1, cache=True]
    응답: [thinking_block_2] + [text block 2]
    # 요청 2는 요청 콘텐츠를 캐시합니다(응답이 아님)
    # 캐시에는 사용자 메시지, thinking_block_1, tool_use block 1, tool_result_1이 포함됩니다
    
    요청 3:
    사용자: ["파리의 날씨는 어때요?"],
    어시스턴트: [thinking_block_1] + [tool_use block 1],
    사용자: [tool_result_1, cache=True],
    어시스턴트: [thinking_block_2] + [text block 2],
    사용자: [Text response, cache=True]
    # 비도구 결과 사용자 블록으로 인해 모든 생각 블록이 무시됩니다
    # 이 요청은 생각 블록이 없었던 것처럼 처리됩니다

    비도구 결과 사용자 블록이 포함되면 새로운 어시스턴트 루프를 지정하고 이전의 모든 생각 블록이 컨텍스트에서 제거됩니다.

    자세한 내용은 확장 생각 문서를 참조하세요.

    캐시 저장 및 공유

    2026년 2월 5일부터 프롬프트 캐싱은 조직 레벨 격리 대신 워크스페이스 레벨 격리를 사용합니다. 캐시는 워크스페이스별로 격리되어 동일한 조직 내 워크스페이스 간 데이터 분리를 보장합니다. 이 변경 사항은 Claude API 및 Azure AI Foundry(미리 보기)에 적용됩니다. Amazon Bedrock 및 Google Vertex AI는 조직 레벨 캐시 격리를 유지합니다. 여러 워크스페이스를 사용하는 경우, 이 변경 사항을 고려하여 캐싱 전략을 검토하세요.

    • 조직 격리: 캐시는 조직 간에 격리됩니다. 서로 다른 조직은 동일한 프롬프트를 사용하더라도 캐시를 공유하지 않습니다.

    • 정확한 일치: 캐시 히트는 캐시 제어로 표시된 블록까지 모든 텍스트와 이미지를 포함하여 100% 동일한 프롬프트 세그먼트가 필요합니다.

    • 출력 토큰 생성: 프롬프트 캐싱은 출력 토큰 생성에 영향을 미치지 않습니다. 받는 응답은 프롬프트 캐싱을 사용하지 않았을 때와 동일합니다.

    효과적인 캐싱을 위한 모범 사례

    프롬프트 캐싱 성능을 최적화하려면:

    • 멀티턴 대화에는 자동 캐싱으로 시작하세요. 중단점 관리를 자동으로 처리합니다.
    • 서로 다른 변경 빈도로 다른 섹션을 캐시해야 할 때는 명시적 블록 레벨 중단점을 사용하세요.
    • 시스템 지침, 배경 정보, 대용량 컨텍스트, 자주 사용하는 도구 정의와 같은 안정적이고 재사용 가능한 콘텐츠를 캐시하세요.
    • 최상의 성능을 위해 캐시된 콘텐츠를 프롬프트의 시작 부분에 배치하세요.
    • 캐시 중단점을 전략적으로 사용하여 서로 다른 캐시 가능한 접두사 섹션을 분리하세요.
    • 캐시 히트율을 최대화하려면 대화 끝과 편집 가능한 콘텐츠 바로 앞에 캐시 중단점을 설정하세요. 특히 20개 이상의 콘텐츠 블록이 있는 프롬프트를 작업할 때 중요합니다.
    • 캐시 히트율을 정기적으로 분석하고 필요에 따라 전략을 조정하세요.

    다양한 사용 사례에 최적화

    시나리오에 맞게 프롬프트 캐싱 전략을 조정하세요:

    • 대화형 에이전트: 긴 지침이나 업로드된 문서가 있는 확장된 대화의 비용과 지연 시간을 줄입니다.
    • 코딩 어시스턴트: 관련 섹션이나 코드베이스의 요약 버전을 프롬프트에 유지하여 자동 완성 및 코드베이스 Q&A를 개선합니다.
    • 대용량 문서 처리: 응답 지연 시간을 늘리지 않고 이미지를 포함한 완전한 장문 자료를 프롬프트에 통합합니다.
    • 상세한 지침 세트: 광범위한 지침, 절차, 예시 목록을 공유하여 Claude의 응답을 세밀하게 조정합니다. 개발자들은 종종 프롬프트에 한두 가지 예시를 포함하지만, 프롬프트 캐싱을 사용하면 20개 이상의 다양한 고품질 답변 예시를 포함하여 더 나은 성능을 얻을 수 있습니다.
    • 에이전트 도구 사용: 각 단계에서 일반적으로 새 API 호출이 필요한 여러 도구 호출 및 반복적인 코드 변경이 포함된 시나리오의 성능을 향상시킵니다.
    • 책, 논문, 문서, 팟캐스트 스크립트 및 기타 장문 콘텐츠와 대화: 전체 문서를 프롬프트에 포함하고 사용자가 질문할 수 있도록 하여 모든 지식 베이스를 활성화합니다.

    일반적인 문제 해결

    예상치 못한 동작이 발생하는 경우:

    • 캐시된 섹션이 호출 간에 동일한지 확인하세요. 명시적 중단점의 경우 cache_control 마커가 동일한 위치에 있는지 확인하세요
    • 호출이 캐시 수명(기본값 5분) 내에 이루어지는지 확인하세요
    • tool_choice와 이미지 사용이 호출 간에 일관성을 유지하는지 확인하세요
    • 최소 토큰 수 이상을 캐시하고 있는지 확인하세요
    • 시스템은 자동으로 이전 콘텐츠 블록 경계에서 캐시 히트를 확인합니다(중단점 이전 최대 ~20블록). 20개 이상의 콘텐츠 블록이 있는 프롬프트의 경우, 모든 콘텐츠가 캐시될 수 있도록 프롬프트 앞부분에 추가 cache_control 매개변수가 필요할 수 있습니다
    • tool_use 콘텐츠 블록의 키가 안정적인 순서를 가지는지 확인하세요. 일부 언어(예: Swift, Go)는 JSON 변환 중에 키 순서를 무작위화하여 캐시를 깨뜨릴 수 있습니다

    tool_choice 변경이나 프롬프트 어디에서든 이미지의 존재/부재는 캐시를 무효화하여 새 캐시 항목을 생성해야 합니다. 캐시 무효화에 대한 자세한 내용은 캐시를 무효화하는 항목을 참조하세요.


    1시간 캐시 지속 시간

    5분이 너무 짧다고 느껴지면 Anthropic은 추가 비용으로 1시간 캐시 지속 시간도 제공합니다.

    확장 캐시를 사용하려면 다음과 같이 cache_control 정의에 ttl을 포함하세요:

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

    응답에는 다음과 같은 상세한 캐시 정보가 포함됩니다:

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

    현재 cache_creation_input_tokens 필드는 cache_creation 객체의 값들의 합과 같습니다.

    1시간 캐시를 사용해야 하는 경우

    정기적인 주기로 사용되는 프롬프트(즉, 5분마다 더 자주 사용되는 시스템 프롬프트)가 있는 경우, 추가 비용 없이 계속 갱신되므로 5분 캐시를 계속 사용하세요.

    1시간 캐시는 다음 시나리오에서 가장 잘 사용됩니다:

    • 5분보다 덜 자주 사용되지만 매 시간보다 더 자주 사용될 가능성이 있는 프롬프트가 있는 경우. 예를 들어, 에이전트 사이드 에이전트가 5분 이상 걸리거나, 사용자와의 긴 채팅 대화를 저장하고 해당 사용자가 다음 5분 내에 응답하지 않을 것으로 예상되는 경우.
    • 지연 시간이 중요하고 후속 프롬프트가 5분 이후에 전송될 수 있는 경우.
    • 캐시 히트가 속도 제한에서 차감되지 않으므로 속도 제한 활용도를 개선하려는 경우.

    5분 및 1시간 캐시는 지연 시간과 관련하여 동일하게 동작합니다. 긴 문서의 경우 일반적으로 첫 번째 토큰까지의 시간이 개선됩니다.

    다른 TTL 혼합

    동일한 요청에서 1시간 및 5분 캐시 제어를 모두 사용할 수 있지만 중요한 제약이 있습니다: 더 긴 TTL의 캐시 항목이 더 짧은 TTL 앞에 나타나야 합니다(즉, 1시간 캐시 항목이 5분 캐시 항목 앞에 나타나야 합니다).

    TTL을 혼합할 때 프롬프트에서 세 가지 청구 위치를 결정합니다:

    1. 위치 A: 가장 높은 캐시 히트의 토큰 수(히트가 없으면 0).
    2. 위치 B: A 이후 가장 높은 1시간 cache_control 블록의 토큰 수(없으면 A와 같음).
    3. 위치 C: 마지막 cache_control 블록의 토큰 수.

    B 및/또는 C가 A보다 크면, A가 가장 높은 캐시 히트이므로 반드시 캐시 미스가 됩니다.

    다음에 대해 요금이 부과됩니다:

    1. A에 대한 캐시 읽기 토큰.
    2. (B - A)에 대한 1시간 캐시 쓰기 토큰.
    3. (C - B)에 대한 5분 캐시 쓰기 토큰.

    다음은 3가지 예시입니다. 이는 서로 다른 캐시 히트와 캐시 미스를 가진 3개의 요청의 입력 토큰을 나타냅니다. 각각은 결과적으로 다른 계산된 가격을 가지며, 색상 상자에 표시됩니다. TTL 혼합 다이어그램


    프롬프트 캐싱 예시

    프롬프트 캐싱을 시작하는 데 도움이 되도록 자세한 예시와 모범 사례가 담긴 프롬프트 캐싱 쿡북을 준비했습니다.

    아래에는 다양한 프롬프트 캐싱 패턴을 보여주는 여러 코드 스니펫이 포함되어 있습니다. 이 예시들은 다양한 시나리오에서 캐싱을 구현하는 방법을 보여주며, 이 기능의 실용적인 응용을 이해하는 데 도움이 됩니다:

    데이터 보존

    프롬프트 캐싱은 캐시된 콘텐츠의 KV(키-값) 캐시 표현과 암호화 해시를 저장하지만, 프롬프트나 응답의 원시 텍스트는 저장하지 않습니다. 캐시된 항목의 최소 수명은 5분(표준) 또는 60분(확장)입니다. 캐시 항목은 조직 간에 격리됩니다. Anthropic은 원시 프롬프트나 응답 텍스트를 저장하지 않으므로, 이 기능은 ZDR 유형의 데이터 보존 약정이 필요한 고객에게 적합할 수 있습니다.

    모든 기능에 걸친 ZDR 적격성에 대해서는 API 및 데이터 보존을 참조하세요.


    FAQ

    $3 / MTok
    $3.75 / MTok
    $6 / MTok
    $0.30 / MTok
    $15 / MTok
    Claude Sonnet 4.5$3 / MTok$3.75 / MTok$6 / MTok$0.30 / MTok$15 / MTok
    Claude Sonnet 4$3 / MTok$3.75 / MTok$6 / MTok$0.30 / MTok$15 / MTok
    Claude Sonnet 3.7 (deprecated)$3 / MTok$3.75 / MTok$6 / MTok$0.30 / MTok$15 / MTok
    Claude Haiku 4.5$1 / MTok$1.25 / MTok$2 / MTok$0.10 / MTok$5 / MTok
    Claude Haiku 3.5$0.80 / MTok$1 / MTok$1.6 / MTok$0.08 / MTok$4 / MTok
    Claude Opus 3 (deprecated)$15 / MTok$18.75 / MTok$30 / MTok$1.50 / MTok$75 / MTok
    Claude Haiku 3$0.25 / MTok$0.30 / MTok$0.50 / MTok$0.03 / MTok$1.25 / MTok
    curl https://api.anthropic.com/v1/messages \
      -H "content-type: application/json" \
      -H "x-api-key: $ANTHROPIC_API_KEY" \
      -H "anthropic-version: 2023-06-01" \
      -d '{
        "model": "claude-opus-4-6",
        "max_tokens": 1024,
        "cache_control": {"type": "ephemeral"},
        "system": "You are a helpful assistant that remembers our conversation.",
        "messages": [
          {"role": "user", "content": "My name is Alex. I work on machine learning."},
          {"role": "assistant", "content": "Nice to meet you, Alex! How can I help with your ML work today?"},
          {"role": "user", "content": "What did I say I work on?"}
        ]
      }'
    ✘
    tool_choice 매개변수 변경은 메시지 블록에만 영향을 미칩니다
    이미지✓✓✘프롬프트 어디에서든 이미지 추가/제거는 메시지 블록에 영향을 미칩니다
    생각 매개변수✓✓✘확장 생각 설정 변경(활성화/비활성화, 예산)은 메시지 블록에 영향을 미칩니다
    확장 생각 요청에 전달된 비도구 결과✓✓✘확장 생각이 활성화된 상태에서 요청에 비도구 결과가 전달되면, 이전에 캐시된 모든 생각 블록이 컨텍스트에서 제거되고, 해당 생각 블록 이후의 컨텍스트에 있는 메시지가 캐시에서 제거됩니다. 자세한 내용은 생각 블록과 캐싱을 참조하세요.
    input_tokens
  1. 처리된 총 입력 토큰: 100,050 토큰
  2. 이는 캐싱을 효과적으로 사용할 때 input_tokens가 일반적으로 총 입력보다 훨씬 작기 때문에 비용과 속도 제한을 이해하는 데 중요합니다.