routeur_ia_api / services /usage_utils.py
Cyril Dupland
refactor transcription: update meeting transcription model to 'gpt-4o-mini-transcribe', enhance TranscriptionResponse and JobStatusResponse models with metadata fields, and implement usage normalization utilities for improved tracking and reporting.
1f2c8d1
raw
history blame
1.06 kB
"""Utilities for normalizing LLM usage metadata."""
from typing import Dict, Any
def normalize_usage(usage: Dict[str, Any]) -> Dict[str, int]:
"""Normalize usage keys to input/output/total integers.
Supports variants like prompt_tokens/completion_tokens while being defensive.
"""
try:
input_val = usage.get("input_tokens")
if not isinstance(input_val, (int, float)):
input_val = usage.get("prompt_tokens", 0)
output_val = usage.get("output_tokens")
if not isinstance(output_val, (int, float)):
output_val = usage.get("completion_tokens", 0)
total_val = usage.get("total_tokens")
if not isinstance(total_val, (int, float)):
total_val = (int(input_val or 0)) + (int(output_val or 0))
return {
"input_tokens": int(input_val or 0),
"output_tokens": int(output_val or 0),
"total_tokens": int(total_val or 0),
}
except Exception:
return {"input_tokens": 0, "output_tokens": 0, "total_tokens": 0}