본문 바로가기
C.W.K.
Stream
Lesson 02 of 06 · published

캐시 중단점 네 개를 변화 경계에 놓아

~16 min · prompt-caching, breakpoints, ttl

Level 0Observer
0 XP0/64 lessons0/13 achievements
0/150 XP to next level150 XP to go0% complete

자주 바뀌는 지점 앞에서 구간을 끊어

요청마다 최대 4개의 cache_control: ephemeral 중단점을 둘 수 있어. 흔한 구분은 (1) 정체성과 정책이 든 시스템 프롬프트, (2) 도구 목록, (3) 세션 동안 고정인 문서, (4) 오래된 대화 이력이야. 다음 구간의 변경 빈도가 달라지는 자리가 좋은 중단점이야.

기본 수명은 5분이야

임시 캐시의 기본 TTL은 5분이라 짧은 시간에 호출이 몰리는 대화에는 잘 맞아. 호출 간격이 길면 읽기보다 쓰기를 더 자주 해 오히려 이득이 사라질 수 있어. 사용량 자료에서 캐시 쓰기와 읽기를 함께 보고 판단해.

바이트 순서가 같아야 적중해

뜻이 같은 내용도 순서나 공백이 달라지면 안정된 앞부분이 아니야. 프롬프트 조립을 결정적으로 만들어 같은 입력에서 같은 바이트 순서를 내보내. 캐시 적중은 기대가 아니라 사용량 원격 측정으로 확인해야 해.

원칙: 안정된 앞부분만 캐시하고, 적중 여부는 측정해. 프롬프트 앞은 일부러 단조롭게 유지해.

Code

4-breakpoint 레이아웃·python
resp = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {"type": "text", "text": PERSONA, "cache_control": {"type": "ephemeral"}},  # bp 1
    ],
    tools=[
        # ... 마지막 도구가 bp 2
        {**LAST_TOOL_SPEC, "cache_control": {"type": "ephemeral"}},
    ],
    messages=[
        {"role": "user", "content": [
            {"type": "text", "text": SESSION_DOCUMENT, "cache_control": {"type": "ephemeral"}},  # bp 3
        ]},
        # ... 옛 history
        {"role": "assistant", "content": [
            {"type": "text", "text": LAST_STABLE_ASSISTANT, "cache_control": {"type": "ephemeral"}},  # bp 4
        ]},
        # 가장 새로운 user 턴 (uncached, dynamic)
        {"role": "user", "content": current_user_text},
    ],
)
프로덕션에서 cache hit ratio verify·python
def cache_hit_ratio(usage) -> float:
    total_input = usage.input_tokens + usage.cache_creation_input_tokens + usage.cache_read_input_tokens
    if total_input == 0:
        return 0.0
    return usage.cache_read_input_tokens / total_input

# 호출 사이 aggregate; ratio 떨어지면 alert
# (예: 배포가 페르소나 파일 바꿔서 cache prefix 깸).

External links

Exercise

운영 엔드포인트 하나에 cache_hit_ratio를 기록해 일주일 추적해. 캐시 대상 작업이 50% 아래로 떨어지면 앞부분의 변화를 찾아 고쳐.
Hint
적중률이 떨어진 날의 페르소나와 시스템 파일 Git 이력을 먼저 봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.