Prompt caching 운영 경제학 — 같은 프롬프트를 1000번 보낼 때 비용을 90% 줄이는 법
시스템 프롬프트·페르소나·문서가 호출마다 동일하다면 그 부분을 캐시할 수 있습니다. Anthropic·OpenAI의 prompt caching 작동 원리와 마케팅 자동화의 비용을 90% 깎는 운영 패턴.
광고 카피 양산을 LLM에 자동화한 뒤 첫 달 청구서를 받으면 자주 놀랍니다. 같은 페르소나·같은 브랜드 가이드를 매번 보내는데 그 부분이 매번 입력 토큰으로 잡혀 비용을 만듭니다. prompt caching은 이 반복되는 부분을 캐시 영역으로 표시해, 두 번째 호출부터는 그 부분을 캐시 토큰(가격 1/10)으로 처리합니다. 마케팅 자동화의 운영 비용을 90% 가까이 깎을 수 있는 단순하고 강력한 도구입니다.
마케터가 이 글을 읽어야 하는 이유: LLM을 자동화에 끼워 넣을수록 비용은 호출 수 × 입력 토큰으로 빠르게 커집니다. 같은 페르소나를 1000번 보내고 있다면, 그게 1000번의 입력 토큰 비용입니다. caching 한 줄로 999번을 캐시 토큰으로 돌리면 비용이 거의 1/10. 작은 변경 하나로 LLM 자동화의 ROI가 완전히 달라집니다.
1. 왜 비용 90% 절감이 가능한가
LLM API 비용은 일반적으로 입력 토큰 + 출력 토큰의 합으로 청구됩니다. 마케팅 자동화에서는 입력 토큰이 비용의 80% 이상을 차지하는 경우가 흔합니다. 그 입력 토큰의 대부분은 매번 동일한 시스템 프롬프트·페르소나·브랜드 가이드·예시(few-shot)입니다.
| 호출 영역 | 토큰 수 | 매 호출마다 동일? | 캐시 가능? |
|---|---|---|---|
| 시스템 프롬프트 | 500 | 동일 | 가능 |
| 브랜드 페르소나 | 300 | 동일 | 가능 |
| 제품 정보 | 200 | 동일 | 가능 |
| Few-shot 예시 | 1500 | 동일 | 가능 |
| 사용자 입력 | 50 | 매번 다름 | 불가 |
| 출력 | 200 | 매번 다름 | — |
총 입력 2550 토큰 중 캐시 가능 영역이 2500 (98%). 사용자 입력은 50 토큰뿐. caching이 적용되면 첫 호출은 그대로 비용이 들지만, 두 번째 호출부터 2500 토큰 영역이 캐시 히트로 처리되어 1/10 가격이 됩니다.
2. Anthropic·OpenAI의 caching 작동 원리
두 주요 제공사가 caching을 구현하는 방식은 비슷하지만 디테일이 다릅니다.
2-1. Anthropic Claude — 명시적 cache_control
Claude는 messages 안에 cache_control: {"type": "ephemeral"}을 명시적으로 박아 표시합니다. 캐시 경계를 직접 지정합니다.
- 캐시 영역 표시: 메시지 또는 도구 정의 안에
cache_control추가 - 캐시 TTL: 5분(기본) 또는 1시간(프리미엄)
- 캐시 히트 비용: 입력 토큰의 약 10%
- 캐시 쓰기 비용: 입력 토큰의 약 125% (첫 호출에서 쓰는 비용)
직관: 첫 호출에서 약간 더 비싸게 캐시를 쓰고, 그 다음부터 1/10 가격으로 읽음. 5분 안에 5번만 같은 캐시를 써도 본전 회수.
2-2. OpenAI — 자동 prefix caching
OpenAI는 명시적 표시 없이 자동으로 prefix를 캐시합니다. 같은 시작 부분을 가진 요청이 들어오면 자동으로 hit.
- 캐시 표시 불필요
- 캐시 TTL: 5-10분
- 캐시 히트 비용: 입력 토큰의 약 50%
- 캐시 쓰기 비용: 추가 비용 없음
직관: 자동이라 편하지만 캐시 효율은 Claude보다 낮음(50% vs 10%). 대량 자동화에서는 Claude의 명시적 caching이 비용 측면 우위.
| 항목 | Anthropic | OpenAI |
|---|---|---|
| 표시 방법 | 명시적 cache_control | 자동 prefix |
| 캐시 히트 가격 | 입력의 10% | 입력의 50% |
| 캐시 쓰기 추가 비용 | 125% (첫 호출) | 없음 |
| 캐시 TTL | 5분 / 1시간 | 5-10분 |
3. 캐시 히트율을 높이는 프롬프트 구조 룰
caching은 prefix 매칭이라 프롬프트 구조가 중요합니다.
3-1. 변하지 않는 부분을 앞으로
시스템 프롬프트·페르소나·문서는 messages의 앞쪽에 고정. 사용자 입력은 항상 끝쪽. 같은 시작 부분을 공유하는 호출들이 캐시를 효율적으로 공유합니다.
| 좋은 구조 | 나쁜 구조 |
|---|---|
| [시스템] [페르소나] [문서] [사용자 입력] | [사용자 입력] [페르소나] [문서] [시스템] |
| [시스템] [예시1] [예시2] [사용자 입력] | [사용자 입력] [동적 컨텍스트] [예시] |
prefix 한 토큰이 다르면 그 뒤로 캐시 미스. 변하지 않는 부분 앞쪽 배치는 단순하지만 가장 강력한 룰.
3-2. 동적 부분을 한 곳에 모으기
타임스탬프·세션 ID 같은 동적 값을 시스템 프롬프트에 흩뿌리지 마세요. 그 값들 때문에 시스템 프롬프트의 prefix 매칭이 깨집니다. 동적 값은 사용자 메시지 끝쪽으로 모으거나 별도 메타 헤더로 분리.
3-3. Few-shot 예시 순서 고정
같은 작업을 위한 few-shot 예시를 매번 다른 순서로 섞지 마세요. 같은 순서로 고정하면 그 부분이 캐시됩니다. 다양성을 위해 예시를 무작위로 섞고 싶으면 batch 단위로 같은 순서를 유지하고 batch가 끝날 때 새 순서로 갱신하는 패턴.
4. 마케팅 자동화의 캐시 ROI 계산
캐시가 비용에 어떻게 영향을 미치는지 구체적으로 보겠습니다.
4-1. 캐시 없을 때
- 호출 1회: 입력 2500 토큰 × 0.0075
- 1000회/일: $7.5/일
- 한 달: $225
4-2. 캐시 있을 때 (Anthropic 기준)
- 첫 호출: 2500 × 0.0094 (캐시 쓰기)
- 두 번째 호출부터: 2500 × 0.00075 (캐시 히트)
- 1000회/일: 0.00075) = $0.76/일
- 한 달: $22.8
월 22.8, 약 90% 절감. 자동화 호출 수가 많을수록 절감 효과는 더 큼.
4-3. 손익분기 — 몇 번 호출하면 본전?
첫 호출의 추가 비용(0.0075 = 0.0075 - 0.00675)을 회수하려면 호출 0.3회면 충분. 사실상 즉시 본전. 5분 안에 두 번째 호출이 일어나기만 하면 무조건 이득.
| 일일 호출 수 | 월 비용 (캐시 없음) | 월 비용 (캐시 있음) | 절감 |
|---|---|---|---|
| 100 | $22.5 | $2.6 | 88% |
| 1000 | $225 | $22.8 | 90% |
| 10000 | $2,250 | $228 | 90% |
| 100000 | $22,500 | $2,280 | 90% |
자동화 규모가 클수록 절감액이 크고 캐시 ROI가 폭발합니다.
5. 코드 한 묶음 — Anthropic cache_control
이게 글에 박는 유일한 코드입니다. Claude의 명시적 caching 패턴.
import anthropic
client = anthropic.Anthropic()SYSTEM = "당신은 30대 워킹맘 타겟 유아용품 브랜드의 카피라이터..." # 500 토큰PERSONA = "브랜드 톤: 안심·따뜻함·과장 금지..." # 300 토큰EXAMPLES = "[예시1] ... [예시2] ..." # 1500 토큰
resp = client.messages.create( model="claude-sonnet-4-6", max_tokens=300, system=[ {"type": "text", "text": SYSTEM}, {"type": "text", "text": PERSONA, "cache_control": {"type": "ephemeral"}}, ], messages=[ {"role": "user", "content": [ {"type": "text", "text": EXAMPLES, "cache_control": {"type": "ephemeral"}}, {"type": "text", "text": "오늘의 카피 5개 만들어줘"}, ]}, ],)print(resp.usage)# {'cache_creation_input_tokens': 0, 'cache_read_input_tokens': 1800,# 'input_tokens': 50, 'output_tokens': 280}cache_read_input_tokens가 1800 = 두 번째 호출부터 그 1800 토큰이 1/10 가격. input_tokens는 50(사용자 입력만). 비용 청구 절감이 그대로 보입니다.
6. 캐시가 깨지는 흔한 함정
6-1. 시스템 프롬프트에 동적 값 박힘
"오늘은 2026년 5월 9일입니다" 같은 날짜를 시스템 프롬프트에 박으면 매일 캐시 미스. 동적 값은 사용자 메시지로 분리.
6-2. 모델 버전 변경
claude-sonnet-4-5 → claude-sonnet-4-6으로 모델 변경 시 캐시 전체 무효화. 점진적 롤아웃하면서 비용 모니터링 필수.
6-3. 캐시 TTL 만료
5분 안에 다음 호출이 없으면 캐시 만료. 자동화 호출이 산발적으로 일어나면 캐시 효율이 떨어짐. batch 호출로 묶어서 5분 안에 몰아 부르면 캐시 활용률 폭증.
6-4. cache_control 위치 잘못
cache_control은 캐시 영역의 끝을 표시합니다. 그 표시 이후의 부분은 캐시되지 않음. 캐시하고 싶은 마지막 부분에 cache_control을 박아야 함.
7. Caching이 의미 없는 자리
caching은 만능이 아닙니다. 의미 없는 자리도 있습니다.
7-1. 매 호출이 완전히 다른 컨텍스트
사용자 질문마다 검색된 RAG 문서가 다르게 들어가는 챗봇. 시스템 프롬프트만 캐시 가능, RAG 문서는 매번 다르므로 캐시 미스.
7-2. 호출 빈도가 낮은 자리
5분 안에 호출이 한 번도 일어나지 않으면 캐시 만료. 일주일에 몇 번 부르는 도구는 caching 무용.
7-3. 시스템 프롬프트가 짧은 자리
전체 입력이 100 토큰 이하인 짧은 호출. caching 추가 비용을 회수할 만큼 절감액이 안 나옴.
| 자리 | caching 효과 |
|---|---|
| 카피 양산 자동화 | 매우 큼 |
| 캠페인 분류 라벨링 | 매우 큼 |
| RAG 챗봇 (FAQ) | 시스템 프롬프트만 |
| 단발성 분석 | 의미 없음 |
| 짧은 prompt 자동화 | 의미 없음 |
8. 1시간 캐시(프리미엄) — 큰 자동화의 자리
Anthropic의 1시간 캐시는 가격이 더 비싸지만 TTL이 1시간으로 늘어납니다. 다음 자리에 적합합니다.
- 일일 배치 자동화 (오전 한 번 시작해서 1시간 내 호출 완료)
- 대형 문서를 base context로 두고 여러 질문 (예: 100쪽 보고서 분석)
- 시즌 캠페인 배치 (한 시간 안에 100-1000개 캠페인 처리)
5분 캐시로는 만료될 자리에 1시간 캐시가 답이 됩니다. 추가 비용을 감안해 손익분기를 계산해야 하지만, 대부분의 batch 자동화에서는 이득.
9. 마치며 — caching은 자동화의 운영 조정실
prompt caching은 LLM 자동화의 운영 비용을 결정하는 가장 중요한 한 줄 설정입니다. 같은 페르소나·같은 가이드를 1000번 보내고 있다면, 그게 곧 1000번의 입력 비용이고, caching이 없으면 그 비용이 그대로 청구됩니다. cache_control 한 줄, 프롬프트 구조 룰 한 가지, batch 호출 한 가지 — 이 세 가지만 챙겨도 자동화 ROI가 완전히 달라집니다.
다음 분기에 한 번만 시도해 볼 만한 것은 가장 호출 수가 많은 LLM 자동화 한 자리에 caching을 적용해 일주일 비용을 비교하는 흐름입니다. 결과를 보고 나면 다른 자동화에도 자연스럽게 확장됩니다.
다음에 읽을 글
- LLM-as-judge — 평가 자동화의 caching 패턴
- RAG 비용·latency — RAG 문서 캐싱과 응답 속도 최적화
- 트랜스포머 직관 — 길이 제곱 비용의 수학적 근거
참고
- Anthropic, “Prompt caching”: https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching
- OpenAI, “Prompt caching”: https://platform.openai.com/docs/guides/prompt-caching
- Anthropic, “Pricing”: https://www.anthropic.com/pricing
- OpenAI, “Pricing”: https://openai.com/api/pricing/
- “Cache-augmented generation” (Chan et al., 2024): https://arxiv.org/abs/2412.15605
AI·LLM 카테고리의 다른 글
전체 보기 →-
2026·05·16
LLM 운영 비용 폭주를 막는 6가지 guardrail — 마케팅 자동화의 cost·latency·품질 동시 관리
LLM을 운영에 올리면 어느 날 갑자기 비용이 10배로 튑니다. retry storm·프롬프트 폭증·모델 자동 승격·context 누적 등 폭주 패턴 6가지와 그것을 막는 guardrail을 정리합니다.
-
2026·05·10
LLM evaluation harness — 분기마다 챗봇 품질을 자동 평가하는 공장
챗봇·에이전트가 운영에 들어가면 한 번 평가가 아니라 분기 자동 평가가 필요합니다. 골든셋·regression·hyperparameter A/B를 묶는 evaluation harness 설계와 마케팅 자리에서의 적용.
-
2026·05·09
Context engineering — 200k 토큰 컨텍스트의 설계 원칙 5가지
컨텍스트 창이 200k 토큰까지 커졌지만 단순히 다 넣으면 lost-in-the-middle·비용 폭발·정확도 하락이 옵니다. 마케팅 자동화에 적용하는 5가지 컨텍스트 설계 원칙.
-
2026·05·09
Function calling 설계 패턴 — LLM이 도구를 부를 때 마케터가 점검할 것
LLM이 광고 API·BigQuery·Slack을 직접 부르기 시작하면, 답변 품질보다 "어느 도구를 언제 부를지"가 운영 사고의 진앙이 됩니다. function calling의 한 줄 직관과 마케터가 점검할 5가지.