WEBBOOK CHAPTER

AI 비용 폭탄을 막는 법: 3장 토큰 계산을 직접 검증한다

3장 토큰 계산을 직접 검증한다

lab/src/cost-engine.mjsestimateCost는 신선한 input, cached input, output을 분리한다.


const freshInput = inputTokens - cachedInputTokens;
const cost = (
  freshInput * price.inputPerMillion +
  cachedInputTokens * price.cachedInputPerMillion +
  outputTokens * price.outputPerMillion
) / 1_000_000;

예를 들어 input 1,000개 중 cached input이 600개이고 output이 100개라면, 전체 input을 일반 단가로 곱하면 캐시 효과를 과소평가한다. 반대로 provider가 실제로 cached token을 인정하지 않은 요청을 임의로 cached라고 기록하면 원가가 축소된다. response usage의 실제 값을 사용한다.

테스트는 계산 예시를 고정한다.


node --test test/cost-engine.test.mjs

실패 사례도 계약이다.

  • cached input이 input보다 많으면 CACHED_INPUT_EXCEEDS_INPUT
  • 음수 token이면 INVALID_*
  • 가격표에 없는 model이면 UNKNOWN_MODEL

부동소수점 금액은 표시 단계에서 반올림하되 원장에는 충분한 정밀도를 유지한다. 요청 하나의 작은 오차가 수백만 건에서 커질 수 있다. 통화 환산은 요청 시점마다 하지 말고 재무가 승인한 일별 또는 월별 환율과 기준일을 장부에 기록한다.