"""API-Kosten Tool — OpenRouter Guthaben und Verbrauch abfragen.""" import requests from core import config TOOLS = [ { "type": "function", "function": { "name": "get_api_costs", "description": "OpenRouter API-Kosten und Guthaben abfragen. Zeigt Verbrauch (heute/Woche/Monat), Restguthaben und Hochrechnung.", "parameters": { "type": "object", "properties": {}, }, }, }, ] def _get_key(): cfg = config.parse_config() return cfg.api_keys.get("openrouter_key", "") def handle_get_api_costs(**kw): key = _get_key() if not key: return "OpenRouter API Key fehlt in homelab.conf" headers = {"Authorization": f"Bearer {key}"} try: r_key = requests.get("https://openrouter.ai/api/v1/auth/key", headers=headers, timeout=10) r_key.raise_for_status() key_data = r_key.json().get("data", {}) except Exception as e: return f"API-Abfrage fehlgeschlagen: {e}" try: r_credits = requests.get("https://openrouter.ai/api/v1/credits", headers=headers, timeout=10) r_credits.raise_for_status() credit_data = r_credits.json().get("data", {}) except Exception: credit_data = {} usage_daily = key_data.get("usage_daily", 0) usage_weekly = key_data.get("usage_weekly", 0) usage_monthly = key_data.get("usage_monthly", 0) total_credits = credit_data.get("total_credits", 0) total_usage = credit_data.get("total_usage", 0) remaining = total_credits - total_usage if total_credits else None monthly_forecast = usage_daily * 30 if usage_daily > 0 else 0 lines = [ "OpenRouter API-Kosten", "", f"Heute: ${usage_daily:.4f}", f"Woche: ${usage_weekly:.4f}", f"Monat: ${usage_monthly:.4f}", ] if monthly_forecast > 0: lines.append(f"Prognose (30d): ${monthly_forecast:.2f}") lines.append("") if remaining is not None: lines.append(f"Guthaben: ${total_credits:.2f}") lines.append(f"Verbraucht: ${total_usage:.2f}") lines.append(f"Restguthaben: ${remaining:.2f}") if usage_daily > 0 and remaining > 0: days_left = remaining / usage_daily lines.append(f"Reicht noch: ~{days_left:.0f} Tage (bei aktuellem Verbrauch)") else: lines.append("Guthaben: unbegrenzt (kein Limit gesetzt)") return "\n".join(lines) HANDLERS = {"get_api_costs": handle_get_api_costs}