hmc-rag / src /usage.py
webmuppet
Initial commit — health marketing compliance RAG
bad8b6c
"""Token usage extraction helpers for litellm responses."""
def _extract_usage(response) -> dict:
"""Extract token usage from a litellm response object."""
if hasattr(response, "usage") and response.usage:
return {
"prompt_tokens": response.usage.prompt_tokens or 0,
"completion_tokens": response.usage.completion_tokens or 0,
"total_tokens": response.usage.total_tokens or 0,
}
return _empty_usage()
def _empty_usage() -> dict:
"""Return a zeroed usage dict."""
return {"prompt_tokens": 0, "completion_tokens": 0, "total_tokens": 0}
def _sum_usage(*usages: dict) -> dict:
"""Sum multiple usage dicts."""
return {
"prompt_tokens": sum(u.get("prompt_tokens", 0) for u in usages),
"completion_tokens": sum(u.get("completion_tokens", 0) for u in usages),
"total_tokens": sum(u.get("total_tokens", 0) for u in usages),
}