cache_control을 추가하면 첫 번째 요청에서 캐시를 생성하고 이후 요청에서는 만료되지 않은 캐시를 읽을 수 있습니다.
사용 전에 API 키를 설정하세요.
이 가이드의 예제에서는
claude-sonnet-5를 사용합니다. 다른 모델의 컨텍스트 캐시 지원 여부는 플랫폼의 모델 설명을 참조하세요.적합한 사용 사례
여러 요청에서 동일한 긴 콘텐츠를 반복해서 전송하는 경우 다음과 같은 안정적인 접두부를 캐시할 수 있습니다.- 긴 system prompt
- 고정된 지식 베이스 또는 제품 문서
- 멀티턴 대화에서 변경되지 않는 이전 메시지
- 반복해서 사용하는 코드베이스, 도구 정의 및 설명
Claude Messages API
5분 캐시
캐시할 content block에cache_control을 추가합니다.
ttl을 생략하면 캐시 유효 기간은 기본적으로 5분입니다.
1시간 캐시
1시간 캐시를 사용하려면anthropic-beta 요청 헤더를 추가하고 ttl을 1h로 설정해야 합니다.
응답 사용량 필드
Claude Messages API는 일반 입력, 캐시 쓰기 및 캐시 읽기 token을usage에 각각 반환합니다.
cache_creation_input_tokens > 0이 표시됩니다. 동일한 안정적인 접두부를 다시 전송하면 cache_read_input_tokens > 0이 표시되어야 합니다.
OpenAI 호환 API
요청 예제
/v1/chat/completions를 통해 캐시를 사용할 때 cache_control 형식은 Claude Messages API와 유사합니다.
1시간 캐시
OpenAI 호환 형식도 1시간 캐시를 지원합니다. 요청에anthropic-beta 헤더를 추가하고 cache_control에서 ttl: "1h"를 설정하세요.
content는 배열로 지정
OpenAI 호환 형식에서는 cache_control을 구체적인 content block 안에 배치해야 하며 문자열 형식의 메시지에 추가할 수 없습니다.
user 또는 assistant content block 캐시
user 또는 assistant 메시지의 content block에도 cache_control을 추가하여 긴 문서나 멀티턴 대화 접두부를 캐시할 수 있습니다.
cache_control을 추가하세요.
응답 사용량 필드
OpenAI 호환 형식은 다른 필드를 사용하여 캐시 사용량을 보고합니다.prompt_tokens_details.cache_write_tokens가 0이어도 claude_cache_creation_5_m_tokens와 claude_cache_creation_1_h_tokens를 확인하세요. TTL 세부 필드가 있는 경우 캐시 쓰기 양은 해당 필드에 반환됩니다.claude_cache_creation_5_m_tokens와 claude_cache_creation_1_h_tokens에서 숫자와 단위 사이에는 밑줄이 있습니다. 응답에 반환된 필드 이름을 그대로 사용하세요.캐시 적중 조건
접두부가 최소 길이를 충족
이 가이드에서 사용하는 모델의 캐시 접두부에는 일반적으로 약 1024 token 이상이 필요합니다. 접두부가 너무 짧으면 오류 없이 캐시 표시가 무시될 수 있습니다.접두부가 바이트 단위로 동일하게 유지
캐시 접두부의 텍스트, 공백, 줄바꿈 및 content block 순서는 모두 동일하게 유지해야 합니다. 안정적인 접두부에 타임스탬프, 임의 ID, 요청 횟수 등의 동적 콘텐츠를 추가하지 마세요.요청이 모델 거부를 유발하지 않음
요청이 모델 거부를 유발하면 응답에 캐시 생성 token이 보고되더라도 다음 요청에서 해당 캐시를 읽지 못합니다. 캐시 미스를 해결할 때는stop_reason이 refusal인지도 확인하세요.
캐시가 아직 유효함
캐시 유효 기간은 5분 또는 1시간이며 마지막으로 액세스한 시점부터 계산됩니다. 캐시에 적중하면 유효 기간이 갱신됩니다.과금 사용량
캐시 관련 사용량은 세 가지로 나뉩니다.
세 가지 사용량은 서로 겹치지 않습니다. 캐시 쓰기 비용은 일반적으로 일반 입력보다 높고 캐시 읽기 비용은 일반 입력보다 낮으므로, 컨텍스트 캐시는 TTL 내에 반복해서 사용하는 안정적인 접두부에 적합합니다.
최소 재현 예제
아래 스크립트는 충분히 긴 안정적인 접두부를 생성하고 동일한 요청을 연속해서 두 번 전송합니다. 두 번째 응답에는cache_read_input_tokens > 0이 표시되어야 합니다.
문제 해결 체크리스트
캐시에 적중하지 않으면 다음 항목을 순서대로 확인하세요.stop_reason이refusal인지- 캐시 접두부가 모델의 최소 token 수를 충족하는지
- 두 요청의 안정적인 접두부가 바이트 단위로 동일한지
- OpenAI 호환 형식의
content가 배열인지 cache_control이 구체적인 content block 안에 있는지- 1시간 캐시에
ttl: "1h"와 해당anthropic-beta요청 헤더가 모두 설정되어 있는지 - 캐시가 TTL을 초과했는지
- 현재 사용 중인 인터페이스에 해당하는 캐시 사용량 필드를 읽고 있는지