요청마다 반복되는 긴 앞부분(시스템 프롬프트, 참고 문서, 도구 정의)을 모델 제공사 서버에 저장해 두고 다시 써서 입력 비용과 응답 지연을 함께 줄이는 기능이다. 긴 문서 하나에 질문을 여러 번 하거나 같은 지시문으로 계속 도는 에이전트에 쓰며, 예전 답을 돌려주는 시맨틱 캐싱과 달리 답은 매번 새로 만든다.
| 상황 | 캐시 효과 |
|---|---|
| 긴 문서 하나에 질문을 여러 번 | 큼 |
| 같은 시스템 프롬프트로 대화가 이어짐 | 큼 |
| 매번 내용이 다른 짧은 요청 | 거의 없음 |
캐시는 프롬프트의 앞부분이 글자 하나까지 똑같을 때만 맞는다. 그래서 '변하지 않는 지시문 → 참고 문서 → 지난 대화 → 이번 질문' 순서로 둔다. 앞쪽에 현재 시각이나 사용자 이름처럼 매번 바뀌는 값을 넣으면 그 뒤는 전부 캐시되지 않는다.
Anthropic API에서는 캐시할 블록 끝에 cache_control: {"type": "ephemeral"}를 붙인다. 법률 문서 분석 앱이 1만 토큰짜리 참고 문서를 매번 넣는다면 그 문서 블록에 붙이면 된다. 응답의 사용량 정보에 캐시에서 읽은 토큰 수가 나오므로, 실제로 캐시가 맞는지 여기서 확인한다.
| 제공사 | 방식 | 직접 할 일 |
|---|---|---|
| Anthropic | 직접 지정 | 캐시할 지점 표시 |
| OpenAI | 자동 | 앞부분을 고정하는 것만 신경 쓴다 |
| Google Gemini | 자동 + 명시적 캐시 | 캐시를 만들고 보관 시간을 정한다 |
| DeepSeek | 자동 | 따로 설정할 것 없음 |
최소 길이, 할인율 같은 세부 조건은 제공사와 모델마다 다르므로 공식 문서에서 확인한다.
Anthropic 기준으로 캐시에서 읽은 토큰은 일반 입력보다 약 90% 싸다. 대신 처음 캐시에 쓸 때는 일반 입력보다 조금 더 비싸서, 한 번 쓰고 끝나는 내용이면 오히려 손해다.
캐시는 오래 남지 않는다. 기본 보관 시간이 몇 분 정도라 요청 간격이 길면 매번 새로 저장하게 된다. 너무 짧은 프롬프트는 최소 길이에 못 미쳐 캐시되지 않는다. Gemini의 명시적 캐시처럼 보관하는 시간만큼 저장 비용이 붙는 방식도 있다.
시맨틱 캐싱은 비슷한 질문이 들어오면 예전 답을 그대로 돌려주는 방식이고, 내 앱에서 직접 만든다. 컨텍스트 캐싱은 모델을 매번 호출하고 답도 매번 새로 만든다.
| 항목 | 컨텍스트 캐싱 | 시맨틱 캐싱 |
|---|---|---|
| 저장하는 것 | 처리된 입력 앞부분 | 질문과 답 |
| 모델 호출 | 매번 함 | 캐시가 맞으면 안 함 |
| 답 | 매번 새로 생성 | 예전 답 재사용 |
| 위치 | 모델 제공사 서버 | 내 앱 |
가장 흔한 건 에이전트와 긴 대화다. 매 요청마다 같은 지시문과 쌓인 대화를 다시 보내므로, 앞부분을 고정해 두기만 해도 비용과 대기 시간이 눈에 띄게 준다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 코딩 에이전트 | 긴 시스템 프롬프트·도구 정의·읽은 파일을 앞에 고정하고, 단계마다 새 결과만 뒤에 붙인다 |
| 문서 질의응답 | 계약서·매뉴얼 같은 긴 문서를 앞에 캐시해 두고 질문만 바꿔 여러 번 묻는다 |
| 여러 턴 이어지는 챗봇 | 지난 대화를 앞에 그대로 두고 새 메시지만 끝에 더해 캐시가 계속 맞게 한다 |