Stacks & Call Flows
Voice Agents/Bots in VoiceBooker bestehen aus mehreren Stages. Stages können aktiv sein, d. h. die Prompts und Tools sowie Funktionen sind Teil der LLM-Anfrage, sodass das LLM Ihre Funktionen abhängig von ihrem Zweck aufrufen und ausführen kann.
Der Stack ist eine einfache String-Liste, die alle Namen der aktuell aktiven Stages enthält. Prompts, Tools und Funktionen werden in der Reihenfolge der Stages im Stack zur LLM-Anfrage hinzugefügt. Das heißt: Die Stage, die im Stack zuletzt steht, ist die aktuellste – ihr Prompt wird zuletzt hinzugefügt und definiert das Verhalten der Konversation bzw. des LLM.
Stack-Änderungen – Stage-Übergänge
Um einen Call Flow zu definieren, kann jede Funktion optional den Stack-Zustand als Teil der Parameter erhalten. Dieser Parameter ist ein String-Array und kann durch Hinzufügen oder Entfernen von Einträgen verändert und zurückgegeben werden. Damit können Entwickler komplexe Voice-Agent/Bot-Flows erstellen. Beispielsweise wird ein Bestandskunde, der einen Vertrag kündigen möchte, nach anderen Informationen gefragt als ein Kunde, der ein bestimmtes Produkt buchen möchte.
No-Code-Stage-Übergänge
Stage-Übergänge passieren während einer Aktion, d. h. eines Funktionsaufrufs.
Daher ist es möglich, einen Stage-Übergang direkt im Abschnitt Tools einer Funktionsdefinition/-konfiguration festzulegen:
Zuerst definieren Sie die nächste Stage, die dem Stack hinzugefügt werden soll, also die nächste aktive Stage.
Zweitens können Sie mit Drop current stage angeben, ob die aktuelle Stage aus dem Stack entfernt werden soll. Dadurch sind deren Tools/Funktionen nicht mehr verfügbar.
Codebasierte Stage-Übergänge
Um Stage-Übergänge programmatisch durchzuführen, müssen Sie zunächst das Stack-Flag für die Funktion aktivieren, damit der Stack als Parameter im Funktionsaufruf übergeben wird.
Das folgende Beispiel zeigt, wie die Stage "Next Stage" zum Stack hinzugefügt und beim Verlassen der Funktion zurückgegeben wird:
function someFunction(params) {
params["stack"].push("Next Stage");
return { stack: params["stack"] };
}