Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

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


Usage Protocol/Nutzungsstatistiken protokollieren

Technischer Name: agorum.ai.usage_protocol

Anzeigename: Nutzungsstatistiken protokollieren

Hinweis: Dieser Handler ist standardmäßig nicht aktiviert und erfordert ein zentrales agorum core pro System mit entsprechendem REST-Service zum Sammeln der Nutzungsprotokolle. Bei Interesse wenden Sie sich bitte an agorum®.

Was macht der Handler?

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

Voraussetzungen

Wann wird gesendet?

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:

Empfohlener Einsatzzweck

Der Handler eignet sich ideal für:

Einstellungen

Parameter Beschreibung
url
(Pflicht)
Die Endpunkt-URL, an die die Nutzungsdaten per HTTP POST gesendet werden.

Beispiel: https://api.example.com/usage
apiKey
(Optional)
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.
identifier
(Optional)
String-Identifikator, der in beiden POSTs mitgesendet wird. Kann zur Kategorisierung oder Kennzeichnung der Protokolleinträge verwendet werden.

Beispiele: Abteilung-Vertrieb oder Projekt-X
initialTextLength
(Optional)
Maximale Anzahl an Zeichen, die vom ersten Benutzertext erfasst und mitgesendet werden sollen. Längere Texte werden abgeschnitten und mit "..." gekennzeichnet.

Standard: 100

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,
  "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"
}