add Gemini, Anthropic

This commit is contained in:
2026-07-14 09:25:44 +07:00
parent 1d628e435e
commit a552f3bb60
+23 -5
View File
@@ -254,6 +254,24 @@ def insert_usage(raw_items):
ts_utc = parse_rfc3339(payload.get("timestamp")) ts_utc = parse_rfc3339(payload.get("timestamp"))
ts_local = ts_utc.astimezone(LOCAL_TZ) ts_local = ts_utc.astimezone(LOCAL_TZ)
tokens = payload.get("tokens") or {} tokens = payload.get("tokens") or {}
# Handle different token field naming conventions across providers
# OpenAI/Codex: input_tokens, output_tokens, total_tokens, reasoning_tokens, cached_tokens
# Gemini/Google: prompt_tokens, completion_tokens, total_tokens
# Anthropic: input_tokens, output_tokens
# Generic fallback: try multiple possible field names
def get_token_int(*keys, default=0):
for k in keys:
v = tokens.get(k)
if v is not None:
return int(v)
return default
input_tokens = get_token_int("input_tokens", "prompt_tokens")
output_tokens = get_token_int("output_tokens", "completion_tokens")
reasoning_tokens = get_token_int("reasoning_tokens")
cached_tokens = get_token_int("cached_tokens")
total_tokens = get_token_int("total_tokens")
api_key = payload.get("api_key") or "" api_key = payload.get("api_key") or ""
api_hash = hashlib.sha256(api_key.encode()).hexdigest()[:12] if api_key else "" api_hash = hashlib.sha256(api_key.encode()).hexdigest()[:12] if api_key else ""
values = { values = {
@@ -272,11 +290,11 @@ def insert_usage(raw_items):
"api_key_hash": api_hash, "api_key_hash": api_hash,
"failed": 1 if payload.get("failed") else 0, "failed": 1 if payload.get("failed") else 0,
"latency_ms": int(payload.get("latency_ms") or 0), "latency_ms": int(payload.get("latency_ms") or 0),
"input_tokens": int(tokens.get("input_tokens") or 0), "input_tokens": input_tokens,
"output_tokens": int(tokens.get("output_tokens") or 0), "output_tokens": output_tokens,
"reasoning_tokens": int(tokens.get("reasoning_tokens") or 0), "reasoning_tokens": reasoning_tokens,
"cached_tokens": int(tokens.get("cached_tokens") or 0), "cached_tokens": cached_tokens,
"total_tokens": int(tokens.get("total_tokens") or 0), "total_tokens": total_tokens,
"raw_json": raw, "raw_json": raw,
} }
try: try: