Spaces:
Sleeping
Sleeping
File size: 1,097 Bytes
4273dfe | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | """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", {})),
}
|