Zustand/State
Einführung
KI-Assistenten werden in der Regel verwendet, um verschiedene Daten von Kunden, Mandanten oder Patienten zu erfassen. Zum Beispiel werden Kunden nach ihrem Namen, Geburtsdatum und dem Produkt gefragt, das sie buchen oder stornieren möchten, sowie nach dem bevorzugten Zeitfenster. Patienten äußern hingegen Rezeptwünsche.
Diese Daten werden in der Regel über die definierten Aktionen/Werkzeuge/Tools erfasst, wobei die Parameter bzw. Variablen dann die Informationen enthalten, die das LLM aus den Antworten des Kunden extrahiert hat.
Um diese Daten zwischen Funktionsaufrufen und Stages zu speichern sowie an Backendsysteme (z. B. CRM-, Ticket- oder PVS-Systeme) zu übergeben/verschicken (z. B. via Webhook), gibt es ein sogenanntes State-Objekt, das während der gesamten Anrufsitzung aktiv ist und zum Speichern und Abrufen dieser Informationen verwendet werden kann.
Das Zustands-/State-Objekt
Das State-Objekt ist ein einfaches JavaScript-Objekt, das zum Speichern flacher oder auch verschachtelter Informationen verwendet werden kann.
Zu Anrufbeginn enthält das Objekt bereits Standardinformationen wie z. B. die Telefonnummer des Anrufers, sofern dieser diese nicht unterdrückt hat.
{
"call": {
"from": "+49-351-1234567",
"to": "+49-351-7654321"
}
}No-Code Ansatz
Datenerfassung passiert während einer Aktion, d. h. eines Funktionsaufrufs.
Daher ist es möglich, direkt im Abschnitt Aktionen/Werkzeuge/Tools einer Funktionsdefinition/-konfiguration festzulegen, wo die erfassten Informationen im Zustands-/State-Objekt gespeichert werden sollen:

Der Schlüssel/Pfad definiert, wo die erfassten/extrahierten Daten im State-Objekt gespeichert werden. Die Punktnotation erlaubt das Speichern in einer verschachtelten Datenstruktur.
Low-Code Ansatz
Zustand/State aktivieren
Um auf das Zustands-/State-Objekt in einem dynamischen Prompt oder in einem Funktionsaufruf eines Aktionen/Werkzeuge/Tools zugreifen zu können, muss der State explizit aktiviert werden:
Aktivierung für eine Funktion eines dynamischen Prompts

Aktivierung für eine Funktion einer Aktion/eines Werkzeugs/Tools

Zustand/State nutzen/verändern
Beispiel
Nehmen wir an, die Funktion collectName erfasst den Namen eines Anrufers und stellt diesen als name-Feld im params-Objekt bereit. Dann kann dieser Name im Zustand/State wie folgt gespeichert werden:
function collectName(params) {
if (!params["state"]["user"]) params["state"]["user"] = {};
params["state"]["user"]["name"] = params["name"];
return { state: params["state"] };
}Nach der Funktionsausführung enthält das State-Objekt dann folgende Informationen:
{
"call": {
"from": "+49-351-1234567",
"to": "+49-351-7654321"
},
"user": {
"name": "Max"
}
}Wichtig: Nach einer Änderung muss das geänderte State-Objekt - ähnlich wie beim Stack - zurückgegeben werden, sonst sind die Änderungen in nachfolgenden Funktionsaufrufen und Stages nicht sichtbar.