긴 시스템 프롬프트나 도구 정의를 매번 같이 보낸다면 캐싱을 켜세요. 캐시한 앞부분은 다음 요청부터 입력 단가의 약 10%로 청구됩니다. 요청마다 앞부분이 바뀐다면 켜지 마세요. 캐시 쓰기가 일반 입력보다 비싸서 비용이 늘어납니다.
켜는 방법
json
{
"model": "everyais/claude-sonnet-5-5",
"messages": [
{"role": "system", "content": "(매번 똑같이 보내는 긴 지침)"},
{"role": "user", "content": "첫 번째 질문"}
],
"everyais": { "cache": "on", "cache_ttl": "5m" }
}OpenAI SDK에서는 extra_body로 넘깁니다.
python
response = client.chat.completions.create(
model="everyais/claude-sonnet-5-5",
messages=messages,
extra_body={"everyais": {"cache": "on", "cache_ttl": "5m"}},
)
print(response.usage.prompt_tokens_details.cached_tokens)| 옵션 | 동작 |
|---|---|
cache: "on" | 도구 정의, system, 마지막 user 턴 순서로 캐시 지점을 자동으로 붙입니다(최대 4개) |
cache: "off" | 자동으로 붙인 지점과 클라이언트가 직접 보낸 cache_control을 모두 뺍니다 |
cache_ttl | 캐시 유지 시간. "5m"(기본) 또는 "1h". "1h"는 캐시 쓰기 비용이 더 비쌉니다 |
Gemini 모델은 설정 없이 자동으로 캐시되고 캐시 쓰기 요금이 없습니다. /v1/messages에서 블록에 붙인 cache_control은 그대로 전달합니다.
비용 예시
캐시 읽기는 입력 단가의 약 10%, 캐시 쓰기는 5m이 약 1.25배, 1h가 약 2배입니다.
10,000토큰짜리 앞부분을 5m 안에 다섯 번 보내면 입력 단가 기준 토큰 수는 다음과 같습니다.
| 경우 | 입력 단가로 환산 |
|---|---|
| 캐싱 끔 | 10,000 × 5 = 50,000 |
| 캐싱 켬, 앞부분이 매번 같음 | 12,500(첫 요청의 캐시 쓰기) + 1,000 × 4 = 16,500 |
| 캐싱 켬, 앞부분이 매번 다름 | 12,500 × 5 = 62,500 |
앞부분 뒤에 새로 붙는 메시지는 일반 입력 단가로 청구됩니다.
적중 확인
응답의 usage.prompt_tokens_details.cached_tokens는 캐시에서 읽은 토큰, cache_creation_tokens는 캐시를 쓴 토큰입니다(공급사가 알려 주는 경우).
prompt_tokens(Responses는 input_tokens)는 이 두 값을 포함한 전체 입력입니다. /v1/messages의 input_tokens는 Anthropic 방식대로 캐시 읽기·쓰기를 뺀 값입니다.
cached_tokens가 계속 0이면 다음을 확인하세요.
- 앞부분이 한 글자라도 다르면 적중하지 않습니다. 날짜나 요청 ID 같은 값을 system 프롬프트 앞쪽에 넣지 마세요.
cache_ttl이 지나면 캐시를 다시 씁니다.- 앞부분이 모델의 최소 캐시 길이보다 짧으면 캐시되지 않습니다.