starfriend's picture
Upload 6 files
4273dfe verified
Raw History Blame Contribute Delete
1.1 kB
"""Safe usage summaries; no prompts or credential values are stored.
Provide provider-specific prices through environment variables if desired;
otherwise estimated_cost_usd is None (not an asserted price).
"""
import os
def estimate_cost_usd(provider: str, usage: dict):
prefix = provider.upper()
in_price = os.getenv(f"{prefix}_INPUT_USD_PER_M")
out_price = os.getenv(f"{prefix}_OUTPUT_USD_PER_M")
if not in_price or not out_price:
return None
n_in = usage.get("input_tokens")
n_out = usage.get("output_tokens")
if n_in is None or n_out is None:
return None
try:
cost = (n_in * float(in_price) + n_out * float(out_price)) / 1_000_000
return round(cost, 8)
except (ValueError, TypeError):
return None
def usage_summary(result: dict):
return {
"provider": result["provider"],
"model": result["model_requested"],
"elapsed_s": result.get("elapsed_s"),
"usage": result.get("usage", {}),
"estimated_cost_usd": estimate_cost_usd(result["provider"], result.get("usage", {})),
}