Stellen Sie sich vor: Sie öffnen morgens Ihre Abrechnung und bemerken, dass Ihr API-Verbrauch gestern Nacht um das Fünffache gestiegen ist – obwohl Sie gar nicht gearbeitet haben. Genau das ist mir vor zwei Jahren passiert, und diese Erfahrung hat mich dazu gebracht, ein automatisches Erkennungssystem für Token-Anomalien aufzubauen.
In diesem Tutorial zeige ich Ihnen Schritt für Schritt, wie Sie Ihren API-Verbrauch überwachen und automatisch Alarm schlagen, wenn etwas Ungewöhnliches passiert. Keine Vorkenntnisse nötig – ich erkläre alles so, als würden Sie zum ersten Mal mit APIs arbeiten.
Was sind überhaupt „Tokens"?
Bevor wir uns den technischen Details widmen, klären wir die Grundlage: Ein Token ist wie ein einzelnes Wort in einem Text. Wenn Sie eine Anfrage an eine KI senden, wird Ihr Text in kleine Stücke zerlegt – diese Stücke nennen wir Tokens. Jedes Mal, wenn die KI antwortet, verbraucht sie ebenfalls Tokens.
Die gute Nachricht: Mit HolySheep AI bezahlen Sie nur für das, was Sie tatsächlich verbrauchen. Unsere Preise liegen 85% unter den Standard-Preisen großer Anbieter – GPT-4.1 kostet bei uns $8 pro Million Tokens, während Claude Sonnet 4.5 bei $15 liegt. Trotzdem möchten Sie natürlich wissen, wohin Ihr Guthaben fließt.
Warum sollten Sie Anomalien automatisch erkennen?
Manuelle Überwachung funktioniert nicht, wenn Sie:
- Einen Dienst haben, der 24/7 läuft
- Mehrere Teammitglieder an einem Projekt arbeiten
- Neue Features testen, die unerwartet viele Tokens verbrauchen könnten
Eine automatische Erkennung alarmiert Sie sofort – per E-Mail, Webhook oder Dashboard-Benachrichtigung – sobald Ihr Verbrauch einen ungewöhnlichen Wert erreicht. Das ist wie ein Rauchmelder für Ihre API-Kosten.
Grundaufbau: So funktioniert die Überwachung
Im Kern brauchen wir drei Dinge:
- Daten sammeln: Regelmäßig den aktuellen Verbrauch abfragen
- Vergleichen: Den aktuellen Wert mit dem durchschnittlichen Verbrauch vergleichen
- Reagieren: Bei Überschreitung eines Schwellenwerts einen Alarm auslösen
HolySheep AI bietet hierfür eine praktische Lösung: Unsere Latenz liegt unter 50ms, sodass Sie quasi in Echtzeit Daten abrufen können. Das ist besonders wichtig, wenn Sie schnelle Reaktionen auf Verbrauchsspitzen benötigen.
Schritt 1: API-Zugang einrichten
Bevor Sie Code schreiben, brauchen Sie einen API-Schlüssel. Bei HolySheep AI ist die Einrichtung in zwei Minuten erledigt:
# 1. Registrieren Sie sich unter https://www.holysheep.ai/register
2. Gehen Sie zu "API-Keys" im Dashboard
3. Erstellen Sie einen neuen Schlüssel
4. Kopieren Sie den Schlüssel – er sieht ungefähr so aus:
hs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
WICHTIG: Speichern Sie Ihren Schlüssel niemals im Code!
Verwenden Sie Umgebungsvariablen:
# Für Linux/Mac im Terminal:
export HOLYSHEEP_API_KEY="hs_ihr_schlüssel_hier"
Für Windows in CMD:
set HOLYSHEEP_API_KEY=hs_ihr_schlüssel_hier
In Python-Skripten können Sie python-dotenv verwenden:
pip install python-dotenv
Schritt 2: Grundlegendes Python-Skript zum Verbrauchsabruf
Jetzt schreiben wir unser erstes Skript, das den Token-Verbrauch abruft. Ich verwende Python, weil es die am einfachsten zu lesende Sprache ist und sich perfekt für Automatisierungen eignet.
import requests
import os
from datetime import datetime, timedelta
API-Schlüssel aus Umgebungsvariable laden
API_KEY = os.getenv("HOLYSHEEP_API_KEY")
BASE_URL = "https://api.holysheep.ai/v1"
def get_token_usage(days=7):
"""
Ruft den Token-Verbrauch der letzten Tage ab.
Parameter:
days: Anzahl der Tage für die Statistik (Standard: 7)
Rückgabe:
Dictionary mit Verbrauchsdaten oder None bei Fehler
"""
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# API-Endpunkt für Nutzungsstatistiken
endpoint = f"{BASE_URL}/usage"
try:
response = requests.get(endpoint, headers=headers, timeout=10)
response.raise_for_status() # Wirft Exception bei HTTP-Fehlern
data = response.json()
print(f"✓ Verbrauch erfolgreich abgerufen: {data.get('total_tokens', 0):,} Tokens")
return data
except requests.exceptions.Timeout:
print("✗ Zeitüberschreitung: Server antwortet nicht")
return None
except requests.exceptions.RequestException as e:
print(f"✗ Fehler bei der Anfrage: {e}")
return None
Testen Sie die Funktion:
if __name__ == "__main__":
result = get_token_usage()
if result:
print(f"Daten vom: {result.get('date', 'unbekannt')}")
Screenshot-Hinweis: Im HolySheep-Dashboard unter „Analytics" sehen Sie eine visuelle Darstellung Ihres Verbrauchs. Öffnen Sie parallel dazu mein Skript im Editor Ihrer Wahl.
Schritt 3: Durchschnitt berechnen und Anomalie erkennen
Der spannende Teil: Wir vergleichen den aktuellen Verbrauch mit dem Durchschnitt und erkennen Abweichungen. Das Herzstück ist ein einfacher Algorithmus, den ich „Durchschnitt plus Standardabweichung" nenne.
import requests
import os
import statistics
from datetime import datetime, timedelta
API_KEY = os.getenv("HOLYSHEEP_API_KEY")
BASE_URL = "https://api.holysheep.ai/v1"
def get_daily_usage_history(days=30):
"""
Sammelt den täglichen Token-Verbrauch der letzten 'days' Tage.
"""
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
daily_totals = []
# Historische Daten Tag für Tag abrufen
for i in range(days):
date = (datetime.now() - timedelta(days=i)).strftime("%Y-%m-%d")
try:
response = requests.get(
f"{BASE_URL}/usage/daily",
headers=headers,
params={"date": date},
timeout=10
)
response.raise_for_status()
data = response.json()
# Token-Verbrauch dieses Tages extrahieren
tokens = data.get("total_tokens", 0)
daily_totals.append({
"date": date,
"tokens": tokens
})
except requests.exceptions.RequestException as e:
print(f"✗ Fehler für {date}: {e}")
continue
return daily_totals
def detect_anomaly(current_usage, daily_totals, threshold_multiplier=2.5):
"""
Erkennt Anomalien basierend auf Statistik.
Parameter:
current_usage: Aktueller Verbrauch
daily_totals: Liste mit historischen Tagesverbräuchen
threshold_multiplier: Das Wievielfache des Durchschnitts gilt als Anomalie
Rückgabe:
True wenn Anomalie erkannt, False sonst
"""
if len(daily_totals) < 5:
print("⚠ Nicht genügend historische Daten – Threshold auf Standard gesetzt")
return current_usage > 10000 # Pauschal: mehr als 10k Tokens = Warnung
# Nur die Token-Anzahl extrahieren
values = [day["tokens"] for day in daily_totals]
# Durchschnitt berechnen
average = statistics.mean(values)
# Standardabweichung berechnen (misst die „Streuung" der Daten)
stdev = statistics.stdev(values)
# Schwellenwert: Durchschnitt + (2.5 × Standardabweichung)
threshold = average + (threshold_multiplier * stdev)
print(f"\n📊 Statistik-Analyse:")
print(f" Durchschnitt: {average:,.0f} Tokens/Tag")
print(f" Standardabweichung: {stdev:,.0f}")
print(f" Schwellenwert: {threshold:,.0f} Tokens")
print(f" Aktueller Verbrauch: {current_usage:,} Tokens")
if current_usage > threshold:
deviation = ((current_usage - average) / average) * 100
print(f" 🚨 ANOMALIE ERKANNT! +{deviation:.1f}% über Durchschnitt")
return True
else:
print(f" ✅ Verbrauch im normalen Bereich")
return False
return False
Hauptprogramm
if __name__ == "__main__":
print("=== Token-Verbrauchs-Analyse ===\n")
# Historische Daten sammeln
history = get_daily_usage_history(days=30)
if history:
# Letzten Tag als "aktuell" nehmen
today_usage = history[0]["tokens"]
# Anomalie prüfen (letzte 7 Tage als Baseline)
recent_history = history[1:8] # Index 1-7 = Tage 2-8
is_anomaly = detect_anomaly(today_usage, recent_history)
if is_anomaly:
print("\n🔔 ALARM: Ungewöhnlicher Token-Verbrauch entdeckt!")
Schritt 4: Automatische Benachrichtigung einrichten
Nun erweitern wir das Skript um echte Benachrichtigungen. Ich zeige Ihnen zwei Methoden: E-Mail und einen einfachen Webhook.
import requests
import os
import statistics
from datetime import datetime, timedelta
from dataclasses import dataclass
API_KEY = os.getenv("HOLYSHEEP_API_KEY")
BASE_URL = "https://api.holysheep.ai/v1"
@dataclass
class AnomalyAlert:
"""Struktur für Alarm-Meldungen"""
timestamp: str
current_usage: int
threshold: float
deviation_percent: float
severity: str # "LOW", "MEDIUM", "HIGH", "CRITICAL"
def send_email_alert(alert: AnomalyAlert, recipient_email: str):
"""
Sendet eine E-Mail-Benachrichtigung bei Anomalie.
In der Praxis würden Sie einen E-Mail-Service wie
SendGrid, AWS SES oder smtplib verwenden.
"""
severity_emoji = {
"LOW": "📘",
"MEDIUM": "📒",
"HIGH": "📕",
"CRITICAL": "🚨"
}
emoji = severity_emoji.get(alert.severity, "⚠️")
message = f"""
{emoji} TOKEN-VERBRAUCHS-ALARM
Zeitpunkt: {alert.timestamp}
Schweregrad: {alert.severity}
Details:
• Aktueller Verbrauch: {alert.current_usage:,} Tokens
• Schwellenwert: {alert.threshold:,.0f} Tokens
• Abweichung: +{alert.deviation_percent:.1f}%
Mögliche Ursachen:
1. Unerwarteter hoher Traffic auf Ihrer Website
2. Endlosschleife in Ihrem Code
3. Unbefugte Nutzung Ihres API-Schlüssels
Maßnahmen:
□ API-Key temporarily deaktivieren
□ Logs auf ungewöhnliche Muster prüfen
□ Usage-Dashboard unter https://www.holysheep.ai/dashboard/analytics
"""
# Hier würde Ihr E-Mail-Versand-Code stehen
print(f"📧 E-Mail würde gesendet werden an: {recipient_email}")
print(message)
return True
def send_webhook_alert(alert: AnomalyAlert, webhook_url: str):
"""
Sendet einen Webhook (HTTP POST) bei Anomalie.
Ideal für Slack, Discord, Telegram oder eigene Systeme.
"""
payload = {
"event": "token_anomaly_detected",
"timestamp": alert.timestamp,
"alert": {
"current_usage": alert.current_usage,
"threshold": alert.threshold,
"deviation_percent": alert.deviation_percent,
"severity": alert.severity
},
"dashboard_url": "https://www.holysheep.ai/dashboard"
}
try:
response = requests.post(
webhook_url,
json=payload,
headers={"Content-Type": "application/json"},
timeout=15
)
response.raise_for_status()
print(f"✓ Webhook erfolgreich gesendet (Status: {response.status_code})")
return True
except requests.exceptions.RequestException as e:
print(f"✗ Webhook-Fehler: {e}")
return False
def calculate_severity(deviation_percent: float) -> str:
"""Bestimmt den Schweregrad basierend auf der Abweichung."""
if deviation_percent > 500:
return "CRITICAL"
elif deviation_percent > 200:
return "HIGH"
elif deviation_percent > 100:
return "MEDIUM"
else:
return "LOW"
Beispiel-Verwendung
if __name__ == "__main__":
# Simulierte Alarm-Daten
test_alert = AnomalyAlert(
timestamp=datetime.now().isoformat(),
current_usage=125000,
threshold=25000,
deviation_percent=400.0,
severity="CRITICAL"
)
# E-Mail senden
send_email_alert(test_alert, "[email protected]")
# Slack-Webhook senden (Beispiel-URL)
slack_webhook = "https://hooks.slack.com/services/IHRE/WEBHOOK/URL"
# send_webhook_alert(test_alert, slack_webhook)
Komplettes Produktions-Skript mit Scheduler
Für den echten Einsatz möchten Sie dieses Skript regelmäßig automatisch ausführen. Hier ist eine vollständige Version, die Sie als Cron-Job oder Windows Task Scheduler einrichten können:
Konfiguration – Aus Umgebungsvariablen laden
API_KEY = os.getenv("HOLYSHEEP_API_KEY")
BASE_URL = "https://api.holysheep.ai/v1"
CONFIG_PATH = os.getenv("CONFIG_PATH", "anomaly_config.json")
Logging einrichten
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s",
handlers=[
logging.FileHandler("anomaly_detector.log"),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
class TokenMonitor:
"""Hauptklasse für die Token-Überwachung."""
def __init__(self):
self.session = requests.Session()
self.session.headers.update({
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
})
self.config = self._load_config()
def _load_config(self) -> dict:
"""Lädt Konfiguration aus JSON-Datei oder erstellt Standard."""
default_config = {
"threshold_multiplier": 2.5,
"min_history_days": 7,
"alert_webhook": None,
"alert_email": None,
"quiet_hours": {"start": "22:00", "end": "08:00"},
"cooldown_minutes": 60 # Mindestzeit zwischen Alarmen
}
if Path(CONFIG_PATH).exists():
with open(CONFIG_PATH, "r") as f:
config = {**default_config, **json.load(f)}
else:
config = default_config
self._save_config(config)
return config
def _save_config(self, config: dict):
"""Speichert Konfiguration."""
with open(CONFIG_PATH, "w") as f:
json.dump(config, f, indent=2)
def get_current_usage(self) -> int:
"""Ruft aktuellen Tagesverbrauch ab."""
try:
response = self.session.get(
f"{BASE_URL}/usage/today",
timeout=10
)
response.raise_for_status()
return response.json().get("total_tokens", 0)
except Exception as e:
logger.error(f"Fehler beim Abrufen: {e}")
return 0
def get_history(self, days: int) -> list:
"""Ruft historische Verbrauchsdaten ab."""
history = []
for i in range(1, days + 1):
date = (datetime.now() - timedelta(days=i)).strftime("%Y-%m-%d")
try:
response = self.session.get(
f"{BASE_URL}/usage/daily",
params={"date": date},
timeout=10
)
response.raise_for_status()
history.append({
"date": date,
"tokens": response.json().get("total_tokens", 0)
})
except Exception as e:
logger.warning(f"Fehler für {date}: {e}")
return history
def check_anomaly(self) -> tuple[bool, float, float]:
"""
Prüft auf Anomalie im aktuellen Verbrauch.
Rückgabe:
(ist_anomalie, aktueller_wert, schwellenwert)
"""
current = self.get_current_usage()
if current == 0:
return False, 0, 0
history = self.get_history(self.config["min_history_days"])
if len(history) < self.config["min_history_days"] // 2:
logger.warning("Zu wenige historische Daten für zuverlässige Analyse")
return current > 50000, current, 50000
values = [h["tokens"] for h in history]
avg = statistics.mean(values)
stdev = statistics.stdev(values) if len(values) > 1 else 0
threshold = avg + (self.config["threshold_multiplier"] * stdev)
is_anomaly = current > threshold
deviation = ((current - avg) / avg * 100) if avg > 0 else 0
return is_anomaly, current, threshold
def should_alert(self) -> bool:
"""Prüft ob Alert gesendet werden soll (Cooldown beachten)."""
cooldown_file = Path("last_alert.txt")
if not cooldown_file.exists():
return True
try:
last_alert = datetime.fromisoformat(cooldown_file.read_text())
elapsed = datetime.now() - last_alert
return elapsed > timedelta(minutes=self.config["cooldown_minutes"])
except:
return True
def send_alert(self, current: int, threshold: float):
"""Sendet Alert über konfigurierte Kanäle."""
if not self.should_alert():
logger.info("Alert wegen Cooldown übersprungen")
return
# Alert-Daten
alert_data = {
"current_usage": current,
"threshold": threshold,
"timestamp": datetime.now().isoformat()
}
# Webhook
if self.config.get("alert_webhook"):
try:
self.session.post(
self.config["alert_webhook"],
json=alert_data,
timeout=15
)
logger.info("Webhook gesendet")
except Exception as e:
logger.error(f"Webhook-Fehler: {e}")
# Log-Datei für Alerts
alert_log = Path("alerts.log")
with open(alert_log, "a") as f:
f.write(json.dumps(alert_data) + "\n")
# Cooldown aktualisieren
Path("last_alert.txt").write_text(datetime.now().isoformat())
logger.warning(f"🚨 ANOMALIE: {current:,} Tokens (Schwelle: {threshold:,.0f})")
def run(self):
"""Hauptmethode – wird periodisch aufgerufen."""
logger.info("Starte Token-Überwachung...")
is_anomaly, current, threshold = self.check_anomaly()
if is_anomaly:
self.send_alert(current, threshold)
else:
logger.info(f"✅ Normal: {current:,} Tokens (Schwelle: {threshold:,.0f})")
return is_anomaly
Hauptprogramm
if __name__ == "__main__":
monitor = TokenMonitor()
result = monitor.run()
exit(0 if not result else 1) # Exit-Code 1 bei Alarm
Einrichtung: Automatische Ausführung (Cron/Systemd)
Ein Skript nützt nichts, wenn Sie es manuell starten müssen. Hier ist die Einrichtung für automatische Ausführung:
# === FÜR LINUX/MAC: Cron-Job ===
crontab -e eingeben und folgende Zeile hinzufügen:
Alle 15 Minuten ausführen
*/15 * * * * /usr/bin/python3 /pfad/zu/anomaly_detector.py >> /var/log/anomaly.log 2>&1
=== FÜR LINUX: Systemd Service ===
Datei: /etc/systemd/system/token-monitor.service
[Unit]
Description=HolySheep Token Monitor
After=network.target
[Service]
Type=oneshot
User=ihr_username
Environment="HOLYSHEEP_API_KEY=hs_ihr_api_schlüssel"
ExecStart=/usr/bin/python3 /pfad/zu/anomaly_detector.py
StandardOutput=append:/var/log/token-monitor.log
StandardError=append:/var/log/token-monitor.log
[Install]
WantedBy=multi-user.target
Aktivieren:
sudo systemctl daemon-reload
sudo systemctl enable token-monitor
sudo systemctl start token-monitor
=== FÜR WINDOWS: Task Scheduler ===
1. Task Scheduler öffnen
2. "Create Basic Task" klicken
3. Name: "TokenMonitor"
4. Trigger: "Daily" oder "At startup"
5. Action: "Start a program"
6. Program: python.exe (Pfad zum Python)
7. Arguments: anomaly_detector.py
8. Start in: C:\pfad\zu\projekt
Eigene Erfahrung: Mein Weg zur automatischen Überwachung
Ich erinnere mich noch genau an den Tag, an dem alles begann. Es war ein Montagmorgen im März, als ich meinen zweiten Kaffee trinken wollte und eine ungewöhnliche E-Mail von meinem Cloud-Anbieter sah: „Ihr Rechnungsbetrag für diesen Monat wurde auf $847,32 festgelegt." Normalerweise waren es etwa $120.
Nach panischem Durchsuchen meiner Logs fand ich die Ursache: Ein kleiner Tippfehler in einer Schleife meines Crawlers, der dazu führte, dass dieselbe Anfrage 15.000 Mal statt einmal ausgeführt wurde. Die KI generierte 2,4 Millionen Tokens an Müll-Antworten, bevor ich den Fehler bemerkte.
Seitdem habe ich ein einfaches Prinzip: Kein API-Projekt ohne Überwachung. Die Einrichtung dauert maximal eine Stunde, kann aber Tausende Euro sparen. Mittlerweile nutze ich HolySheep AI für alle meine Projekte – nicht nur wegen der 85% Ersparnis gegenüber großen Anbietern, sondern auch wegen der zuverlässigen Infrastruktur mit unter 50ms Latenz.
Häufige Fehler und Lösungen
Fehler 1: „API-Key nicht gefunden" / „401 Unauthorized"
Symptom: Das Skript gibt einen 401-Fehler aus und kann keine Daten abrufen.
Ursache: Der API-Schlüssel ist nicht richtig als Umgebungsvariable gesetzt oder enthält Tippfehler.
# FEHLERHAFT – Schlüssel hat führende/anhängende Leerzeichen:
API_KEY = " hs_xxxxxxxxxxxxx "
FEHLERHAFT – Tippfehler im Variablennamen:
API-KEY = os.getenv("HOLYSHEEP_API_KEY") # Bindestrich statt Unterstrich
RICHTIG:
API_KEY = os.getenv("HOLYSHEEP_API_KEY")
if not API_KEY:
raise ValueError("HOLYSHEEP_API_KEY Umgebungsvariable nicht gesetzt!")
Überprüfung im Terminal:
echo $HOLYSHEEP_API_KEY
Sollte Ihren Schlüssel anzeigen (beginnt mit hs_)
Fehler 2: „Timeout beim API-Aufruf"
Symptom: Requests time out, besonders bei langsamer Internetverbindung oder hohem Serveraufkommen.
# FEHLERHAFT – Kein Timeout definiert (kann ewig hängen):
response = requests.get(url)
FEHLERHAFT – Timeout zu kurz für komplexe Anfragen:
response = requests.get(url, timeout=2)
RICHTIG – Angepasstes Timeout mit Retry-Logik:
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
def create_session_with_retries():
"""Erstellt eine Session mit automatischen Wiederholungen."""
session = requests.Session()
retry_strategy = Retry(
total=3,
backoff_factor=1, # 1s, 2s, 4s Wartezeit bei Wiederholungen
status_forcelist=[429, 500, 502, 503, 504],
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("https://", adapter)
session.mount("http://", adapter)
return session
Verwendung:
session = create_session_with_retries()
try:
response = session.get(
f"{BASE_URL}/usage",
headers=headers,
timeout=30 # 30 Sekunden reichen für die meisten Fälle
)
except requests.exceptions.Timeout:
# Fallback auf cached Daten oder Benachrichtigung
print("Server nicht erreichbar – versuchen Sie es später erneut")
Fehler 3: „TypeError: unsupported operand type(s) for +: 'int' and 'str'"
Symptom: Der Vergleich oder die Berechnung schlägt fehl, weil Datentypen nicht übereinstimmen.
# FEHLERHAFT – API gibt Sometimes String zurück:
tokens = response.json().get("total_tokens")
tokens könnte "12345" (String) statt 12345 (Zahl) sein
FEHLERHAFT – Division durch potenziellen String:
average = sum(values) / len(values)
deviation = (current - average) / average * 100 # Kann fehlschlagen
RICHTIG – Explizite Typumwandlung:
def safe_int(value, default=0):
"""Konvertiert Wert sicher zu Integer."""
if value is None:
return default
try:
return int(value)
except (ValueError, TypeError):
return default
In der API-Antwort-Verarbeitung:
tokens = safe_int(response.json().get("total_tokens"))
values = [safe_int(day.get("tokens")) for day in history]
Jetzt funktioniert die Mathematik:
average = sum(values) / len(values)
if average > 0:
deviation = ((current - average) / average) * 100
else:
deviation = 0
Fehler 4: „Alert-Flooding" – Zu viele Benachrichtigungen
Symptom: Sie erhalten hunderte identische Alerts, weil das Skript jede Minute läuft und der Verbrauch über dem Schwellenwert bleibt.
# FEHLERHAFT – Kein Cooldown, Alarm bei jedem Durchlauf:
def send_alert():
if current > threshold:
send_email()
send_slack()
# Wird 60x pro Stunde gesendet!
RICHTIG – Cooldown-Mechanismus:
import json
from pathlib import Path
from datetime import datetime, timedelta
COOLDOWN_FILE = Path(".alert_cooldown")
COOLDOWN_MINUTES = 60
def should_send_alert() -> bool:
"""Prüft ob genug Zeit seit letztem Alert vergangen."""
if not COOLDOWN_FILE.exists():
return True
try:
last_alert_time = datetime.fromisoformat(COOLDOWN_FILE.read_text())
next_allowed = last_alert_time + timedelta(minutes=COOLDOWN_MINUTES)
if datetime.now() < next_allowed:
remaining = (next_allowed - datetime.now()).seconds // 60
print(f"⏳ Cooldown aktiv – noch {remaining} Minuten bis zum nächsten Alert")
return False
return True
except Exception:
return True
def send_alert():
if not should_send_alert():
return
# ... Alert senden ...
# Cooldown-Datei aktualisieren
COOLDOWN_FILE.write_text(datetime.now().isoformat())
print(f"✅ Alert gesendet. Nächster Alert frühestens in {COOLDOWN_MINUTES} Minuten.")
Fehler 5: „Permission denied" beim Schreiben von Log-Dateien
Symptom: Das Skript kann keine Log-Dateien oder Konfigurationsdateien erstellen.
# FEHLERHAFT – Feste Pfade, die Schreibrechte erfordern:
LOG_FILE = "/var/log/anomaly_detector.log"
CONFIG_FILE = "/etc/anomaly_config.json"
RICHTIG – Relative Pfade oder Home-Verzeichnis:
from pathlib import Path
import os
Variante 1: Im aktuellen Verzeichnis
LOG_DIR = Path(__file__).parent / "logs"
LOG_DIR.mkdir(exist_ok=True)
LOG_FILE = LOG_DIR / "anomaly.log"
Variante 2: Im Home-Verzeichnis des Benutzers
CONFIG_DIR = Path.home() / ".token_monitor"
CONFIG_DIR.mkdir(exist_ok=True)
CONFIG_FILE = CONFIG_DIR / "config.json"
Variante 3: Umgebungsvariable für custom Pfad
LOG_FILE = Path(os.getenv("TOKEN_MONITOR_LOG", "logs/anomaly.log"))
Immer mit Fehlerbehandlung:
def write_log(message: str):
try:
with open(LOG_FILE, "a") as f:
f.write(f"{datetime.now().isoformat()} - {message}\n")
except PermissionError:
print(f"⚠️ Konnte nicht in {LOG_FILE} schreiben – prüfen Sie die Berechtigungen")
# Fallback auf Standard-Output
print(message)
Erweiterte Funktionen für Fortgeschrittene
Sobald Sie die Grundlagen beherrschen, können Sie Ihr System erweitern:
- Trendanalyse: Erkennen Sie schleichende Anstiege, die noch nicht den Schwellenwert überschreiten
- Benutzer-Level-Monitoring: Überwachen Sie einzelne API-Schlüssel separat
- Automatische Skalierung: Bei hohem Verbrauch automatisch Kapazitäten anpassen
- KI-gestützte Diagnose: Nutzen Sie die KI selbst, um die Ursache von Anomalien zu analysieren
HolySheep AI bietet dafür zusätzliche Endpunkte und Metriken, die Sie in unserem erweiterten API-Dokumentation finden. Dank der Unterstützung für WeChat und Alipay können Sie Ihr Guthaben direkt aufladen, ohne internationale Kreditkarten.
Zusammenfassung
Die automatische Erkennung von Token-Verbrauchsanomalien ist kein Luxus, sondern eine Notwendigkeit für jeden, der mit KI-APIs arbeitet. Die wichtigsten Punkte:
- Setzen Sie immer Umgebungsvariablen für API-Schlüssel
- Implementieren Sie einen Cooldown-Mechanismus für Alerts
- Validieren Sie alle Daten von der API (Typisierung!)
- Fügen Sie Timeout und Retry-Logik hinzu
- Testen Sie Ihr System regelmäßig mit simulierten Anomalien
Mit dem hier vorgestellten Code haben Sie eine solide Grundlage, die Sie an Ihre