Tipp: Neu bei Failproof AI Observability? Diese Seite ist die vollständige SDK-Event-Referenz.
Installation
Das SDK wird Kunden als privates Wheel und nicht über einen öffentlichen Paketindex bereitgestellt. Ihr Onboarding erklärt, wie Sie es beziehen, installieren und versionieren — sprechen Sie Ihren Failproof AI-Ansprechpartner an, wenn Sie Zugang benötigen. Sobald es installiert ist, überprüfen Sie die Installation:Schnellstart
Einen echten Aufruf instrumentieren
In der Praxis wrappen Sie Ihren bestehenden Agenten-Code. Umschließen Sie einen Modellaufruf mitmodel_request davor und model_response danach, sodass die beiden Events die eigentliche Anfrage umspannen und Failproof AI Observability sie einander zuordnen kann:
tool_use und tool_result, wobei Sie eine tool_call_id für das jeweilige Paar wiederverwenden.
So sehen diese Events aus, sobald sie das Dashboard erreichen — farblich nach Typ kodiert und nach Umgebung, Agent und Session filterbar:

configure()
event.*-Aufruf aufrufen. Kann weggelassen werden; die Standardwerte funktionieren sofort. Alle Argumente sind Keyword-only; übergeben Sie sie wie oben gezeigt mit Namen.
Wenn base_dir None ist (Standard), liest das SDK $AGENTEYE_HOME, falls gesetzt,
und fällt andernfalls auf ~/.agenteye zurück. Dies entspricht der eigenen Auflösungslogik des Collectors,
sodass eine einzelne AGENTEYE_HOME-Umgebungsvariable den gemeinsamen Event-Spool für
das SDK und den Collector konfiguriert.
Umgebung
Versehen Sie jedes Event mit einem Deployment-Environment-Label (production, staging, qa, canary usw.). Einmal setzen; das SDK hängt es automatisch an jedes Event an.
Option 1: über configure():
configure(environment=...) hat Vorrang vor der Umgebungsvariable. Wenn keines von beidem gesetzt ist, wird standardmäßig "dev" verwendet.
Der Environment-Wert erscheint als erstklassiger Filter im Dashboard und wird für schnelle Abfragen auf dem Server gespeichert.
Warnung: Environment-Werte dürfen kein wörtliches,-Komma enthalten. Die Dashboard-Filter verwenden kommagetrennte Mehrfachauswahl in der URL (?environment=prod,staging), sodass ein Environment namensprod,bluein zwei Werte aufgeteilt würde. Events mit Komma-enthaltenden Environments werden beim Ingest abgelehnt.
Daten und Datenschutz
Das SDK zeichnet nur die Felder auf, die Sie explizit übergeben. Prompts, Nachrichten, Tool-Eingaben und -Ausgaben sowie Modellinhalt werden ausschließlich erfasst, weil Sie sie einemevent.*-Aufruf übergeben. Es wird nichts aus Ihrem Prozess gelesen oder implizit erfasst. Jedes Feld, das Sie weglassen, wird vollständig aus dem Event ausgelassen; es wird nicht auf die Festplatte geschrieben.
Das macht die Schwärzung zu Ihrer Wahl und Verantwortung. Wenn ein Prompt oder ein Tool-Payload personenbezogene Daten oder Geheimnisse enthält, die Sie lieber nicht speichern möchten, entfernen oder maskieren Sie diese, bevor Sie sie an die Event-Methode übergeben.
Event-Referenz
Die meisten Events kommen in Start/End-Paaren, die eine Korrelations-ID teilen:tool_use und tool_result teilen eine tool_call_id, hook_triggered und hook_completed teilen eine hook_id, und human_wait und human_input teilen eine input_id. Senden Sie das Start-Event, führen Sie die Arbeit aus und senden Sie dann das End-Event mit derselben ID. Failproof AI Observability ordnet das Paar zu und berechnet duration_ms für Sie — Sie übergeben duration_ms daher nie selbst.

Alle Methoden akzeptieren auch beliebige
**kwargs für benutzerdefinierte Metadaten (siehe Benutzerdefinierte Felder).
event.agent_start()
Wird ausgelöst, wenn ein Agent mit der Arbeit beginnt.
event.agent_end()
Wird ausgelöst, wenn ein Agent die Arbeit beendet.
event.tool_use()
Wird ausgelöst, wenn ein Agent ein Tool aufruft. In Kombination mit tool_result verwendet; das SDK berechnet duration_ms automatisch.
event.tool_result()
Wird ausgelöst, wenn ein Tool eine Antwort zurückgibt. Korreliert mit tool_use über tool_call_id.
event.model_request()
Wird unmittelbar vor dem Senden eines Prompts an ein LLM ausgelöst.
messages-Einträge akzeptieren entweder einen einfachen String als content oder Anthropic-Stil Listen von Content-Blöcken als content. Sampling-Parameter (temperature, max_tokens usw.) können als zusätzliche kwargs übergeben werden.
event.model_response()
Wird ausgelöst, wenn das LLM eine Antwort zurückgibt.
content akzeptiert entweder einen einfachen String (generische Provider) oder eine Liste von Anthropic-Stil Content-Blöcken. Tool-Aufrufe befinden sich innerhalb von content als {"type": "tool_use", ...}-Blöcke, ohne ein separates tool_calls-Feld.
event.hook_triggered()
Wird ausgelöst, wenn ein Hook feuert. In Kombination mit hook_completed verwendet; das SDK berechnet duration_ms automatisch.
event.hook_completed()
Wird ausgelöst, wenn ein Hook abgeschlossen ist. Korreliert mit hook_triggered über hook_id.
event.error()
Wird ausgelöst, wenn ein unbehandelter Fehler auftritt.
Human-in-the-Loop-Events
Human-in-the-Loop-Events geben Ihnen Einblick in die Momente, in denen eine Person in die Ausführung des Agenten eingreift (warten auf Genehmigung, Eingaben bereitstellen, pausieren oder den Agenten stoppen). Sie ermöglichen es Ihnen zu messen, wie lange Menschen für eine Antwort benötigen (das SDK berechnetduration_ms bei gepaarten Events automatisch), zu prüfen, wer einen Agenten pausiert oder unterbrochen hat, und Genehmigungs- und Überwachungs-Workflows zu erstellen, die im Dashboard angezeigt werden.
event.human_wait()
Wird ausgelöst, wenn der Agent die Ausführung unterbricht, um auf eine menschliche Eingabe zu warten. In Kombination mit human_input verwendet; das SDK berechnet duration_ms (wie lange der Mensch für eine Antwort benötigte) automatisch.
event.human_input()
Wird ausgelöst, wenn ein Mensch eine Eingabe bereitstellt und der Agent die Ausführung fortsetzt. Korreliert mit human_wait über input_id. duration_ms wird automatisch berechnet und darf nicht vom Aufrufer übergeben werden.
event.human_pause()
Wird ausgelöst, wenn ein Mensch den Agenten aktiv pausiert (z. B. über eine Dashboard-Steuerung). Der Agent wird angehalten, aber nicht beendet.
event.human_interrupt()
Wird ausgelöst, wenn ein Mensch den Agenten mitten in der Ausführung aktiv stoppt. Im Gegensatz zu human_pause wird die Arbeit des Agenten beendet und nicht nur ausgesetzt.
Benutzerdefinierte Felder
Alle zusätzlichen Keyword-Argumente werden nach den Standardfeldern an das Event angehängt:timestamp, type und environment sind reserviert und lösen einen ValueError aus (Reserved field names cannot be used as custom fields: [...]), wenn sie als benutzerdefinierte Felder übergeben werden. session_id und agent_id sind Pflichtparameter bei jeder Event-Methode und können nicht ein zweites Mal übergeben werden; Python löst in diesem Fall einen TypeError aus. Setzen Sie die Umgebung stattdessen mit configure(environment=...) (oder der AGENTEYE_ENVIRONMENT-Variable).
Halten Sie Payloads als strukturiertes JSON, wenn Sie deren Felder abfragen möchten. Werte, die JSON nicht nativ unterstützt — wie Datetimes, UUIDs, Decimals, Sets, Bytes oder Modell-Objekte — werden in Strings konvertiert, damit die Aufzeichnung sicher fortgesetzt werden kann.
Wie Events geschrieben werden
Events werden prozessintern gepuffert und alleflush_interval Sekunden (Standard: 500 ms) auf die Festplatte geschrieben. Jeder Flush schreibt eine JSONL-Datei:
Nächste Schritte
- Event-Stream: Beobachten Sie, wie diese Events live ankommen, farblich kodiert und nach Umgebung, Agent und Session filterbar.
- Sessions: Sehen Sie, wie die gepaarten Events jeden Agentenlauf als Ausführungsgraph und Zeitleiste rekonstruieren.

