콘텐츠로 이동

1-2. 실시간 비용·토큰 모니터링

토큰 × 단가 = 요청별 추정 비용

권장 구성: 응답이 끝나는 순간 usage × 단가표로 요청별 비용을 계산해 Log Analytics에 쌓고, 합계와 경고는 그 위에서 만듭니다. Azure Cost Management는 일별로 대사하는 기준으로 둡니다.

추정 USD = ((prompt − cached) × 입력단가 + cached × 캐시 입력단가 + completion × 출력단가) ÷ 1,000,000

“메트릭의 토큰 사용량 × 단가”는 분 단위 근사 집계로 쓸 수 있지만, 다음 이유로 보조 수단입니다.

단가에 영향을 주는 요소 영향 이 데모에서의 처리
캐시 토큰 캐시 입력 단가는 일반 입력 단가의 1/10로 게시됩니다(예: 0.20 → 0.02 USD/1M). cached 토큰은 prompt에 포함되어 있으므로 빼고 계산합니다. usage의 cached_tokens를 차감해 별도 단가 적용. 값이 없으면 전부 uncached로 계산한 상한 추정
캐시 쓰기 Azure 가격표에 별도 meter가 있고 입력 단가의 1.25배로 게시되어 있습니다. 구현하지 않음. 해당 토큰이 오면 미산정
롱컨텍스트 요청 1건의 입력 토큰 수로 short/long이 정해집니다(출력 무관). 게시 단가는 long이 입력 2배·출력 1.5배입니다. 합산 메트릭으로는 어떤 요청이 해당하는지 알 수 없습니다. prompt 4,096 토큰 이하만 단가 적용, 초과는 미산정. 임계 토큰 수는 모델별로 Azure 가격 페이지에서 확인
Reasoning 토큰 completion에 포함되어 출력 단가로 과금됩니다. 별도 처리 없음(이중 합산 금지)
배포 유형 Global, Data Zone, Regional 단가가 다릅니다. Data Zone은 게시 단가에서 Global보다 약 10% 높았습니다. 단가표 키에 포함. 데모는 GlobalStandard만
처리 모드 Flex는 Standard의 50%, Priority는 2배로 게시됩니다. 응답의 service_tier로 구분합니다. 기본 수식 밖(미지원). 사용한다면 service_tier를 로그에 남기고 단가를 분리

단가 수치는 2026-10-15에 조회한 Azure 게시 단가 기준입니다. 계약 가격과 다를 수 있으니 리전·배포 유형별로 확인하세요.

Best practice입니다.

  1. 응답 usage를 기준으로 삼습니다. streaming에서는 stream_options.include_usage로 마지막 chunk의 usage를 받습니다.
  2. 단가를 코드에 박지 않습니다. 모델 + 버전 + 배포 유형 + 리전 + tier + context 구간 + 유효 기간을 키로 한 단가표를 두고 Azure Retail Prices API로 주기 갱신합니다. 가격은 실제로 바뀝니다.
  3. 모르면 0이 아니라 미산정(null)입니다. usage가 없는 400·429·타임아웃, 단가가 없는 모델, 범위 밖 요청을 무료로 표시하지 않습니다.
  4. 기록 시점의 단가 버전을 보존합니다. 단가를 바꿔도 과거 데이터를 조용히 덮어쓰지 않습니다.
  5. 추정과 청구를 분리해 표시하고 매일 대사합니다. 차이는 계약가·할인·tier·롱컨텍스트·반영 지연에서 나옵니다.
  6. 수집 지연과 usage 확보율도 감시합니다. 비용 합계가 낮게 보이는 이유가 실제로 적게 쓴 것인지, 수집이 늦은 것인지 구분해야 합니다.
  7. 여러 호출자가 계측을 우회하면 Azure Metrics가 전체 볼륨의 기준입니다. 공통 진입점(APIM 등)을 두면 계측 범위를 넓힐 수 있습니다.