Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core Module und Plugins > ALBERT | AI Suite > ALBERT | AI KI-Handler einrichten


KI-Handler Usage Protocol

Hinweis: Diese Dokumentation bezieht sich auf die aktuellste Version des Plugins ALBERT | AI Suite. Aktualisieren Sie das hier beschriebene Plugin, um die Dokumentation verwenden zu können.

Hinweis: Den Endpunkt zum Sammeln der Nutzungsprotokolle bringt die ALBERT | AI Kostenkontrolle mit. Sie wird mit der ALBERT | AI Suite ausgeliefert, ist aber im Auslieferungszustand nicht aktiv, eingeschaltet wird sie über die Maske Lokale Zählung, siehe ALBERT | AI Kostenkontrolle einrichten. Der Endpunkt kann dabei das eigene System sein oder ein anderes agorum core pro System, etwa für eine zentrale Auswertung.

Hinweis: Eine passende Handler-Konfiguration wird mitgeliefert: agorum_ai_usage_protocol_default. Adresse und Zugangsschlüssel trägt die Maske Lokale Zählung beim Aktivieren selbst ein; der Schlüssel wird dabei automatisch ausgestellt und verschlüsselt gespeichert. Eine eigene Konfiguration brauchen Sie nur, wenn Sie an ein anderes System melden wollen.

Der Handler protokolliert die Nutzung des KI-Assistenten und sendet Nutzungsstatistiken als JSON per HTTP POST an einen externen Endpunkt.

Eine allgemeine Beschreibung von KI-Handlern finden Sie unter ALBERT | AI KI-Handler einrichten.

Wie die gesendeten Daten anschließend ausgewertet werden – mit Filtern, Kosten-Diagramm und Anomalie-Erkennung –, beschreibt ALBERT | AI Kostenkontrolle verwenden.

Eigenschaft Wert
Anzeigename in der Oberfläche KI Nutzungs- & Kostenanalyse: Nutzung und Kosten protokollieren
Technischer Handler-Name agorum.ai.usage.protocol (Name der mitgelieferten Konfiguration: agorum_ai_usage_protocol_default)
Standardmäßig aktiv ja
Eingriffspunkte (Hooks) before, after, error, stop

Wann verwenden

Funktionsweise

Der Handler agorum_ai_usage_protocol sendet in folgenden Situationen Nutzungsstatistiken:

  1. Chat-Start / Resume (Running-Ping): Sobald ein Chat startet oder nach einem Stopp mit einer neuen Benutzer-Nachricht wieder anläuft, sendet der Handler einen kompakten POST mit running:true. 
  2. Chat-Ende (Final-POST): Ein Chat gilt als abgeschlossen, wenn der letzte Verlaufseintrag mit Rolle assistant keine Tool-Calls enthält (toolCalls leer oder nicht vorhanden). Dann sendet der Handler den Abschluss-POST mit running:false.
  3. Fehlerfall: Wenn ein KI-Aufruf endgültig scheitert (z. B. Timeout, ungültiges Preset, API-Fehler), sendet der Handler ebenfalls einen Final-POST mit running:false und zusätzlichen Fehlerfeldern. Der Running-Marker wird dabei zurückgesetzt, damit im Backend kein Eintrag auf running:true hängen bleibt.

Voraussetzungen

Sub-Agent-Erkennung / Tracing

Aufrufe, die als Sub-Agent laufen (z. B. über das Tool call_preset oder interne Sub-Chats wie Titel-Generierung, Fehlerübersetzung oder History-Compaction), werden erkannt. Beide POST-Varianten enthalten zusätzlich Felder, um einen Tracing-Baum über mehrere Chats rekonstruieren zu können:

Provider/Modell, Fallback und Kosten

Erfasste Daten

Chat-Titel

Beide POST-Varianten enthalten den chat_title. Der Wert wird aus der Information in der Chat-Historie gelesen, die bei der Titelgenerierung angelegt wird. Im Before-Hook liegt dieser Eintrag typischerweise noch nicht vor,  dann ist chat_title null. 

chat_kind

Beide POST-Varianten enthalten chat_kind, um die Art des Chat-Aufrufs zu unterscheiden. Mögliche Werte:

Einzelpreise im Final-POST (prices)

Der Final-POST enthält zusätzlich das Objekt prices mit den in der KI-Voreinstellung eingestellten Einzelpreisen. So kann der empfangende Endpunkt eigene Kostenberechnungen anstellen und die bereits gelieferte Summe cost nachvollziehen.

Das Objekt prices enthält folgende Felder:

Feld Beschreibung
input Preis pro 1 Million Input-Tokens (Tokens, die an das Modell gesendet werden).
output Preis pro 1 Million Output-Tokens (Tokens, die vom Modell generiert werden).
cacheRead Preis pro 1 Million Tokens beim Lesen aus dem Cache.
cacheWrite Preis pro 1 Million Tokens beim Schreiben in den Cache.
albertOutput Preis pro 1 Million ALBERT-Output-Tokens (sichtbarer KI-Output auf Basis von result.text inkl. Tool-Calls; ohne reasoningText).
toolCalls Preis pro 1.000 Tool-Aufrufe.
conversionFactor Umrechnungsfaktor, falls die Preise in eine andere Währung umgerechnet werden sollen. Entspricht dem Feld cost_conversion_factor.
currency Währung, in der die Preise angegeben sind (z. B. EUR, USD).

Hinweise:

  • Bei aktivem Sticky-Fallback werden automatisch die Preise des tatsächlich verwendeten Fallback-Presets übermittelt.
  • Sind in der KI-Voreinstellung keine Preise konfiguriert, wird prices als null gesendet. Damit unterscheidet der Endpunkt, ob „keine Preise“ gesetzt sind oder ob alle Preise auf 0 stehen.
  • Der Running-Ping (Chat-Start/Resume) enthält weiterhin keine Preis- oder Kosteninformationen.
  • Die Änderung ist vollständig abwärtskompatibel: Alle bisherigen Felder (cost, currency, cost_conversion_factor, Token- und Tool-Felder) bleiben unverändert erhalten.

Gesendete Datenstruktur

Der Handler sendet folgende JSON-Struktur an den konfigurierten Endpunkt.

Running-Ping (Chat-Start/Resume)

Beispielhafte Struktur (kompakt, ohne Token-/Kosten-Aggregate):

{
  "running": true,
  "chat_id": "UUID des Chats",
  "chat_title": null,
  "chat_kind": "mainAgent",
  "sub_agent": false,
  "parent_chat_id": null,
  "parent_preset": null,
  "used_preset": "Name der verwendeten KI-Voreinstellung (Preset)",
  "model_preset": "Name des aufgelösten Modell-Presets (inkl. Fallback)",
  "provider": "Provider-Name (tatsächlich verwendet)",
  "model": "Modellname (tatsächlich verwendet)",
  "identifier": "Konfigurierter Identifikator",
  "initial_text": "Anfang der Benutzeranfrage...",
  "start": "2026-02-12T10:00:00.000Z",
  "user_name": "benutzername",
  "user_id": "UUID des Benutzers"
}
  

Final-POST (Chat-Ende oder Fehlerfall)

Der Final-POST enthält die aggregierten Nutzungsdaten. Bei Fehlern kommen zusätzlich error_type und error_text hinzu.

{
  "running": false,
  "protocol_id": "(optional) Protokoll-ID, falls im Verlauf gesetzt",
  "used_preset": "Name der verwendeten KI-Voreinstellung (Preset)",
  "model_preset": "Name des aufgelösten, tatsächlich verwendeten Modell-Presets (inkl. Fallback)",
  "provider": "Provider-Name (tatsächlich verwendet)",
  "model": "Modellname (tatsächlich verwendet)",
  "tokens_input": 1234,
  "tokens_output": 567,
  "tokens_albert_output": 890,
  "tokens_cache_read": 100,
  "tokens_cache_write": 50,
  "tool_call_count": 3,
  "cost": 0.0045,
  "currency": "EUR",
  "cost_conversion_factor": 1,
  "prices": {
    "input": 3.00,
    "output": 15.00,
    "cacheRead": 0.30,
    "cacheWrite": 3.75,
    "albertOutput": 0,
    "toolCalls": 0,
    "conversionFactor": 1,
    "currency": "EUR"
  },
  "identifier": "Konfigurierter Identifikator",
  "initial_text": "Anfang der Benutzeranfrage...",
  "id": "Eindeutige ID des Nutzungsprotokolls",
  "start": "2026-02-12T10:00:00.000Z",
  "end": "2026-02-12T10:01:30.000Z",
  "user_name": "benutzername",
  "user_id": "UUID des Benutzers",
  "chat_id": "UUID des Chats",
  "chat_title": "Generierter Chat-Titel",
  "chat_kind": "mainAgent",
  "sub_agent": false,
  "parent_chat_id": null,
  "parent_preset": null,
  "error_type": "(optional) result.error.type",
  "error_text": "(optional) result.error.text"
}

Zusätzliche Nutzungsaufzeichnung für Werkzeugaufrufe über MCP

Ist dieser Handler global hinterlegt und aktiv, empfängt der konfigurierte Endpunkt zusätzlich eine eigene Nutzungsaufzeichnung für Werkzeugaufrufe, die über die MCP-Schnittstelle bei agorum core eingehen (wenn agorum core selbst als MCP-Server verwendet wird). 

Einstellungen

Einstellung Parameter Standard Beschreibung
Endpunkt-URL url keiner Pflichtangabe. Die Endpunkt-URL, an die die Nutzungsdaten per HTTP POST gesendet werden.

Beispiel: https://api.example.com/usage
API-Key (Bearer Token) apiKey keiner API-Key (Bearer Token) zur Authentifizierung gegenüber dem Endpunkt. Falls angegeben, wird der Header Authorization: Bearer <apiKey> mitgesendet.

Das Feld wird verschlüsselt gespeichert.
Identifikator identifier keiner String-Identifikator, der in beiden POSTs mitgesendet wird. Kann zur Kategorisierung oder Kennzeichnung der Protokolleinträge verwendet werden.

Beispiele: Abteilung-Vertrieb oder Projekt-X
Max. Zeichen für Anfangstext initialTextLength 100 Maximale Anzahl an Zeichen, die vom ersten Benutzertext erfasst und mitgesendet werden sollen. Längere Texte werden abgeschnitten und mit "..." gekennzeichnet.

In einer KI-Voreinstellung verwenden

  1. Öffnen Sie ☰ > Administration > Konfiguration > KI-Voreinstellungen.
  2. Wählen Sie die gewünschte KI-Voreinstellung aus und klicken Sie Bearbeiten.
  3. Scrollen Sie zum Bereich KI-Handler und klicken Sie auf KI-Handler hinzufügen.
  4. Wählen Sie den KI-Handler KI Nutzungs- & Kostenanalyse: Nutzung und Kosten protokollieren in der Liste aus.
  5. Speichern Sie die KI-Voreinstellung.

    Ergebnis: Der Handler sendet Nutzungsstatistiken der Chats mit dieser KI-Voreinstellung als JSON per HTTP POST an den konfigurierten Endpunkt.

Kombination mit anderen Handlern

Frage Antwort
Reihenfolge Keine Besonderheiten bekannt.
Geeignete Kombinationen Keine Besonderheiten bekannt.
Nicht kombinieren mit Keine Besonderheiten bekannt.