VoiceBooker

Fortgeschrittener Multi-Stage-Bot

In diesem Tutorial bauen wir einen komplexeren Voicebot/Agent, der auf mehreren Stages basiert.

Warum Multi-Stage-Bots verwenden

Theoretisch ist es möglich, komplexe Call Flows mit nur einer Stage allein durch Prompts zu bauen. LLMs neigen jedoch häufig zu Halluzinationen und nehmen andere als die gewünschten Pfade. Um das zu vermeiden, können wir mehrere Stages verwenden, wobei jede Stage einen eigenen Dialog in einer Anrufsession darstellt. Außerdem hat jede Stage ihren eigenen Prompt, mit dem wir dem LLM genau sagen, was es tun soll.

Stellen wir uns einen Termin-Voicebot vor. Der Voicebot fragt den Benutzer zunächst, ob er einen Termin buchen oder eine Buchung stornieren möchte. Wenn der Benutzer einen Termin buchen möchte, fragt der Bot in der ersten Stage nach der Art des Termins und dem gewünschten Tag, während er in der zweiten Stage alle Informationen zur buchenden Person sammelt, z. B. Name, E-Mail, Telefonnummer.

Im Fall einer Stornierung würde der Bot zunächst den Namen des Anrufers abfragen, um den Benutzer zu identifizieren, und dann bestehende Buchungen abrufen, auflisten und den Benutzer fragen, welche konkrete Buchung er stornieren möchte.

Um das Multi-Stage-Verhalten zu veranschaulichen, erweitern wir den Single-Stage-Bot aus dem ersten Tutorial und teilen die Informationssammlung in zwei Stages auf: Zuerst fragen wir den Anrufer nach seinem Namen und wechseln dann zur nächsten Stage, um das Geburtsdatum abzufragen.

Bot einrichten/konfigurieren

Zuerst definieren/verwenden wir die Welcome Stage und legen den folgenden Prompt fest:

Du bist ein Voicebot, der einige Benutzer-/Kundendaten sammelt.
Du antwortest auf Deutsch.
Du antwortest kurz und in einem sehr freundlich-konversationellen Stil.
Beantworte jede Frage, die außerhalb des Zwecks liegt, den Namen und Geburtstag des Kunden zu sammeln, mit: Ich weiß es nicht.
Erfinde keine Antworten.

Begrüße den Benutzer und frage nach seinem Namen.

Beachten Sie, dass wir die Anweisung an das LLM nur auf die Namensabfrage verkürzt haben, aber nicht auf das Geburtsdatum, da diese Information in der zweiten Stage abgefragt wird, nachdem wir den Namen erfolgreich gesammelt und zur nächsten Stage gewechselt haben.

Wir fügen dann eine zweite Stage hinzu und nennen diese Stage DOB, lassen sie aber zunächst leer.

Als Nächstes definieren wir im Tools-Abschnitt eine Funktion collectName mit dem Parameter name als string und geben eine passende Beschreibung an.

Die Tools sollten anschließend wie folgt konfiguriert werden:

Beachten Sie, dass wir außerdem einen Key/Path definieren, in dem die gesammelten Informationen, also der Name, im State gespeichert werden sollen. Und wir definieren einen Übergang zur zuvor erstellten Stage Stage DOB, da wir anschließend das Geburtsdatum sammeln möchten.

Schließlich implementieren wir die Funktion collectName, die wir im Tools-Abschnitt definiert haben. In unserem Beispiel geben wir nichts zurück, da der Voicebot im nächsten Schritt direkt nach dem Geburtsdatum fragen wird.

function collectName(args) {
    return { "text": "" };
}

Jetzt definieren/verwenden wir die DOB Stage und legen die folgenden Tools fest:

Schließlich implementieren wir die Funktion collectDOB, die wir im Tools-Abschnitt definiert haben. In unserem Beispiel antworten wir mit "Danke!" und legen auf.

function collectDOB(params) {
    return { text: "Danke!", action: "hangup" };
}

Den Bot im Playground testen

Wie im folgenden Gespräch zu sehen, begrüßt der Bot den Anrufer und fragt nach seinem Namen und seinem Geburtstag. Sobald der Benutzer/Anrufer die erforderlichen Informationen angegeben hat, antwortet der Bot mit einem Dank und wiederholt den angegebenen Namen.

Auf dieser Seite