토큰의 열역학

컨텍스트·캐시·재시도·출력이 만드는 AI 비용의 실제 구조

저자

Insight Lab

공개

2026년 8월 3일

열과 냉각 흐름으로 표현한 토큰 컨텍스트와 캐시

노트한 문장 진단

AI 작업의 주 발열원은 답변 길이만이 아니다. 매 호출마다 다시 구성되는 긴 접두부, 캐시를 깨는 지침 변경, 누적되는 대화, 실패한 도구의 재시도가 비용과 세션 한도를 동시에 압박한다.

1 312K 토큰짜리 한 번의 관측

2026년 8월 2일 Claude CLI 세션의 원본 JSONL에는 claude-opus-4-8 호출 한 건이 기록돼 있다. 사용량은 신규 입력 2토큰, 1시간 캐시 생성 입력 312,105토큰, 캐시 읽기 17,477토큰, 출력 1,446토큰이었다. 로그에 기록된 비용은 $3.1659다. 이후 나타난 429 session limit은 Codex가 아니라 이 Claude 세션의 제한이었다. 대화 본문을 제거한 감사 발췌에 사용량 요청 ID와 429 요청 ID를 분리해 보존했다.

이 숫자는 단순한 “총 토큰 331K”보다 많은 것을 말한다. 출력은 눈에 보이지만 비용의 대부분은 보이지 않는 접두부 캐시를 새로 만드는 데 쓰였다. Anthropic 공식 Prompt Caching 가격표의 Opus 4.8 단가인 입력 $5/M, 출력 $25/M, 1시간 캐시 쓰기 2×, 캐시 읽기 0.1×를 적용하면 비용을 원 단위까지 복원할 수 있다.

[ C = 2I_w p + 0.1I_r p + Oq ]

[ = 2(312{,}105) +0.1(17{,}477) +1{,}446 =$3.16594 ]

여기서 (I_w)는 1시간 캐시 생성 토큰, (I_r)는 캐시 읽기 토큰, (O)는 출력 토큰이다. 신규 입력 2토큰 비용은 반올림 수준이라 식에서 생략했다. 계산값은 로그의 $3.1659와 일치하지만, 로그의 비용도 같은 공급자 단가 계수로 산출되므로 이는 외부 독립 검증이 아니라 산식 재현 확인이다.

$3.1659는 어디서 발생했나Claude Opus 4.8 원본 세션 JSONL · 2026-08-02 1시간 캐시 생성$3.12105 · 98.58% 캐시 읽기$0.00874 · 0.28% 출력$0.03615 · 1.14% 0$3.12막대는 비용 비중. 토큰 수 비중이 아니라 각 토큰 유형의 계수를 적용한 결과다.
출력 1,446토큰을 줄이는 것만으로는 이 호출의 구조를 바꾸기 어렵다. 감사 발췌의 진단값은 messages_changed로 인해 234,048토큰의 캐시 적중이 깨졌음을 보여준다. 다만 이 필드만으로 어떤 메시지 블록이 변경됐는지까지 식별할 수는 없다.

2 열역학은 어디까지나 비유다

열역학은 이 현상을 설명하는 유용한 언어지만 물리 법칙을 그대로 옮긴 것은 아니다. 토큰에는 온도가 없고 API 청구액은 줄 단위 에너지가 아니다. 프롬프트 캐시도 열기관의 저장고가 아니다. 이 경계를 지키지 않으면 은유가 분석을 대신한다.

그럼에도 세 가지 대응은 설명에 유용하다. 첫째, 매번 새로 처리되는 문맥에는 반복 처리 부하가 생긴다. 둘째, 안정된 접두부 캐시는 이미 처리한 구조를 낮은 추가비용으로 재사용한다. 셋째, 실패 원인을 바꾸지 않은 도구 재호출은 유용한 결과 없이 비용만 늘린다. 이를 열·저장·소산에 빗댈 수는 있지만, 물리량 사이의 형식적 대응이나 보존법칙을 주장하지 않는다.

정보이론의 엔트로피도 토큰 수와 구분해야 한다. Shannon entropy \(H(X)=-\sum_x p(x)\log p(x)\)는 확률변수의 불확실성을 나타내며, 문자열 길이 자체가 아니다. 긴 문맥이라도 동일 로그와 중복 지침이 반복되면 토큰당 새로운 정보는 낮을 수 있다. 반대로 짧은 오류 한 줄이 가능한 원인들의 불확실성을 크게 줄일 수 있다. 운영 관점에서는 토큰 수와 함께 다음 행동의 불확실성을 얼마나 줄였는가를 봐야 한다.

힌트복합학문 경계에서 얻은 세 결론
  1. 컴퓨터공학 × 경제학: 캐시 사용 여부보다 재사용 횟수와 TTL의 조합이 비용을 결정한다. 기술 기능은 가격계수와 반복 패턴을 함께 볼 때 의사결정 규칙이 된다.
  2. 정보이론 × 지식관리: 운영 기억의 품질은 대화의 길이가 아니라, 다음 작업에 필요한 상태와 결정의 불확실성을 얼마나 보존·축소하는가에 달려 있다.
  3. 신뢰성공학 × 운영연구: 최저 토큰 비용만 최소화하면 실패가 여러 저장소로 번질 수 있다. 기대 재시도 비용과 실패의 영향반경을 함께 줄이는 것이 실제 최적화 목표다.

열역학은 이 세 결론을 조직하는 은유이고, 정량 모델은 비용회계·확률·시스템 운영에서 가져온다. 이 구분이 있어야 학문 간 연결이 장식이 아니라 검증 가능한 복합학문 분석이 된다.

따라서 이 글의 열역학적 목표는 “무조건 짧게”가 아니다. 필요한 근거와 재현성을 보존하면서, 같은 사실을 다시 가열하지 않는 것이다.

3 캐시는 언제 이득인가

캐시는 무료 저장소가 아니다. 쓰기 비용이 먼저 발생하고, 같은 접두부를 다시 읽을 때 할인된다. 고정 접두부 312,105토큰의 기본 입력비를 (P=$1.560525)라고 두자. 출력비는 두 전략에 공통이므로 비교에서 제외한다.

캐시를 쓰지 않고 (N)회 반복하면 비용은 (C_{none}=NP)다. 1시간 캐시는 첫 쓰기 2배와 이후 읽기 0.1배이므로 (C_{1h}=2P+0.1P(N-1))다. 5분 캐시 쓰기 계수 1.25를 적용하면 (C_{5m}=1.25P+0.1P(N-1))다.

1시간 캐시는 세 번째 호출부터 무캐시보다 싸다. 5분 캐시는 두 번째 호출부터 이득이다. 단 한 번만 쓸 거대한 접두부를 1시간 캐시로 만들면 오히려 기본 입력비의 두 배를 낸다. “캐시 사용” 자체가 최적화가 아니라 재사용 횟수와 TTL을 맞추는 것이 최적화다.

312K 고정 접두부의 캐시 손익분기출력비 제외 · 입력 $5/M · 읽기 0.1× · 5분 쓰기 1.25× · 1시간 쓰기 2× $0$2.5$5.0$7.5$10 1회2회3회4회5회6회무캐시5분 캐시1시간 캐시
1시간 캐시는 첫 호출이 가장 비싸지만 세 번째부터 무캐시 누적비용 아래로 내려간다. 실제 선택에는 재사용 간격과 접두부 안정성도 포함해야 한다.

4 세션이 길어질수록 왜 비싸지는가

대화형 에이전트는 이전 턴을 다시 보내며 다음 답을 만든다. 고정 지침 (S), 턴마다 늘어나는 기록 (d), 호출 수 (N)인 단순 모델에서 매번 전체 문맥을 재전송하면 누적 입력은 다음과 같다.

[ T_{naive}=_{i=1}^{N}(S+id)=NS+d ]

고정 지침 40K, 턴당 증가 8K, 12회 호출이면 누적 처리량은 12×40K + 8K×78 = 1.104M tokens다. 턴 수가 두 배가 되면 비용은 단순히 두 배가 아니라 누적 대화항 때문에 더 빠르게 증가한다.

대안은 기억을 없애는 것이 아니라 계층화하는 것이다. 시스템 규칙은 안정된 접두부로 캐시하고, 오래된 대화는 결정·근거·남은 작업만 남긴 바톤으로 압축하며, 원문은 필요할 때 검색한다. 중요한 파일 경로와 검증 명령을 남기면 세션을 짧게 나눠도 재현성을 잃지 않는다.

5 재시도는 기대비용을 비선형적으로 증폭한다

도구 호출 한 번의 실패확률을 (f)라 하고 성공할 때까지 무제한 독립 재시도한다고 가정하면 기대 호출수는 (1/(1-f))다. 실패율 20%면 1.25배, 40%면 1.67배, 60%면 2.5배다. 현실에서는 실패가 독립적이지 않다. 인증 오류·잘못된 경로·깨진 세션을 같은 입력으로 반복하면 성공확률이 거의 오르지 않으므로 비용만 선형으로 누적된다.

두 종류의 증폭: 누적 문맥과 실패 재시도왼쪽: 40K 고정+턴당 8K · 오른쪽: 성공까지 독립 재시도의 이론값 0500K1M2턴4턴6턴8턴10턴12턴104K240K408K608K840K1.104MT = 40KN + 8K·N(N+1)/2 1.25×1.67×2.50×실패 20%실패 40%실패 60%
긴 세션은 누적합으로, 무제한 재시도는 기대 호출수로 비용을 증폭한다. 둘이 결합되면 실패할수록 더 큰 문맥을 다시 보내는 악순환이 생긴다.

6 운영 처방: 압축보다 먼저 구조를 바꾼다

첫째, 고정 지침·도구 정의·변하지 않는 예시는 앞에 두고 순서를 안정화한다. 매번 바뀌는 요청과 검색 결과는 뒤에 둔다. 프롬프트 캐시는 동일 접두부를 활용하므로 앞부분의 사소한 변경도 이후 캐시 적중 범위를 줄일 수 있다.

둘째, 장기 세션을 산출물 단위로 나눈다. 바톤에는 목표, 결정, 수정 파일, 남은 작업, 검증 결과, 중단 조건만 남긴다. 원시 대화 전체를 복제하는 대신 파일을 진실의 원천으로 삼는다.

셋째, 도구 오류를 분류한다. 429는 제공자·모델·리셋 시각을 확인하고 같은 호출을 즉시 반복하지 않는다. 401/403은 인증을 고치기 전 중단한다. 경로 오류는 파일 존재를 확인한 뒤 한 번만 재시도한다. 같은 실패가 반복되면 입력을 바꾸거나 대체 경로로 전환한다.

넷째, 원시 로그를 모델에게 통째로 보여주지 않는다. 로컬에서 행 수·빈도·상태코드를 집계하고 이상 구간만 읽힌다. 단, 최종 판단의 근거가 된 원본 행 번호와 파일 경로는 남긴다.

다섯째, 출력 토큰 절약을 품질 저하와 혼동하지 않는다. 검증식·출처·한계를 삭제해 짧게 만드는 것은 비용 최적화가 아니라 정보 손실이다. 긴 장황함을 줄이되 의사결정에 필요한 증거는 보존한다.

7 감시 대시보드에 필요한 지표

  • 호출별 신규 입력·캐시 생성·캐시 읽기·출력 토큰
  • 캐시 적중률과 접두부 변경 원인
  • 산출물 하나당 비용과 성공한 검증 단계 수
  • 도구별 실패율, 동일 오류 재시도 횟수, 중단까지 걸린 호출 수
  • 세션 턴 수·JSONL 크기·최근 5회 입력 증가율
  • 바톤 크기와 새 세션 복구 성공률

비용만 보면 모델이 중요한 검증을 생략하도록 유도할 수 있다. 따라서 “달러/산출물”과 함께 “검증 통과/산출물”, “재작업률”, “출처 누락률”을 봐야 한다. 싼 실패를 여러 번 만드는 것보다 비싸더라도 한 번에 검증 가능한 결과를 만드는 편이 전체 시스템에는 효율적일 수 있다.

8 세 가지 오판과 교정

8.1 “출력이 짧으면 싸다”

이번 사례의 출력은 1,446토큰, 비용은 약 3.6센트였다. 캐시 생성은 그 약 86배인 3.12달러였다. 답변을 절반으로 줄여도 절감액은 약 1.8센트에 불과하다. 물론 대량 생성 서비스에서는 출력 최적화도 중요하지만, 이 한 호출의 우선순위는 명백히 접두부 재구성 방지다. 토큰 유형을 구분하지 않은 총량 지표는 행동 우선순위를 왜곡한다.

8.2 “캐시가 크면 무조건 좋다”

캐시 읽기 단가는 낮지만 쓰기는 더 비싸다. 특히 1시간 캐시는 동일 접두부를 세 번 이상 재사용할 가능성이 낮다면 무캐시보다 비쌀 수 있다. 큰 문서를 모두 고정 접두부에 넣는 대신, 자주 재사용되는 규칙과 도구 정의만 캐시하고 프로젝트 자료는 검색으로 가져오는 편이 낫다. 캐시 적중률이 높아도 불필요한 내용을 계속 읽고 있다면 아키텍처가 효율적이라고 할 수 없다.

8.3 “긴 세션이 기억을 보존한다”

긴 세션은 대화 원문을 보존하지만 결정의 선명도를 보장하지 않는다. 서로 모순되는 과거 지시, 폐기된 가설, 긴 도구 출력이 모두 살아 있으면 모델은 최신 상태를 찾는 데 더 많은 문맥을 처리한다. 반대로 짧은 바톤이 목표·결정·증거·남은 작업을 정확히 담으면 원문 전체보다 운영 기억으로서 가치가 높다. 기억의 품질은 길이가 아니라 상태 전이의 충실도로 평가해야 한다.

9 저널 제작에 적용한 전후 시나리오

네 개 저널을 한 장기 세션에서 동시에 고치면 각 저장소의 원고, 렌더 로그, 데이터 검증 결과가 계속 누적된다. 네 번째 글을 작업할 때 첫 번째 글의 전체 원문까지 다시 보내는 구조가 된다. 작업 실패 후 같은 세션을 복제하면 큰 접두부 캐시가 다시 생성될 수도 있다.

이를 저널별 패킷으로 나누면 각 세션은 목표 파일 하나, 집 스타일 기준, 데이터 원천, 검증 명령만 읽는다. 완성 후에는 “수정 파일·핵심 판단·렌더 성공·미발행”을 2KB 안팎 바톤으로 남긴다. 다음 저널은 이전 원문이 아니라 이 상태 요약만 받는다. 최종 편집장은 네 바톤과 렌더본을 교차검수한다.

이 구조가 항상 최저 토큰은 아니다. 각 새 세션마다 공통 규칙을 다시 읽는 고정비가 있다. 그러나 실패 범위가 저널 하나로 격리되고, 잘못된 배경 작업이 네 저장소를 동시에 수정하는 위험이 줄어든다. 비용·정확도·복구성의 다목적 최적화에서는 최저 호출비보다 실패 한 건의 영향반경이 더 중요할 수 있다.

실무 적용 순서는 다음과 같다.

  1. 작업 시작 전에 산출물과 중단조건을 한 문장으로 고정한다.
  2. 필요한 파일을 검색하고 관련 구간만 읽는다.
  3. 계산은 로컬에서 수행하고 모델에는 집계값과 예외만 제공한다.
  4. 렌더·테스트가 끝나면 원시 로그 대신 통과 여부와 핵심 수치를 기록한다.
  5. 다음 작업이 이전 원문을 요구하지 않으면 새 세션으로 회전한다.

이 절차는 단순히 토큰을 아끼는 요령이 아니다. 잘못된 숫자가 긴 대화 속에서 반복 인용되고, 결국 출처처럼 굳어지는 현상을 막는 품질관리 장치다.

10 출처와 한계

관측 사용량은 로컬 Claude 세션 JSONL의 2026-08-02 호출 한 건에서 확인했다. 공개 가능한 근거는 비식별 감사 발췌에 보존했다. 사용량 이벤트는 requestId=req_011CddRZN9Eh3kfGYKFuhnuv, 이어진 Claude 429 이벤트는 requestId=req_011CddRbhPRjZuUn37iCbLY8이며, 대화 본문과 로컬 절대경로는 제외했다. 캐시 계수 설명은 Anthropic Prompt CachingAnthropic Pricing을 기준으로 했다. 접두부 안정성에 관한 비교 설명은 OpenAI Prompt Caching을 참고했다.

이 글의 시나리오는 실제 청구 예측기가 아니라 구조를 설명하는 파라미터 모델이다. 공급자별 단가·TTL·최소 캐시 길이·할인 규칙은 바뀔 수 있으므로 적용 시 공식 문서를 다시 확인해야 한다. 재시도 모델은 독립 실패를 가정한 이론값이며 실제 장애의 상관성을 과소평가할 수 있다.

중요결론

좋은 토큰 절약은 답을 짧게 만드는 기술이 아니다. 같은 문맥을 다시 만들지 않고, 재사용 횟수에 맞는 캐시를 선택하며, 실패를 분류해 멈추고, 세션을 재현 가능한 단위로 나누는 시스템 설계다.