1. Übersicht
Zuletzt aktualisiert: 07.08.2023
Umfang
In diesem Codelab erstellen, stellen Sie einen einfachen virtuellen Kundenservicemitarbeiter in Dialogflow CX bereit und konfigurieren ihn, um Taucher bei Gruppenbuchungen und privaten Charterflügen zu unterstützen. Der virtuelle Kundenservicemitarbeiter verwendet generative KI und die neuesten generativen Large Language Models (LLMs) von Google, um Antworten zu generieren.
Lerninhalte
- Relevante APIs aktivieren
- So füllt Dialogflow automatisch Parameterwerte für Seitenformulare aus Intent-Parametern vorab aus
- Event-Handler in Dialogflow konfigurieren
- Generativen Fallback für Event-Handler mit fehlender Übereinstimmung aktivieren, die in Abläufen und beim Ausfüllen von Parametern verwendet werden
- Eigenen Text-Prompt konfigurieren, um sowohl grundlegende als auch agentspezifische Unterhaltungssituationen zu bewältigen
- Gute Intent- und Parameterbeschreibungen schreiben, um Aufforderungshandler für erforderliche Parameter zu generieren (zusätzlich zu nutzerdefinierten Aufforderungen)
- KI-Agent testen und Kundenfragen simulieren, die generativen Fallback auslösen
Voraussetzungen
- Google Cloud-Projekt
- Ein Browser wie Chrome
2. Einrichtung
Bevor Sie die Funktion für generativen Fallback in Dialogflow CX verwenden können, müssen Sie die Dialogflow API aktivieren.
Dialogflow API über die Cloud Console aktivieren
- Öffnen Sie die Google Cloud Console in Ihrem Browser.
- Rufen Sie in der Google Cloud Console die API-Bibliothek auf, um die APIs und Dienste zu durchsuchen, die aktiviert werden können.
- Suchen Sie in der Suchleiste oben auf der Seite „API-Bibliothek“ nach
Dialogflow APIund klicken Sie dann auf den entsprechenden Dienst. - Klicken Sie auf die Schaltfläche Aktivieren, um die Dialogflow API in Ihrem Google Cloud-Projekt zu aktivieren.
gcloud CLI verwenden (alternativ)
Alternativ kann die API mit dem folgenden gcloud-Befehl aktiviert werden:
gcloud services enable dialogflow.googleapis.com
Wenn die API erfolgreich aktiviert wurde, sollte eine Meldung wie die folgende angezeigt werden:
Operation "operations/..." finished successfully.
Code abrufen
Sie erstellen den virtuellen Kundenservicemitarbeiter nicht von Grund auf neu. Wir stellen Ihnen einen Agenten zur Verfügung, den Sie über die Dialogflow CX-Konsole wiederherstellen und dann verbessern müssen.
So laden Sie den Quellcode herunter:
- Öffnen Sie einen neuen Browsertab, rufen Sie das Agent-Repository auf und klonen Sie es über die Befehlszeile.
- Der ursprüngliche Agent wurde als JSON-Paket exportiert. Entpacken Sie die Datei, sehen Sie sich die Agenteneinstellungen an, werfen Sie einen Blick auf die Flussdefinition
Liveaboards.jsonund sehen Sie sich schließlich die Flussseiten, Intents und Entitäten an.
3. Neuen Agent erstellen
Dialogflow-Konsole öffnen
Für die verbleibenden Schritte in diesem Codelab verwenden Sie die Dialogflow CX-Konsole zusammen mit Ihrem Google Cloud-Projekt.
- Rufen Sie in Ihrem Browser die Dialogflow CX Console auf.
- Wählen Sie das Google Cloud-Projekt aus, das Sie verwenden möchten, oder erstellen Sie ein neues Projekt.
- In der Dialogflow CX-Konsole sollte eine Liste von Agents angezeigt werden.
Wenn Sie Dialogflow CX zum ersten Mal verwenden, finden Sie in der Dialogflow CX-Dokumentation weitere Informationen zum Konfigurieren Ihres Projekts und Ihrer Einstellungen entsprechend Ihren Anforderungen.
Neuen Dialogflow CX-Agent erstellen
- Wenn Sie den aus dem GitHub-Repository heruntergeladenen Agenten wiederherstellen möchten, müssen Sie einen neuen Agenten erstellen. Klicken Sie in der Dialogflow CX-Konsole rechts oben auf der Seite auf Neuen Agent erstellen.

- Wählen Sie die Option Eigenen KI-Agenten erstellen aus.

- Füllen Sie das Formular mit den unten stehenden Agent-Einstellungen aus und klicken Sie auf Erstellen, um den Agent zu erstellen.
- Wählen Sie als Anzeigenamen:
Divebooker - Wählen Sie als Standort
us-central1aus. - Bevorzugte Zeitzone auswählen
en - Englishals Standardsprache auswählen
- Dialogflow öffnet den Agent automatisch für Sie. Wir sind noch nicht fertig!
Divebooker-Agent wiederherstellen
- Kehren Sie zur Seite mit der Liste der KI-Agenten zurück und suchen Sie den Agent, den Sie gerade erstellt haben. Klicken Sie auf die Option
und dann auf die Schaltfläche Wiederherstellen. - Wählen Sie die Option Hochladen aus und ziehen Sie dann die ZIP-Datei, die Sie zuvor aus dem GitHub-Repository heruntergeladen haben, per Drag-and-drop in das Fenster oder wählen Sie sie aus.
- Klicken Sie auf die Schaltfläche Wiederherstellen, um den von uns bereitgestellten Agent zu importieren.

Gut gemacht! Sie haben Ihren virtuellen Agenten für Tauchreservierungen fertiggestellt, der Ihren Kunden helfen kann. Im nächsten Abschnitt testen Sie den KI-Agenten und sehen, wie gut er Nutzerfragen beantworten und bei Buchungsanfragen helfen kann.
4. KI-Agenten testen
Dialogflow bietet einen integrierten Simulator, mit dem Sie mit Ihren Agents chatten und Fehler aufdecken können. Für jede Runde können Sie die richtigen Werte für den ausgelösten Intent, die Agent-Antwort, die aktive Seite und die Sitzungsparameter prüfen.
Wir werden einige Szenarien testen und uns für jedes Szenario ansehen, warum der Agent eine bestimmte Antwort gibt. Beginnen wir mit dem ersten.
Nicht aufgelöster Intent
- Klicken Sie in der Dialogflow-Konsole in Ihrem Agent auf Agent testen, um den Simulator zu öffnen.

- Geben Sie eine Begrüßung für den Agenten ein, z. B.
Hello, und fragen Siewhat is a liveaboard?. Die Frage entspricht keinem Intent. Es wird ein allgemeiner Prompt wie „Tut mir leid, ich bin mir nicht sicher, wie ich helfen kann“ angezeigt. Sie können prüfen, ob das integrierte Ereignis „sys.no-match-default“ aufgerufen wurde, indem Sie die ursprüngliche Antwort im Simulator untersuchen.

Scrollen Sie fast bis zum Ende der JSON-Antwort. Wenn Dialogflow nach einem passenden Intent sucht, wird festgestellt, dass es sich um NO_MATCH handelt, und ein „No-Match“-Ereignis wird ausgelöst.

- Wechseln Sie zum Tab Build und öffnen Sie die Startseite des Ablaufs Liveaboards.

Standardmäßig hat jeder Flow Event-Handler für die integrierten Ereignisse „Keine Übereinstimmung“ und „Keine Eingabe“. Diese Event-Handler werden beim Erstellen eines Ablaufs automatisch erstellt und können nicht gelöscht werden.
- Klicken Sie auf den Event-Handler „sys.no-match-default“ und scrollen Sie nach unten zum Abschnitt Agent responses (Antworten des KI-Agenten). Dialogflow bietet eine Liste alternativer Antworten. Sie können aber auch verschiedene Arten von Antwortnachrichten definieren, um dem Endnutzer mehr als nur Textantworten zur Verfügung zu stellen.

Sehen wir uns nun den Happy Path an.
Der Happy Path
Stelle dich in diesem zweiten Fall als Taucher vor, der für eine Gruppe von 12 Personen eine Tauchsafari auf den Galapagosinseln im Juli nächsten Jahres buchen möchte.
- Klicken Sie im Bereich „Simulator“ auf das Symbol Zurücksetzen, um eine neue Unterhaltung mit dem Agent zu starten.


- Teilen Sie dem Kundenservicemitarbeiter mit, dass Sie einen Charterflug zu den Galápagos-Inseln buchen möchten, und geben Sie die Details Ihrer Reise an. Sie müssen nicht genau die unten stehenden Prompts verwenden. Probieren Sie einfach verschiedene aus.

- Öffnen Sie die Startseite und klicken Sie auf die Route head.send.group.request. Scrollen Sie zum Abschnitt Übergang. Hier wird Dialogflow mitgeteilt, zu welcher Seite gewechselt werden soll, wenn dieser Intent erkannt wird.

- Schließen Sie die Routen-Definition und maximieren Sie die Seite Weitere Informationen erfassen. Beachten Sie die Eintragserfüllung und die Liste der Parameter.

Für jede Seite in Dialogflow CX können Sie ein Formular definieren. Dies ist eine Liste von Parametern, die vom Endnutzer für die Seite erfasst werden sollen. Der Agent hat nicht nach dem Reiseziel gefragt, da wir es als Teil der ursprünglichen Eingabe übergeben haben und destination auch ein Intent-Parameter ist. Wenn eine Seite erstmalig aktiv wird und während ihres aktiven Zeitraums, wird jeder Formularparameter mit demselben Namen wie ein Intent-Parameter automatisch auf den Sitzungsparameterwert gesetzt und die entsprechende Aufforderung wird übersprungen.
- Wechseln Sie zum Tab Verwalten und klicken Sie im Bereich Intents auf den Intent head.send group request. Sehen Sie sich die für diesen Intent bereitgestellten Trainingsformulierungen und die annotierten Teile der Trainingsformulierungen an.

- Nehmen wir die Trainingsformulierung „Ich muss eine Reise nach Costa Rica für 15 Taucher organisieren“. „Costa Rica“ wird mit destination und „15“ mit number-of-guests annotiert. Wenn Sie Teile einer Trainingsformulierung annotieren, erkennt Dialogflow, dass diese Teile nur Beispiele für tatsächliche Werte sind, die von Endnutzern zur Laufzeit bereitgestellt werden. Deshalb wird für die ursprüngliche Eingabe „Do you offer charters to the Galapagos Islands?“ (Bieten Sie Charterflüge zu den Galapagosinseln an?) Dialogflow hat den Zielparameter aus „Galapagosinseln“ extrahiert.
Als Nächstes sehen wir uns an, was passiert, wenn wir dem Agenten keine gültige Eingabe geben, wenn er uns auffordert, einen Formularparameter auszufüllen.
Ungültige Eingabe
- Klicken Sie im Bereich „Simulator“ auf das Symbol Zurücksetzen, um eine neue Unterhaltung mit dem Agent zu starten.
- Äußern Sie die Absicht, eine Gruppenbuchung vorzunehmen. Sagen Sie dem Kundenservicemitarbeiter dieses Mal nicht, wohin Sie reisen möchten. Wenn Sie nach einem Reiseziel gefragt werden, antworten Sie mit einem zufälligen Wert, der nicht Costa Rica, Galapagos oder Mexiko ist.

- Klicken Sie auf dem Tab Verwalten im Bereich Ressourcen auf Entitätstypen. Auf dem Tab „System“ finden Sie die Systementitäten, die derzeit von Ihrem Agent verwendet werden. Auf dem Tab Benutzerdefiniert finden Sie die Liste der benutzerdefinierten Entitäten, die zum Abgleichen der für diesen Agenten spezifischen Daten erstellt wurden.

- Klicken Sie auf die Zielentität, um herauszufinden, mit welchen Werten sie übereinstimmt. „Europa“ ist kein Eintrag und auch kein Synonym.
- Maximieren Sie im Flussdiagramm die Seite Weitere Informationen erfassen, die die Formularparameter enthält. Klicken Sie auf den Parameter destination.
- Scrollen Sie im Parameterbereich nach unten zum Abschnitt Event-Handler für erneute Aufforderung und klicken Sie dann auf den Event-Handler Standard bei keiner Übereinstimmung.
Dieser Event-Handler auf Parameterebene ist speziell für die Verarbeitung ungültiger Endnutzereingaben beim Ausfüllen von Formularen vorgesehen. Da „Europa“ eine unerwartete Eingabe ist, wurde ein sys.no-match-default-Ereignis aufgerufen und der entsprechende Handler für die erneute Eingabeaufforderung, der für dieses Ereignis definiert ist, wurde aufgerufen. Im Abschnitt Agent says (Der KI-Agent sagt) sind zwei alternative Aufforderungen aufgeführt.

Gut gemacht! Diese Testläufe stellen gängige Szenarien dar, die der Agent angemessen bearbeiten soll. Sehr oft stellen Nutzer Fragen, die Bots nicht beantworten können, oder sie machen Anfragen, die Bots nicht erfüllen können. Es ist sehr komplex, für den Longtail zu entwickeln, also für die weniger ausgetretenen Pfade, die die meisten Nutzer nicht gehen. Denken Sie über alle Dinge nach, die in einem Gespräch schiefgehen können, und über alle unerwarteten oder nicht unterstützten Pfade, die Nutzer einschlagen könnten.
Dank der Fortschritte bei der automatischen Spracherkennung (ASR) wissen wir fast immer genau, was Nutzer gesagt haben. Es ist jedoch nach wie vor schwierig, herauszufinden, was Nutzer wirklich gemeint haben. Äußerungen können oft nicht isoliert, sondern nur im Kontext verstanden werden. Im nächsten Abschnitt dieses Codelabs sehen wir uns an, wie die neuesten generativen Large Language Models (LLMs) von Google helfen können, den Dialog wieder in Gang zu bringen und die Unterhaltung voranzutreiben.
5. Generativen Fallback aktivieren
Was ist die Funktion „Generativer Fallback“?
Die Funktion für generativen Fallback ist eine Dialogflow CX-Funktion, mit der die Large Language Models (LLMs) von Google verwendet werden, um Antworten für virtuelle Kundenservicemitarbeiter zu generieren.
Wie hilft das?
Zwischen den wichtigsten Anwendungsfällen gibt es eine Reihe von einigermaßen häufigen Nutzeranfragen, z. B. das Wiederholen des Gesagten, wenn der Nutzer es nicht verstanden hat, das Halten der Leitung, wenn der Nutzer darum bittet, und das Zusammenfassen der Unterhaltung. Im ersten Test konnte der KI-Agent die Frage „Was ist ein Tauchsafari-Schiff?“ nicht beantworten, da wir keine entsprechende Intention erstellt und den Ablauf nicht für diese Art von allgemeinen Fragen zum Tauchen und zu Tauchsafari-Schiffen konzipiert haben.
Auch bei robusten Intents kann es zu Fehlern kommen. Nutzer können vom Script abweichen, indem sie schweigen (Fehler „Keine Eingabe“) oder etwas Unerwartetes sagen (Fehler „Keine Übereinstimmung“). Es ist zwar besser, Fehler zu vermeiden, als sie zu beheben, nachdem sie aufgetreten sind, aber Fehler lassen sich nicht vollständig vermeiden. Allgemeine Prompts wie „Tut mir leid, ich bin mir nicht sicher, wie ich helfen kann“ oder ähnliche minimal brauchbare Lösungen sind oft nicht gut genug. Fehlermeldungen sollten sich am Kooperationsprinzip orientieren, dem zufolge eine effiziente Kommunikation auf der Annahme beruht, dass zwischen den Gesprächspartnern eine unterschwellige Zusammenarbeit besteht.
Im nächsten Abschnitt sehen wir uns an, wie die Funktion für generativen Fallback konfiguriert werden kann, um die Intent-Abdeckung zu erhöhen und die Fehlerbehandlung zu vereinfachen und so die Kundenzufriedenheit zu steigern.
Generativen Fallback für das Ereignis „Keine Übereinstimmung“ des gesamten Flows aktivieren
Sie können generativen Fallback für Event-Handler mit fehlender Übereinstimmung aktivieren, die in Abläufen, auf Seiten oder während der Parameterausfüllung verwendet werden. Wenn der generative Fallback für ein „No-Match“-Ereignis aktiviert ist, versucht Dialogflow, wenn dieses Ereignis ausgelöst wird, eine generierte Antwort zu erstellen, die dem Nutzer vorgelesen wird. Wenn die Antwortgenerierung nicht erfolgreich ist, wird stattdessen die reguläre vorgeschriebene Agent-Antwort ausgegeben.
Sie können den generativen Fallback in Ihrem Agent für Event-Handler mit fehlender Übereinstimmung aktivieren. Diese können in der Auftragsausführung von Abläufen, Seiten oder Parametern verwendet werden.
Wir beginnen mit der Aktivierung des generativen Fallbacks für das Ereignis „Keine Übereinstimmung“ des Standardstart-Flows für den gesamten Liveaboards-Flow.
- Maximieren Sie die Startseite des Ablaufs.
- Klicken Sie unter Event-Handler auf sys.no-match-default.
- Aktivieren Sie unter Antworten des KI-Agenten die Option Generativen Fallback aktivieren und klicken Sie dann auf Speichern.


Generativen Fallback für bestimmte Ereignisse ohne Übereinstimmung aktivieren
Wir möchten jetzt einen generativen Fallback aktivieren, um ungültige Eingaben zu verarbeiten, wenn der Agent nach der Anzahl der Fahrgäste fragt:
- Öffnen Sie die Seite Weitere Informationen erfassen, die die Formularparameter enthält. Klicken Sie auf den Parameter number-of-guests.
- Rufen Sie den Ziel-Event-Handler No-match auf. Scrollen Sie dazu nach unten zum Abschnitt Event-Handler für erneute Aufforderungen und klicken Sie auf den Event-Handler No-match default.

- Aktivieren Sie unter Antworten des KI-Agenten die Option Generativen Fallback aktivieren.

- Klicken Sie abschließend auf Speichern.
- Wiederholen Sie nun die Schritte, um den generativen Fallback für destination und email-address zu aktivieren.
Gut gemacht! Sie haben den generativen Fallback aktiviert, um unerwartete Intents und ungültige Parameterwerte zu verarbeiten. Als Nächstes sehen wir uns an, wie Sie die Funktion für generativen Fallback mit einem Text-Prompt konfigurieren, der dem LLM mitteilt, wie es reagieren soll.
6. Generativen Fallback konfigurieren
Bei der generativen Fallback-Funktion wird eine Anfrage an ein Large Language Model weitergeleitet, um die generierte Antwort zu erstellen. Die Anfrage erfolgt in Form eines Text-Prompts, der eine Mischung aus natürlicher Sprache und Informationen zum aktuellen Status des Agenten und der Unterhaltung ist. Die Funktion kann auf verschiedene Arten konfiguriert werden:
- Wählen Sie einen bestimmten (bereits definierten) Prompt aus, der für die Antwortgenerierung verwendet werden soll.
- Definieren Sie einen benutzerdefinierten Prompt.
Bereits definierten Prompt auswählen
- Klicken Sie in der Dialogflow CX-Konsole auf Agent-Einstellungen.

- Rufen Sie den Tab ML und dann den Untertab Generative KI auf.

Die Funktion wird mit zwei Vorlagen-Prompts ausgeliefert: der Standardvorlage (die nicht sichtbar ist) und der Beispielvorlage, die Ihnen hilft, eigene Prompts zu schreiben.
- Wählen Sie die Vorlage Beispiel aus und klicken Sie rechts neben dem Drop-down-Menü auf die Schaltfläche Bearbeiten, um sie zu prüfen.
Mit dem vordefinierten Prompt kann der virtuelle Kundenservicemitarbeiter grundlegende Unterhaltungssituationen bewältigen. Beispiel:
- Begrüßen Sie den Nutzer und verabschieden Sie sich.
- Wiederhole, was der Kundenservicemitarbeiter gesagt hat, falls der Nutzer es nicht verstanden hat.
- Halte die Leitung, wenn der Nutzer darum bittet.
- Fassen Sie die Unterhaltung zusammen.
Lass uns versuchen, einen bestimmten Text-Prompt für den Divebooker-Agenten zu definieren.
7. Eigenen Prompt definieren
- Kopieren Sie den folgenden Prompt und fügen Sie ihn in den Bereich Text-Prompt ein.
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description
At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.
Currently you can $route-descriptions
The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}
Then the human asked:
$last-user-utterance
You say:
- Wählen Sie Als neue Vorlage speichern aus, um den neuen Prompt als neue Vorlage zu speichern. Wählen Sie einen neuen Vorlagennamen aus und klicken Sie rechts unten im Bereich auf Speichern.

- Damit der neu erstellte Prompt tatsächlich der aktive Prompt wird, müssen Sie die Einstellungen auch speichern.

Wenn Sie einen eigenen Text-Prompt schreiben, sollten Sie klar, prägnant und vorschreibend sein. Die Art und Weise, wie der Prompt für das LLM formuliert wird, kann sich stark auf die Qualität der LLM-Antwort auswirken. LLMs sind darauf trainiert, Anweisungen zu befolgen. Je präziser Ihr Prompt formuliert ist, desto besser sind die Ergebnisse, die Sie wahrscheinlich erhalten. Erstellen Sie einen Prompt und optimieren Sie ihn anhand der Ergebnisse.
Beachten Sie die folgenden Best Practices, um effektive Prompts zu erstellen:
- Geben Sie eine klare und prägnante Beschreibung der Aufgabe an, die das LLM ausführen soll. Die Antwort sollte vollständig und kurz sein.
- Außerdem sollte die Aufforderung spezifisch und klar definiert sein. Vermeiden Sie vage oder mehrdeutige Formulierungen.
- Zerlegen Sie komplexe Aufgaben in kleinere, übersichtlichere Aufgaben. Wenn Sie die Aufgabe in kleinere Schritte unterteilen, kann sich das Modell jeweils auf eine Sache konzentrieren und die Wahrscheinlichkeit von Fehlern oder Unklarheiten verringern.
- Wenn Sie die Antwortqualität verbessern möchten, fügen Sie Ihrem Prompt Beispiele hinzu. Das LLM lernt kontextbezogen anhand der Beispiele, wie es antworten soll.
Beim Erstellen eines Prompts können Sie neben einer Beschreibung in natürlicher Sprache, welche Art von Kontext generiert werden soll, auch die folgenden Platzhalter verwenden:
$conversationDie Unterhaltung zwischen dem Agent und dem Nutzer, ohne die letzte Nutzeräußerung. Sie können die Präfixe für Züge anpassen, z.B.: „Mensch“, „KI“ oder „Sie“, „Agent“ im Text-Prompt$last-user-utteranceDie letzte Äußerung des Nutzers.$flow-descriptionDie Ablaufbeschreibung des aktiven Ablaufs.$route-descriptionsDie Beschreibungen der aktiven Intents.
Nachdem wir einen ersten Text-Prompt haben, müssen wir dafür sorgen, dass die Abläufe und Intentionen gut beschrieben sind.
8. Ablauf- und Intent-Beschreibungen hinzufügen
Ablaufbeschreibung hinzufügen
- Wenn Sie dem Ablauf Liveaboards eine Beschreibung hinzufügen möchten, rufen Sie die Ablaufeinstellungen auf, indem Sie den Mauszeiger im Abschnitt Abläufe über den Ablauf bewegen.

- Klicken Sie auf die Schaltfläche „Optionen“
. - Wählen Sie Ablaufeinstellungen aus und fügen Sie die folgende Beschreibung (oder eine ähnliche) hinzu:
search, find and book liveaboards.

- Klicken Sie auf Speichern.
Absichtsbeschreibung hinzufügen
- Jetzt fügen wir dem Intent head.send.group.request eine gute Beschreibung hinzu. Wechseln Sie zum Tab Verwalten, wählen Sie im Abschnitt Ressourcen die Option Intents aus und wählen Sie den Intent head.send.group.request aus.
- Fügen Sie die folgende Beschreibung hinzu:
assist users with group or full charter reservations. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands
Die Beschreibung enthält wichtige Informationen wie die Mindest- und Höchstzahl der Passagiere, die auf einem Boot erlaubt sind. Das sollten Sie beachten.
- Klicken Sie auf Speichern.
Damit sind die ersten Schritte abgeschlossen. Sie haben den generativen Fallback für No-Match-Event-Handler sowohl für die Ablauf- als auch für die Parametererfüllung aktiviert. Sie haben auch einen eigenen Text-Prompt definiert, den die generative Fallback-Funktion an ein Large Language Model übergibt, um generative Antworten zu generieren.
Im nächsten Abschnitt testen Sie Ihren Agent noch einmal, um zu sehen, wie er die gleichen schwierigen Fragen wie zuvor beantworten kann.
9. KI-Agent noch einmal testen
Nachdem Sie den generativen Fallback für den virtuellen Kundenservicemitarbeiter konfiguriert und aktiviert haben, können Sie ähnliche schwierige Fragen stellen und sehen, wie er die Antworten verarbeitet.
Klicken Sie auf Agent testen, um den Simulator wieder zu öffnen.

Frage den Kundenservicemitarbeiter noch einmal nach Safaribooten und Safariboot-Tauchen. Ab sofort werden in jedem Dialog sowohl nutzerdefinierte Nachrichten als auch generierte Antworten in den roten Kästen hervorgehoben.

Haben Sie eine informative Antwort anstelle einer generischen Aufforderung erhalten? Sehr gut! Nachdem Sie eine klare und prägnante Beschreibung der Aufgaben angegeben haben, die der Kundenservicemitarbeiter ausführen soll (im Text-Prompt und in der Ablaufbeschreibung), ist Ihr Bot jetzt viel intelligenter, wenn es darum geht, detaillierte Fragen zu beantworten, ohne dass Sie bestimmte Intents erstellen müssen. Ihr Kunde wird es zu schätzen wissen, dass der Kundenservicemitarbeiter ihm eine fundiertere Antwort geben kann.
Scheuen Sie sich nicht, den Agent herauszufordern. Fragen Sie ihn, ob er Ihnen helfen kann, einen Tauchkurs zu finden, da Sie noch kein zertifizierter Taucher sind.

Genau. Derzeit ist der Agent nicht dafür konzipiert, bei Tauchkursen zu helfen. Woher weiß der Kundenservicemitarbeiter das? Im Text-Prompt haben wir klar dargelegt, wobei der Kundenservicemitarbeiter helfen kann und wobei nicht. Derzeit kannst du Kunden nicht bei Tauchgängen und Kursen an Land helfen. Sie dürfen keine lokalen Tauchgeschäfte und Tauchresorts empfehlen.
Testen Sie nun das Happy-Path-Szenario noch einmal und bereichern Sie die Unterhaltung. Sehen wir uns an, wie sich die Nutzung verändert hat.


Wenn Dialogflow einen Intent abgleicht oder versucht, einen Parameter gemäß dem Flow-Design zu erfassen, werden die zur Designzeit definierten Fulfillments angezeigt. Wenn der Nutzer vom Script abweicht und eine Zusammenfassung der Reisedetails anfordert oder seine Telefonnummer anbietet, kommt die generative Fallback-Funktion zum Einsatz.
Sehr gut! Sie haben das Happy-Path-Szenario noch einmal getestet und ich hoffe, dass Sie ein angenehmes und natürliches Gespräch mit dem Agenten geführt haben, das dem Gespräch mit einem menschlichen Kundenservicemitarbeiter so nahe wie möglich kam.
Leider kann es in einem Gespräch zu Problemen kommen. Lass uns einen anderen Test durchführen. Wenn du nach der Anzahl der Gäste gefragt wirst, gib dieses Mal eine Zahl über 15 an.


Hierzu ist Folgendes anzumerken:
- Warum ist 20 keine gültige Zahl? Wir haben im Rahmen der Intention eine Beschränkung für die Anzahl der zulässigen Gäste festgelegt: Der Agent erfasst Informationen wie Reisezeitraum, Reiseziel, Anzahl der Gäste ***(mindestens 4, maximal 15 Personen)***, Kontaktdaten*. Die generative Antwort, die das LLM zurückgegeben hat („Sorry, we can only assist with group bookings of up to 15 guests“), stimmt perfekt mit den Einschränkungen überein, die wir hinsichtlich der Anzahl der Gäste angegeben haben. Um dies weiter zu erzwingen, ist „number-of-guests“ eine benutzerdefinierte reguläre Ausdrucksentität, die nur Zahlen im Bereich von 4 bis 15 abgleicht.
- Die Unterhaltung wird fortgesetzt, weil der Nutzer letztendlich immer noch ein Angebot für 15 Taucher erhalten möchte. Das passiert häufig bei natürlichen Gesprächen. Wir ändern unsere Meinung ziemlich oft. Der Agent ist kooperativ und lenkt den Nutzer sanft zurück auf den richtigen Weg.
Beim Konversationsdesign wird eine Hälfte eines Dialogs geschrieben, in der Hoffnung, dass sie so robust ist, dass jeder die andere Hälfte übernehmen kann. Beim Design für den Longtail müssen Entwickler sich darauf konzentrieren, was der Nutzer in jedem Schritt des Dialogs sagen könnte, um Routen, Handler und Parameter zu definieren. Aus diesem Grund haben wir Dialogflow CX die Funktion für generativen Fallback hinzugefügt: Entwickler können sich so auf die Prinzipien des Konversationsdesigns konzentrieren und müssen sich weniger mit Implementierungsdetails befassen, um Nutzern robuste Konversationsfunktionen zu bieten.
Führen wir noch einen Test durch. Fordern Sie den Bot diesmal mit einem Ort heraus, der nicht in der Liste der verfügbaren Reiseziele enthalten ist, z. B. die Malediven. Danach sehen wir uns kurz an, was hinter den Kulissen passiert.

Da wir auch den generativen Fallback für das no-match-Ereignis für den Parameter destination aktiviert haben, wird eine Anfrage an ein Large Language Model gesendet, um die generierte Antwort zu erstellen. Die regulären vorgegebenen Antworten („Agent sagt“) werden ignoriert.
In den Textfeldern unten sehen Sie, wie die Platzhalter die an das Large Language Model gesendete Anfrage beeinflussen.
Das ist der benutzerdefinierte Text-Prompt, den wir in Dialogflow konfiguriert haben. Die Platzhalter sind fett hervorgehoben:
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description
At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.
Currently you can $route-descriptions
The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}
Then the human asked:
$last-user-utterance
You say:
Im Textfeld unten finden Sie die Eingabe, die das Large Language Model erhalten hat, und die Ausgabe mit der generierten Antwort, die dem Nutzer vorgelesen wird:
llm_input: You are a friendly agent that likes helping traveling divers. You are under development and you can only help search, find and book liveaboards. At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts. Currently you can assist users who are looking for a group reservation or a full charter. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands. The conversation between the human and you so far was: Human: Hi, my name's Alessia AI Hi Alessia, what can I help you with today? Human: Can you help me find a nice boat for myself and my family? AI To assist you with that I need to collect the details of your travel and then we'll get back to you with an offer shortly. Where would you like to go? We can organize a charter in Costa Rica, Galapagos Islands and several locations around Mexico Then the human asked: The kids want to go to the Maldives llm_output: You say: I'm sorry Alessia, we can only help you with liveaboards in Costa Rica, Galapagos Islands and several locations around Mexico.
Ähnlich wie beim vorherigen Test wird die an den Nutzer zurückgesendete Antwort vom Modell generiert und basiert auf den Informationen, die wir im Rahmen der Intention beschrieben haben: Das Ziel muss eines der folgenden im Pazifik sein: Costa Rica, Mexiko, Galapagosinseln.
Liste verbotener Ausdrücke ändern
Die Funktion „Generativer Fallback“ kann auf verschiedene Arten konfiguriert werden:
- Wählen Sie einen bestimmten (bereits definierten) Prompt aus, der für die Antwortgenerierung verwendet werden soll.
- Definieren Sie einen benutzerdefinierten Prompt.
- Liste verbotener Ausdrücke ändern
Bisher haben wir uns die ersten beiden Möglichkeiten angesehen. Sehen wir uns die dritte Option an.
- Rufen Sie in den Agent-Einstellungen den Tab ML und dann den Untertab Generative KI auf.
- Fügen Sie dem Abschnitt Verbotene Wortgruppen die folgenden Sätze hinzu:
Dangerous countryHateful placeMedical assistance- Klicken Sie auf Speichern.
- Klicken Sie auf das Symbol Zurücksetzen und testen Sie das letzte Szenario noch einmal. Geben Sie anstelle eines schönen Tauchziels auf der ganzen Welt einen der verbotenen Begriffe ein.

Der Prompt und die generierte Antwort werden mit der Liste der verbotenen Ausdrücke abgeglichen. Verbotene Wortgruppen sind Wortgruppen, die für generative KI verboten sind. Wenn die Eingabe verbotene oder als unsicher eingestufte Wortgruppen enthält, schlägt die Generierung fehl und stattdessen wird die reguläre vorgeschriebene Antwort (unter „Agent sagt“ in derselben Ausführung) ausgegeben.
Sehr gut! Wir haben uns eine Reihe von Gesprächssituationen angesehen, in denen generative Antworten wirklich einen Unterschied machen können. Sie können gern weiter experimentieren.
10. Glückwunsch
Glückwunsch! Sie haben das Codelab abgeschlossen. Zeit zum Chillen!

Sie haben erfolgreich einen virtuellen Kundenservicemitarbeiter erstellt und den generativen Fallback für no-match-Ereignishandler aktiviert, die in Abläufen und beim Ausfüllen von Parametern verwendet werden.
Die Funktion für generative Fallbacks in Kombination mit guten Fluss- und Intent-Beschreibungen kann zu spezifischen und kooperativen Antworten des Kundenservicemitarbeiters führen, im Gegensatz zu allgemeinen Aufforderungen wie „Tut mir leid, ich bin mir nicht sicher, wie ich helfen kann“ oder „Tut mir leid, Sie haben eine ungültige Option eingegeben“. Fehlermeldungen, die von Large Language Models generiert werden, können Nutzer sanft auf erfolgreiche Wege zurückführen oder ihre Erwartungen hinsichtlich dessen, was möglich ist und was nicht, zurücksetzen.
Sie können auch andere Gesprächssituationen testen und die anderen Funktionen von Dialogflow CX und generativer KI ausprobieren.
Bereinigen
Mit den folgenden Schritten können Sie vermeiden, dass Ihrem Google Cloud-Konto die in diesem Codelab verwendeten Ressourcen in Rechnung gestellt werden:
- Rufen Sie die Dialogflow CX-Konsole auf und löschen Sie alle Agents, die Sie erstellt haben.
- Rufen Sie in der Google Cloud Console die Seite „APIs und Dienste“ auf und deaktivieren Sie die Dialogflow API.
Weitere Informationen
In diesen Anleitungen und Ressourcen erfahren Sie mehr über konversationelle KI und generative KI:
- Dokumentation für Dialogflow CX
- Dokumentation für generativen Fallback
- Generative KI in Google Cloud
- Einführung in PaLM
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.
