k
korAI
고급 전체
🔥 고급2026-04-139분

LLM 비용 관측 — 엔드포인트·사용자·기능별 단가를 실시간으로 본다

월말에 청구서 보고 놀라면 늦다. 호출마다 비용을 차원 태그와 함께 적재하는 관측 파이프라인.

운영비용최적화observability

왜 미리 보나

  • 비용 이상 탐지: 특정 사용자가 갑자기 10배 쓰면 1시간 안에 알림
  • 기능별 ROI: "요약 기능이 월 $3k 쓰는데 유료 전환율 0.2%" 같은 의사결정
  • 프롬프트 비용 회귀: 프롬프트를 바꿨더니 평균 토큰이 30% 증가했더라

표준 로깅 스키마

interface LLMCall {
  ts: Date
  request_id: string
  session_id: string
  user_id: string
  feature: string          // "summary" | "classifier" | "agent_loop"
  model: string            // "claude-sonnet-4-6"
  input_tokens: number
  output_tokens: number
  cache_read_tokens: number
  cache_write_tokens: number
  cost_usd: number
  latency_ms: number
  stop_reason: string
  tool_calls: string[]     // 사용된 도구 이름
}

호출 래퍼

const PRICING: Record<string, { in: number; out: number; cacheRead: number; cacheWrite: number }> = {
  "claude-opus-4-7":   { in: 5,  out: 25, cacheRead: 0.5,  cacheWrite: 6.25 },
  "claude-sonnet-4-6": { in: 3,  out: 15, cacheRead: 0.3,  cacheWrite: 3.75 },
  "claude-haiku-4-5":  { in: 1,  out: 5,  cacheRead: 0.1,  cacheWrite: 1.25 },
}

async function callAndLog(feature: string, userId: string, params: any) {
  const t0 = Date.now()
  const msg = await client.messages.create(params)
  const u = msg.usage
  const p = PRICING[params.model]
  const cost =
    (u.input_tokens / 1e6) * p.in +
    (u.output_tokens / 1e6) * p.out +
    ((u.cache_read_input_tokens ?? 0) / 1e6) * p.cacheRead +
    ((u.cache_creation_input_tokens ?? 0) / 1e6) * p.cacheWrite

  await logger.info({
    feature, user_id: userId, model: params.model,
    input_tokens: u.input_tokens,
    output_tokens: u.output_tokens,
    cache_read_tokens: u.cache_read_input_tokens ?? 0,
    cache_write_tokens: u.cache_creation_input_tokens ?? 0,
    cost_usd: cost,
    latency_ms: Date.now() - t0,
    stop_reason: msg.stop_reason,
  })
  return msg
}

저장소

  • : ClickHouse / BigQuery — 분 단위 집계, 대시보드
  • 콜드: S3/Parquet — 월 단위 감사

핵심 대시보드 4개

  1. 시간당 총 비용 — 이상 탐지 임계선
  2. feature × model 히트맵 — 어느 기능이 Opus를 많이 쓰나
  3. 사용자 Top 20 — abuse 의심 탐지
  4. 캐시 적중률 — 시스템 프롬프트 설계 회귀 감시

알림 규칙 예

  • 시간당 비용이 지난 7일 평균의 2σ 이상 → Slack
  • 단일 사용자가 5분 내 $10 초과 → 자동 제한 + 관리자 알림
  • 캐시 적중률이 전일 대비 30% 하락 → 엔지니어 온콜

예측·예산

월초에 "이 달 추세대로면 $X 쓸 것" 값을 매일 계산해 대시보드에 띄워라. 청구서 공포 사라진다.

체크리스트

  • [ ] 모든 호출이 래퍼 통과
  • [ ] feature·user·model 태그
  • [ ] cost_usd 저장 (토큰만 저장 X)
  • [ ] 시간당 이상 탐지 알림
  • [ ] 월별 예상 비용 계산