프롬프트 캐싱은 할인처럼 홍보되지만, 청구서에서 가장 먼저 하는 일은 할증을 붙이는 것입니다. 캐시 읽기 한 번이 기본가의 0.1배로 내려가기 전에 먼저 쓰기 프리미엄을 내야 하며, 그 프리픽스가 다시 읽히지 않는다면 그 프리미엄이 전부입니다.
절감보다 먼저 붙는 할증: Anthropic, OpenAI, Gemini의 1.25배 콜드 스타트 비용

주요 제공업체는 모두 첫 캐시 쓰기에 비캐시 요율보다 높은 금액을 청구합니다. Anthropic은 기본 5분 TTL에서 토큰당 기본 입력가의 1.25배, 1시간 TTL에서는 2배를 부과하며, 읽기는 기본가의 0.1배입니다 . Claude Opus 4.8(기본 $5/MTok) 기준으로는 5분 쓰기가 $6.25/MTok, 1시간 쓰기가 $10/MTok, 읽기가 $0.50/MTok입니다 . OpenAI의 GPT-5.6 계열은 캐시 쓰기를 대략 비캐시 입력의 1.25배, 읽기를 약 0.1배로 청구합니다 . Gemini 명시적 캐싱은 할인된 읽기 요율에 더해 캐시된 토큰 100만 개당 시간당 스토리지 임대료가 붙습니다 .
빠른 답변: 캐시 쓰기는 일반 호출보다 비쌉니다. Anthropic(5분 TTL)과 OpenAI의 GPT-5.6 계열은 기본 입력가의 1.25배, Anthropic의 1시간 TTL은 2배입니다. 손익분기점은 쓰기 1회당 읽기 약 1.4회이므로, 캐싱이 순이익으로 돌아서려면 프리픽스가 최소 두 번은 다시 읽혀야 합니다.
| 작업(Claude Opus 4.8, 기본 $5/MTok) | 요율 |
|---|---|
| 캐시 쓰기 — 5분 TTL(1.25배) | $6.25/MTok |
| 캐시 쓰기 — 1시간 TTL(2배) | $10.00/MTok |
| 캐시 읽기(0.1배) | $0.50/MTok |
쓰기 비용이 비캐시 호출의 약 1.25배이기 때문에 손익분기점은 읽기 약 1.4회 근처입니다. 즉, 프리픽스가 제값을 하려면 쓰기 1회당 성공적인 히트가 최소 두 번은 필요합니다 . 그리고 실제 상한은 홍보 문구보다 낮습니다. 2026년 DeepResearchBench 평가(에이전트 세션 500개 이상, 10,000토큰 시스템 프롬프트)는 OpenAI, Anthropic, Google 전반에서 최적 모드 절감률을 41~80%로 측정했습니다. 90%가 아니었던 이유는 출력 토큰과 도구 호출이 캐싱의 영향을 받지 않아 나머지 비용을 흡수하기 때문입니다 .
캐시 미스가 생기는 이유: 최소 토큰 수, 프리픽스 무효화, TTL 만료

캐시 미스는 0.1배로 읽을 것으로 기대한 프리픽스에 대해 정가, 또는 1.25배 쓰기 프리미엄을 냈다는 뜻입니다. 미스는 무작위가 아닙니다. 응답에 오류도 경고도 없이 조용히 작동하는 세 가지 구조적 규칙에서 발생합니다. 이 규칙을 아는지가 측정 가능한 할인과 예상 못 한 할증을 가르는 차이입니다.
첫 번째 규칙은 최소 길이 기준입니다. 이보다 짧으면 캐싱은 아예 활성화되지 않고 모든 토큰이 전체 입력가로 청구됩니다. OpenAI는 최소 1,024토큰을 요구하며, 더 짧은 요청에는 cached_tokens: 0을 보고합니다. Anthropic의 기준은 모델별로 다릅니다. Opus 4.8, Sonnet 5, 4.6, 4.5는 1,024토큰이지만, Opus 4.6/4.5와 Haiku 4.5는 4,096토큰입니다 . Bedrock도 동일한 모델별 1,024 또는 4,096토큰 값을 따릅니다 . 따라서 짧은 분류 호출, 작은 RAG 스니펫, 한 줄짜리 지원 채팅 턴은 cache_control이 설정되어 있어도 캐시되지 않습니다. 요청은 실행되지만 캐시 쓰기는 조용히 거부됩니다.
두 번째 규칙은 의미 매칭이 아니라 정확한 프리픽스 매칭입니다. 브레이크포인트 앞 어디에서든 타임스탬프 하나가 삽입되거나, JSON 키 순서가 바뀌거나, 도구 정의가 토글되거나, 이미지 세부 설정이 달라지면 정가 미스가 발생합니다 . Anthropic의 무효화는 tools → system → messages 순서로 계층적으로 전파되므로, MCP 커넥터 하나를 추가하는 것만으로도 전체 프리픽스가 1.25배 쓰기 요율로 다시 작성됩니다 .
세 번째 규칙은 TTL 만료입니다. 기본 수명은 Anthropic과 OpenAI 모두 5분이며, 성공적인 읽기가 있을 때마다 갱신됩니다 . 사람이 중간에 개입하는 채팅이나 비동기 에이전트에서 5~60분의 공백이 생기면 항목이 식어 버리고, 다음 턴은 0.1배가 아니라 쓰기 프리미엄으로 다시 들어갑니다. 여기에 라우팅 제한이 더해집니다. OpenAI는 prompt_cache_key당 분당 15개 요청 미만으로 트래픽을 유지하라고 권고합니다. 이를 넘으면 동일한 프리픽스라도 요청이 다른 백엔드로 라우팅되어 미스가 날 수 있으므로, QPS가 높은 호출자는 안정적인 매핑으로 키를 나누어야 합니다.
캐시가 안정적으로 적용되도록 프롬프트 섹션 배치하기
캐시가 안정적으로 적용되려면 기능을 켜는 것보다 순서가 중요합니다. 정적 콘텐츠를 앞에 두고 동적 콘텐츠를 뒤에 배치해야 안정적인 영역만 매 호출마다 동일하게 해시됩니다. 시스템 프롬프트, 고정된 지침, 도구 정의는 요청 상단에 두고, 사용자별 컨텍스트, 검색된 청크, 대화 기록은 마지막 브레이크포인트 아래로 내리세요. 경계 위치가 청구액을 움직이는 변수입니다. DeepResearchBench에서 시스템 프롬프트만 캐싱했을 때 GPT-4o의 첫 토큰까지 걸리는 시간이 30.9% 개선된 반면, 동적 도구 결과까지 프리픽스에 끌어들인 순진한 전체 컨텍스트 캐싱은 TTFT가 8.8% 악화되었습니다 .
도구 정의는 턴 사이에서도 고정하세요. 세션별 MCP 커넥터를 추가하거나 브레이크포인트 위에서 웹 검색 또는 인용 설정을 켜고 끄면 전체 캐시 프리픽스가 1.25배 쓰기 요율로 다시 작성되고, tools → system → messages 계층 아래로 무효화가 연쇄적으로 전파됩니다 . 타임스탬프, 세션 ID, 사용자 이름, 테넌트 개인화 문자열은 프리픽스 영역에서 완전히 제거하고, 마지막 cache_control 브레이크포인트 뒤에만 주입하세요. 그래야 프리픽스 해시를 바꾸지 않습니다.
제어값은 명시적으로 설정하세요. Anthropic은 자동 프리픽스 확인을 위한 20블록 룩백과 함께 최대 네 개의 cache_control 브레이크포인트를 지원합니다 . OpenAI는 prompt_cache_key를 기준으로 안정적인 매칭을 수행합니다 . Gemini의 암시적 캐싱은 Gemini 2.5 이상 모델에서만 기본으로 켜져 있습니다 .
"전략적인 경계 제어, 즉 안정적인 시스템 프롬프트만 캐싱하거나 동적 도구 결과를 제외하는 방식이 순진한 전체 컨텍스트 캐싱보다 더 안정적임이 입증되었습니다." — DeepResearchBench 평가 (source: OpenAI Cookbook).
Anthropic, OpenAI, Gemini에서 캐시 효율 측정하기

보이지 않는 캐시는 관리할 수 없고, 공급자마다 진입 비용을 서로 다른 사용량 필드에 숨깁니다. Anthropic에서는 cache_creation_input_tokens(쓰기, 기본 요율의 1.25배), cache_read_input_tokens(읽기, 기본 요율의 0.1배), input_tokens가 가산됩니다. 실제 총 입력을 보려면 세 값을 모두 더하고, 진입 비용이었는지 절감분이었는지 구분하려면 각 값을 따로 확인하세요 . OpenAI에서는 usage.prompt_tokens_details.cached_tokens를 확인합니다 . Bedrock에서는 inputTokens가 캐시되지 않은 입력만 포함하므로, 실제 총량을 보려면 cacheReadInputTokens와 cacheWriteInputTokens를 더해야 합니다 . Gemini는 사용량 메타데이터의 토큰 카운트에 암시적 캐시 히트를 표시합니다 .
추측하지 말고 계측해야 하는 이유는 분명합니다. 캐시된 토큰 164k개(시스템 84k + 대화 기록 80k)는 콜드 스타트 쓰기 시 약 $0.62가 들지만, 이후 읽기에서는 약 $0.062가 듭니다. 그리고 5분 TTL보다 긴 공백이 있는 세션은 다음 턴에서 다시 전체 $0.62를 지불합니다 .
"시스템 프롬프트만 캐싱했을 때 GPT-4o의 첫 토큰까지 걸리는 시간이 30.9% 개선된 반면, 순진한 전체 컨텍스트 캐싱은 8.8% 악화를 낳았습니다." — DeepResearchBench 평가 (source: OpenAI Cookbook).
핵심은 이렇습니다(결). Anthropic의 1시간 TTL은 쓰기 비용을 기본 요율의 2배로 올리므로, 텔레메트리상 프리픽스가 턴 사이 10분 넘게 유지된다는 점이 확인될 때만 사용하세요 . 시스템 전용 경계와 전체 컨텍스트 경계 배치를 모델별로 A/B 테스트한 뒤 기본값으로 삼으세요. 프롬프트 캐싱은 상시 할인이 아니라, 자체 사용량 필드로 검증하는 측정 기반 워크로드 최적화입니다.
자주 묻는 질문
프롬프트 캐싱을 쓰면 API 청구액이 항상 줄어드나요?
아닙니다. 새 캐시 항목은 할인이 적용되기 전에 먼저 할증 요금으로 청구됩니다. Anthropic의 기본 5분 TTL과 OpenAI GPT-5.6 계열 쓰기에서는 대략 기본 입력 요금의 1.25배입니다 . 읽기 비용은 기본 요금의 약 0.1배라서 손익분기점은 약 1.4회 읽기 지점에 있습니다. 따라서 항목 하나당 최소 두 번은 적중해야 순이익이 납니다 . 호출마다 컨텍스트가 바뀌는 워크로드, 예를 들어 쿼리별 RAG나 일회성 분류는 항목 할증을 반복해서 내지만 이를 상쇄할 절감 효과가 없습니다.
캐싱이 활성화되는 최소 프롬프트 길이는 얼마인가요?
모델에 따라 다릅니다. OpenAI는 최소 1,024토큰을 요구하며, 이 기준보다 짧으면 cached_tokens: 0으로 보고합니다 . Anthropic의 최소값은 모델별로 512토큰에서 4,096토큰까지 다릅니다. Opus 4.8, Sonnet 5, 4.6, 4.5는 1,024토큰이고, Opus 4.6/4.5와 Haiku 4.5는 4,096토큰입니다 . 기준보다 짧아도 추론은 정상적으로 실행되지만 캐싱은 오류 없이 조용히 거절됩니다. 사용량 응답에서 cache_creation_input_tokens가 0으로 유지되므로 직접 확인하지 않으면 미스를 알아차리기 어렵습니다.
시스템 프롬프트에 타임스탬프를 넣으면 왜 캐시 적중이 깨지나요?
프리픽스 매칭은 의미가 아니라 정확한 일치를 기준으로 하기 때문입니다. cache_control 중단점 앞쪽 어디에서든 문자 하나만 바뀌어도 정가로 처리되는 미스가 발생합니다 . Anthropic의 무효화도 계층적입니다. tools가 바뀌면 그 아래의 system과 messages까지 무효화됩니다 . 타임스탬프, 세션 ID, 사용자 이름, 테넌트별 문자열은 정적 프리픽스 영역 안이 아니라 반드시 마지막 중단점 뒤에 둬야 합니다.
캐시된 프리픽스는 요청 사이에서 얼마나 오래 유지되나요?
Anthropic의 기본 TTL은 5분이며 읽을 때마다 갱신됩니다. 선택 사항인 1시간 TTL을 쓰면 쓰기 비용이 기본 요금의 약 2배로 올라갑니다 . OpenAI GPT-5.6 계열 항목은 비활성 상태가 최소 약 30분이어도 대상 상태를 유지하며, 수동 삭제는 제공되지 않습니다 . TTL보다 긴 세션 공백이 생기면 다음 턴은 쓰기 할증 요금으로 다시 진입해야 합니다. 사람 검토가 끼는 채팅이나 비동기 에이전트 패턴에서 흔히 발생합니다.
요청이 캐시 적중이었는지, 콜드 항목이었는지는 어떤 응답 필드로 확인하나요?
적중률을 추정하지 말고 usage 객체를 확인하세요. Anthropic은 cache_creation_input_tokens(콜드 항목)와 cache_read_input_tokens(적중)를 분리합니다 . OpenAI는 usage.prompt_tokens_details.cached_tokens로 보고합니다 . Bedrock은 cacheReadInputTokens와 cacheWriteInputTokens를 노출합니다. 단, inputTokens는 캐시되지 않은 입력만 계산하므로 실제 총량은 세 값을 모두 더해야 합니다 . Gemini는 사용량 메타데이터에 암묵적 캐싱 적중 횟수를 표시합니다 .
이 글이 도움이 되셨다면, 새 글이 올라올 때마다 이메일로 받아보세요.