🔥 고급2026-05-055~7분
Prompt Caching으로 반복 호출 비용 90% 절감하기
Anthropic의 prompt caching을 올바르게 설계하면 캐시 히트율 95% 이상을 달성하고 입력 토큰 비용을 최대 90% 줄일 수 있다. 캐시 무효화 패턴과 실패 모드를 이해해야 한다.
prompt-cachingcost-optimizationanthropic
Prompt Caching 작동 원리와 비용 구조
Anthropic은 cache_control: {type: 'ephemeral'} 마킹된 블록을 5분간 서버 측에 캐시한다. 캐시 쓰기 비용은 일반 입력 토큰의 1.25배이지만, 히트 시 0.1배로 떨어진다. 1000토큰 시스템 프롬프트를 초당 10회 호출하는 서비스라면 월 약 $180 → $18로 절감된다.
핵심 설계 원칙: 정적 콘텐츠를 앞에, 동적 콘텐츠를 뒤에 배치해야 캐시가 유효하다. 사용자 메시지나 타임스탬프가 시스템 프롬프트 앞에 오면 캐시가 매번 무효화된다.
실전 구현 패턴
import anthropic
client = anthropic.Anthropic()
SYSTEM_PROMPT = """당신은 법률 문서 분석 전문가입니다.
[... 5000토큰 분량의 법령 데이터베이스 ...]"""
def analyze_document(user_query: str, document: str) -> str:
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
system=[
{
"type": "text",
"text": SYSTEM_PROMPT,
"cache_control": {"type": "ephemeral"} # 정적 블록 캐시
}
],
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": document,
"cache_control": {"type": "ephemeral"} # 문서도 캐시 가능
},
{"type": "text", "text": user_query} # 동적 쿼리는 마지막
]
}
]
)
usage = response.usage
cache_hit = usage.cache_read_input_tokens > 0
print(f"캐시 히트: {cache_hit}, 절감 토큰: {usage.cache_read_input_tokens}")
return response.content[0].text
실패 모드와 트레이드오프
실패 모드 3가지:
- 캐시 워밍 지연: 첫 호출은 반드시 쓰기 비용 발생. 콜드 스타트가 잦은 서비스는 효과가 제한적
- 5분 TTL 초과: 트래픽이 5분에 1회 미만이면 항상 캐시 미스. 워밍 주기 스케줄러 필요
- 멀티 리전 배포: 리전별 캐시가 독립적이므로 글로벌 서비스는 리전당 별도 워밍 필요
트레이드오프: 캐시 블록은 최소 1024토큰 이상이어야 캐싱 대상이 된다. 짧은 시스템 프롬프트는 캐싱 불가.
운영 체크리스트
- [ ]
usage.cache_read_input_tokens/cache_creation_input_tokens메트릭을 Datadog/Grafana에 전송 - [ ] 캐시 히트율 = read / (read + creation), 목표치 80% 이상
- [ ] 5분마다 더미 호출로 캐시 워밍 유지 (비용: 0.1배)
- [ ] 시스템 프롬프트 변경 배포 시 캐시 무효화 시간(5분) 고려한 롤링 업데이트
- [ ] 문서당 multi-turn 시나리오에서 assistant 턴도
cache_control적용 검토