광고
~ / posts / developer
💻 개발자

프롬프트 캐싱 비용 계산, TTL 고르는 법과 API·vLLM 비교

LLM API 청구서를 열어 보면 입력 토큰이 출력보다 몇 배 많은 경우가 흔해요. 시스템 프롬프트, 도구 정의, 붙여 넣은 문서가 매 요청 다시 들어가기 때문이에요. 결론부터 말하면 공통 앞부분이 512~1,024토큰 이상이고 같은 앞부분이 5분(OpenAI 는 30분) 안에 두 번 이상 오면 프롬프트 캐싱은 켜는 게 맞아요. 간격이 그보다 길면 TTL 을 늘리되, 요청이 세 번 이상 모일 때만 이득이에요.

이 글은 캐싱의 내부 원리 대신, 실제로 켤 때 정해야 하는 것만 다뤄요. 어느 방식(Claude 명시형, OpenAI 자동형, 직접 띄운 vLLM·SGLang)을 쓸지, TTL 을 몇 분으로 할지, 얼마나 아끼는지를 2026년 10월 27일 공식 가격표로 직접 계산했어요.

광고

프롬프트 캐싱 방식 네 가지 — 무엇을 직접 정해야 하나

캐싱이 붙는 위치에 따라 개발자가 손댈 수 있는 것이 달라요.

방식켜는 법개발자가 정하는 것비용 구조
Claude APIcache_control (블록에 달거나 요청 최상위에 하나)중단점 위치(최대 4개), TTL 5분·1시간쓰기 1.25배·2배, 읽기 0.025~0.1배
OpenAI API (GPT-5.6 이후)기본으로 켜짐TTL 30분·12시간, 필요하면 명시 중단점쓰기 1.25배·2.5배, 읽기 0.05~0.1배
vLLM·SGLang 직접 서빙엔진 옵션메모리 배분, 라우팅, 테넌트 분리요금 없음, GPU 메모리를 KV 캐시와 나눠 씀
응답 캐시(앱에서 구현)Redis 등키 설계, 만료적중 시 모델 호출 자체가 없음

마지막 줄은 성격이 달라요. 프롬프트 캐싱은 입력 계산만 건너뛰고 답은 매번 새로 만들어요. 같은 질문에 같은 답을 돌려줘도 될 때만 응답 캐시를 따로 두세요.

Claude 프롬프트 캐싱 문서에 따르면 캐시는 tools → system → messages 순서로 쌓이고, 중단점에서 뒤로 최대 20블록까지 앞선 요청이 써 둔 항목을 찾아요. OpenAI 프롬프트 캐싱 안내는 GPT-5.6 이후 모델이 1,024토큰부터 캐시하고 기본 수명이 30분이라고 적어요. 그 이전 모델은 쓰기 요금이 없고 prompt_cache_retention 으로 in_memory(보통 5~10분)나 24h 를 고르는 방식이라, 쓰는 모델 세대부터 확인해야 해요.

도구 정의 2,000, 시스템 1,000, 참고 문서 17,000토큰을 앞에 두고 중단점 ①, 이어서 지난 대화와 자동 중단점 ②, 맨 뒤에 새 질문·시각·요청 ID를 두는 배치도
파란 구간이 길고 회색 구간이 짧을수록 캐시 효과가 커요

2026년 10월 캐시 단가 — Claude·OpenAI 가격표 비교

Claude 가격표와 OpenAI 가격표의 표준 요금(100만 토큰당 달러)을 옮겼어요.

모델입력 정가짧은 TTL 쓰기긴 TTL 쓰기캐시 읽기읽기 배수
Claude Fable 5.11012.50 (5분)20 (1시간)0.250.025배
Claude Opus 5.545 (5분)8 (1시간)0.200.05배
Claude Sonnet 5.522.50 (5분)4 (1시간)0.100.05배
Claude Haiku 5.5 (10만 토큰 이하)0.100.125 (5분)0.20 (1시간)0.010.1배
gpt-6-astra1012.50 (30분)25 (12시간)1.000.1배
gpt-6.1-sol22.50 (30분)5 (12시간)0.100.05배
gpt-6.1-terra11.25 (30분)2.50 (12시간)0.050.05배
gpt-6-luna0.100.125 (30분)0.25 (12시간)0.010.1배

두 회사 모두 짧은 TTL 쓰기는 1.25배로 같아요. 차이는 TTL 길이예요. Claude 는 5분, OpenAI 는 30분이 기본이라 요청 간격이 5~30분인 서비스는 OpenAI 쪽이 별도 설정 없이 더 많이 적중해요. Claude Haiku 5.5 는 프롬프트가 10만 토큰을 넘으면 캐시 읽기를 포함한 모든 단가가 5배 구간으로 올라가요. 캐시로 읽은 토큰도 프롬프트 길이에 들어간다는 점을 놓치기 쉬워요.

손익분기 계산 — 몇 번 써야 캐시가 이득인가

같은 앞부분 P 토큰을 TTL 안에 N번 보낸다고 해요. 캐시가 없으면 N × P × 정가, 캐시를 쓰면 P × 정가 × (쓰기배수 + (N−1) × 읽기배수) 예요. 둘을 같게 놓으면 손익분기는 N > (쓰기배수 − 읽기배수) ÷ (1 − 읽기배수) 예요.

아래는 캐시 없이 보낸 비용을 100으로 놓은 상대 비용이에요. 100 아래로 내려가는 지점이 손익분기예요.

같은 앞부분 재사용 횟수별 입력 비용 (캐시 없음 = 100)
짧은 TTL(쓰기 1.25배)Claude 1시간(쓰기 2배)OpenAI 12시간(쓰기 2.5배)
0501001502002501회2회3회5회10회30회1회 · 짧은 TTL(쓰기 1.25배) 125%2회 · 짧은 TTL(쓰기 1.25배) 67.5%3회 · 짧은 TTL(쓰기 1.25배) 45%5회 · 짧은 TTL(쓰기 1.25배) 29%10회 · 짧은 TTL(쓰기 1.25배) 17%30회 · 짧은 TTL(쓰기 1.25배) 9%91회 · Claude 1시간(쓰기 2배) 200%2회 · Claude 1시간(쓰기 2배) 102%3회 · Claude 1시간(쓰기 2배) 70%5회 · Claude 1시간(쓰기 2배) 44%10회 · Claude 1시간(쓰기 2배) 24.5%30회 · Claude 1시간(쓰기 2배) 11.5%11.51회 · OpenAI 12시간(쓰기 2.5배) 250%2회 · OpenAI 12시간(쓰기 2.5배) 138%3회 · OpenAI 12시간(쓰기 2.5배) 86.7%5회 · OpenAI 12시간(쓰기 2.5배) 54%10회 · OpenAI 12시간(쓰기 2.5배) 29.5%30회 · OpenAI 12시간(쓰기 2.5배) 13.2%13.2

한 번만 쓰고 끝나는 앞부분은 캐시를 걸면 오히려 25~150% 비싸져요

단위: % · 자료: Claude·OpenAI 공식 가격표 배수(읽기 0.05배 모델)로 직접 계산, 2026-10-27
표로 보기
구분짧은 TTL(쓰기 1.25배)Claude 1시간(쓰기 2배)OpenAI 12시간(쓰기 2.5배)
1회125200250
2회67.5102138
3회457086.7
5회294454
10회1724.529.5
30회911.513.2

읽기 배수가 0.1배인 Haiku 5.5·gpt-6-luna 는 10회 기준 17%가 아니라 21.5%라서 절감 폭이 조금 작아요. Fable 5.1(0.025배)은 반대로 14.75%까지 내려가요.

문서 질의응답 봇 예시 — 월 비용을 직접 계산하면

예시 가정이에요. 사내 매뉴얼을 붙인 Q&A 봇이 요청마다 앞부분 20,000토큰(도구 2,000 + 시스템 1,000 + 문서 17,000), 질문 200토큰, 답 500토큰을 쓰고, 하루 3,000건 × 22일 = 월 66,000건이에요. 업무 시간에 1분에 5건 넘게 들어오니 캐시는 대부분 따뜻하게 유지돼요. 그래도 서버 분산·문서 갱신 때문에 쓰기가 섞이므로 적중률을 95%와 80% 두 가지로 놓았어요.

문서 Q&A 봇 월 비용 (요청 6만 6천 건, 앞부분 2만 토큰)
캐시 없음캐시 적중 80%캐시 적중 95%
01,0002,0003,0004,0005,0006,000Opus 5.5 · 캐시 없음 5,993달러Opus 5.5 · 캐시 적중 80% 2,244달러Opus 5.5 · 캐시 적중 95% 1,294달러Opus 5.5Sonnet 5.5 · 캐시 없음 2,996달러Sonnet 5.5 · 캐시 적중 80% 1,122달러Sonnet 5.5 · 캐시 적중 95% 647달러Sonnet 5.5gpt-6.1-terra · 캐시 없음 1,498달러gpt-6.1-terra · 캐시 적중 80% 561달러gpt-6.1-terra · 캐시 적중 95% 323달러gpt-6.1-terraHaiku 5.5 · 캐시 없음 150달러Haiku 5.5 · 캐시 적중 80% 61달러Haiku 5.5 · 캐시 적중 95% 39달러Haiku 5.5

적중률은 예시 가정이에요. 실제 값은 응답의 사용량 필드로 확인하세요

단위: 달러 · 자료: Claude·OpenAI 공식 표준 요금(2026-10-27)으로 직접 계산, 입력+출력 합계
표로 보기
구분캐시 없음캐시 적중 80%캐시 적중 95%
Opus 5.55,9932,2441,294
Sonnet 5.52,9961,122647
gpt-6.1-terra1,498561323
Haiku 5.51506139

Sonnet 5.5 로 풀어 보면, 캐시가 없으면 요청당 입력 20,200토큰 × 2달러 + 출력 500토큰 × 10달러 = 0.0454달러, 월 2,996달러예요. 적중 95%면 앞부분 2만 토큰의 평균 단가가 0.95 × 0.10 + 0.05 × 2.50 = 0.22달러로 떨어져 요청당 0.0098달러, 월 647달러가 돼요.

눈여겨볼 점은 캐시를 켠 뒤의 비용 구성이에요. Sonnet 5.5 기준 출력비 330달러가 그대로 남아서, 캐시를 켜면 전체의 51%가 출력이에요. 여기서 더 줄이려면 답 길이나 모델 선택을 봐야 하고, 캐싱을 더 만지는 효과는 작아요.

TTL 고르기 — 요청 간격이 비용을 뒤집는 경우

TTL 은 마지막으로 쓰거나 읽은 시점부터 다시 세요. 읽을 때마다 무료로 연장되니, 간격이 TTL 보다 짧게 계속 오면 짧은 TTL 로 충분해요. 문제는 간격이 TTL 보다 긴 경우예요.

예시 가정: 앞부분 2만 토큰, 20분마다 한 번, 8시간 동안 24번 오는 사내 보고서 도우미.

20분 간격 24회 요청의 하루 입력비 (앞부분 2만 토큰)
Claude Sonnet 5.5 5분 TTLClaude Sonnet 5.5 5분 TTL · 120센트120센트캐시 없음캐시 없음 · 96센트96센트Claude Sonnet 5.5 1시간 TTLClaude Sonnet 5.5 1시간 TTL · 12.6센트12.6센트gpt-6.1-sol 30분 TTLgpt-6.1-sol 30분 TTL · 9.6센트9.6센트
단위: 센트 · 자료: 공식 가격표로 직접 계산(2026-10-27). 5분 TTL은 매번 만료돼 24번 모두 쓰기
표로 보기
구분하루 입력비
Claude Sonnet 5.5 5분 TTL120
캐시 없음96
Claude Sonnet 5.5 1시간 TTL12.6
gpt-6.1-sol 30분 TTL9.6

5분 TTL 은 매번 만료돼서 24번 모두 1.25배 쓰기 요금을 내고, 캐시가 없을 때(96센트)보다 비싼 120센트가 돼요. 1시간 TTL 로 바꾸면 첫 쓰기 8센트 + 읽기 23번 4.6센트로 12.6센트, 87% 줄어요. OpenAI 는 기본 30분이 20분 간격을 덮어서 설정 없이 9.6센트예요.

정리하면 이렇게 골라요.

같은 앞부분 재사용 간격ClaudeOpenAI (GPT-5.6 이후)
5분 안에 계속기본 5분기본 30분
5~30분1시간 TTL ("ttl": "1h")기본 30분
30~60분1시간 TTL12시간 TTL 검토
1시간 넘게, 하루 몇 번캐시 효과 작음12시간 TTL (하루 3회 이상일 때)

Claude 에서 한 요청에 두 TTL 을 섞을 때는 1시간 항목이 5분 항목보다 앞에 와야 해요. 시스템 프롬프트는 1시간, 늘어나는 대화는 5분으로 두는 구성이 이 규칙에 맞아요.

공통 앞부분이 최소 길이 이상인지, 직접 GPU 에 띄우는지, 재사용 간격이 5분 안·5~60분·1시간 넘게인지 순서로 물어 TTL 과 서빙 설정을 고르는 순서도
위에서부터 답해 내려가면 기본 설정이 정해져요

대화형 서비스는 지연이 얼마나 줄어드나

API 회사들은 캐시 적중 시 첫 토큰까지 시간(TTFT)이 줄어든다고만 적고, 몇 밀리초인지는 공개하지 않아요. 그래서 시간 대신 매 턴 새로 읽어야 하는 토큰 수로 비교했어요. 시스템 프롬프트 3,000토큰에 턴마다 질문 150 + 답 350토큰이 쌓이는 20턴 대화예요.

턴그 턴의 입력캐시 없이 누적 계산캐시 적중 시 누적 계산
13,1503,1503,150
55,15020,7505,150
107,65054,0007,650
2012,650158,00012,650

캐시가 없으면 대화가 길어질수록 누적 계산량이 제곱에 가깝게 늘어요. 캐시가 매번 맞으면 각 턴은 직전 답과 새 질문 500토큰만 읽으면 돼서, 20턴 누적 기준 92%를 건너뛰어요. 긴 입력의 앞부분 처리(prefill)가 첫 토큰 지연의 대부분이라 체감도 이 방향으로 움직여요.

다만 vLLM 접두사 캐싱 기능 문서가 적듯 캐싱은 답을 한 토큰씩 만드는 시간은 줄이지 못해요. 답이 길어서 생성 시간이 대부분인 서비스는 캐시를 켜도 전체 응답 시간은 크게 안 변해요.

광고
광고

직접 서빙 — vLLM 과 SGLang 중 무엇을 볼까

모델을 직접 띄우면 캐시 요금이 없어요. 대신 비용이 GPU 메모리와 라우팅으로 옮겨 가요.

공통 시스템 프롬프트에 질문만 바뀌는 구조라면 이미 쓰는 엔진에서 켜기만 하면 돼요. 퓨샷 예시나 에이전트 단계처럼 앞부분이 나무 모양으로 갈라지는 요청이 많다면 SGLang 의 트리 방식이 유리할 수 있으니 자기 트래픽으로 재 보세요.

엔진보다 더 큰 변수는 복제본 수예요. KV 캐시는 각 GPU 메모리에 있어서, 서버가 4대인데 요청을 무작위로 나누면 같은 앞부분이 네 군데에서 따로 쓰여요. 앞부분 해시나 대화 ID 를 기준으로 같은 서버에 보내는 라우팅을 두어야 해요. 여러 고객사가 한 서버를 쓴다면 vLLM 의 cache_salt 로 신뢰 그룹을 나누세요. 응답 시간 차이로 다른 고객의 입력을 추측하는 공격을 막는 기능이고, 점검 항목은 KV 캐시 격리 점검표 글에 정리돼 있어요. 해시 함수는 기본값 sha256 을 유지하고, 더 빠른 xxhash 는 멀티테넌트 환경이라면 충돌 위험을 따져 본 뒤에만 바꾸는 것이 문서의 권고예요.

캐시 적중률이 낮을 때 흔한 원인

도입 체크리스트

켜기 전

켠 뒤

직접 서빙이라면

토큰 수 자체를 어림하려면 한국어 LLM 토큰 비용 글의 1,000자당 토큰 표를 같이 보면 편해요.

광고
광고

자주 묻는 질문

프롬프트 캐싱을 켜면 답변 품질이 달라지나요?

달라지지 않아요. 앞부분을 읽은 중간 결과만 재사용하고 답은 매번 새로 생성해요. vLLM 설계 문서도 캐싱이 모델 출력을 바꾸지 않는다고 적어요. 같은 질문에 답이 달라지는 건 샘플링 때문이고 캐싱과는 무관해요.

Claude 에서 5분과 1시간 TTL 중 무엇이 기본으로 좋나요?

같은 앞부분이 5분 안에 계속 다시 오면 5분이 맞아요. 읽을 때마다 무료로 연장되니 1시간을 고를 이유가 없어요. 간격이 5분을 넘고 1시간 안에 세 번 이상 온다면 1시간이 싸요. 20분 간격 예시에서 5분 TTL 은 캐시 없을 때보다 25% 비쌌어요.

캐시가 걸렸는지 어떻게 확인하나요?

Claude 는 cache_read_input_tokens, OpenAI 는 cached_tokens 를 봐요. 두 번째 요청에서도 0이면 최소 길이 미달이거나 앞부분이 매번 바뀌는 거예요.

OpenAI 는 자동인데 따로 할 일이 있나요?

GPT-5.6 이후 모델은 기본 30분 TTL 로 알아서 캐시하지만, 앞부분을 고정하는 일은 똑같이 개발자 몫이에요. 하루 몇 번만 쓰는 긴 참고 자료는 12시간 TTL 을, 바뀌는 내용이 앞에 끼어 쓰기 요금만 나가는 경로는 명시 중단점으로 범위를 좁히는 것을 검토하세요.

직접 띄운 vLLM 에서도 캐싱이 비용을 줄이나요?

요금은 없지만 같은 GPU 로 더 많은 요청을 처리해 결국 GPU 대수를 줄여요. 공통 앞부분이 길고 답이 짧을수록 효과가 커요. 복제본이 여럿이면 라우팅부터 손보세요.

정리

더 깊이 읽기

이 글은 실무에서 판단할 때 필요한 것 위주로 정리했어요. 같은 주제의 내부 동작 원리는 devboi 기술 블로그의 프롬프트 캐싱 원리 — KV 캐시 접두사 재사용과 vLLM·SGLang에서 도식과 코드로 단계별로 풀었어요.

참고한 자료

#프롬프트 캐싱 비용#프롬프트 캐싱 TTL#Claude 캐시 단가#OpenAI prompt caching#vLLM 접두사 캐싱#SGLang RadixAttention#LLM API 비용 절감#캐시 적중률
← 이전 글멀티모달 LLM 이미지 토큰 비용 비교, 해상도별 API 요금과 고르는 법다음 글 →리액터 스케줄러 고르는 법, boundedElastic 크기와 flatMap 동시성 계산
광고

더 둘러보기

💻 개발자 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →