1-2. 실시간 비용·토큰 모니터링¶
권장 구성: 응답이 끝나는 순간 usage × 단가표로 요청별 비용을 계산해 Log Analytics에 쌓고, 합계와 경고는 그 위에서 만듭니다. Azure Cost Management는 일별로 대사하는 기준으로 둡니다.
“메트릭의 토큰 사용량 × 단가”는 분 단위 근사 집계로 쓸 수 있지만, 다음 이유로 보조 수단입니다.
| 단가에 영향을 주는 요소 | 영향 | 이 데모에서의 처리 |
|---|---|---|
| 캐시 토큰 | 캐시 입력 단가는 일반 입력 단가의 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입니다.
- 응답 usage를 기준으로 삼습니다. streaming에서는
stream_options.include_usage로 마지막 chunk의 usage를 받습니다. - 단가를 코드에 박지 않습니다. 모델 + 버전 + 배포 유형 + 리전 + tier + context 구간 + 유효 기간을 키로 한 단가표를 두고 Azure Retail Prices API로 주기 갱신합니다. 가격은 실제로 바뀝니다.
- 모르면 0이 아니라 미산정(null)입니다. usage가 없는 400·429·타임아웃, 단가가 없는 모델, 범위 밖 요청을 무료로 표시하지 않습니다.
- 기록 시점의 단가 버전을 보존합니다. 단가를 바꿔도 과거 데이터를 조용히 덮어쓰지 않습니다.
- 추정과 청구를 분리해 표시하고 매일 대사합니다. 차이는 계약가·할인·tier·롱컨텍스트·반영 지연에서 나옵니다.
- 수집 지연과 usage 확보율도 감시합니다. 비용 합계가 낮게 보이는 이유가 실제로 적게 쓴 것인지, 수집이 늦은 것인지 구분해야 합니다.
- 여러 호출자가 계측을 우회하면 Azure Metrics가 전체 볼륨의 기준입니다. 공통 진입점(APIM 등)을 두면 계측 범위를 넓힐 수 있습니다.