1. Übersicht
Zuletzt aktualisiert:07.08.2023
Inhalt
In diesem Codelab erstellen, implementieren und konfigurieren Sie einen einfachen virtuellen Kundenservicemitarbeiter in Dialogflow CX, der reisende Taucher bei Gruppenbuchungen und privaten Charterflügen unterstützt. Der virtuelle Kundenservicemitarbeiter verwendet Generative AI und die neuesten generativen Large Language Models (LLMs) von Google, um Antworten des virtuellen Kundenservicemitarbeiters zu generieren.
Aufgaben in diesem Lab
- Relevante APIs aktivieren
- Wie Dialogflow Parameterwerte für Seitenformulare automatisch mit Intent-Parametern ausfüllt
- Event-Handler in Dialogflow konfigurieren
- Generatives Fallback für No-Match-Event-Handler aktivieren, die in Abläufen und beim Ausfüllen von Parametern verwendet werden
- So konfigurieren Sie Ihren eigenen Text-Prompt für einfache und Kundenservicemitarbeiter-spezifische Unterhaltungssituationen
- Wie gute Intent- und Parameterbeschreibungen erstellt werden, um Handler für erforderliche Parameter zu generieren (zusätzlich zu benutzerdefinierten Aufforderungen)
- Agent testen und Kundenfragen simulieren, die das generative Fallback auslösen
Voraussetzungen
- Ein Google Cloud-Projekt
- Ein Browser wie Chrome
2. Einrichtung
Bevor Sie das generative 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.
- Gehen Sie in der Google Cloud Console zur API-Bibliothek, um die APIs und Dienste zu sehen, die aktiviert werden können.
- Suchen Sie oben auf der Seite „API-Bibliothek“ in der Suchleiste nach
Dialogflow API
und klicken Sie 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, sollten Sie eine Meldung wie diese sehen:
Operation "operations/..." finished successfully.
Code abrufen
Sie erstellen den virtuellen Kundenservicemitarbeiter nicht von Grund auf neu. Wir stellen Ihnen einen Kundenservicemitarbeiter 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 von einer Befehlszeile.
- Der erste Agent wurde als JSON-Paket exportiert. Entpacken Sie die Datei, prüfen Sie die Agent-Einstellungen, sehen Sie sich die Ablaufdefinition
Liveaboards.json
an und gehen Sie schließlich die Ablaufseiten, Intents und Entitäten durch.
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-Konsole auf.
- Wählen Sie das Google Cloud-Projekt aus, das Sie verwenden möchten, oder erstellen Sie ein neues Projekt.
- Sie sollten eine Liste der Agents in der Dialogflow CX-Konsole sehen.
Wenn Sie Dialogflow CX zum ersten Mal verwenden, finden Sie in der Dokumentation zu Dialogflow CX weitere Informationen zur Konfiguration Ihres Projekts und Ihrer Einstellungen entsprechend Ihren Anforderungen.
Neuen Dialogflow CX-Agent erstellen
- Wenn Sie den aus dem GitHub-Repository heruntergeladenen Agent wiederherstellen möchten, müssen Sie einen neuen Agent erstellen. Klicken Sie in der Dialogflow CX-Konsole rechts oben auf der Seite auf Create new agent (Neuen Agent erstellen).
- Wählen Sie die Option Build your own (Eigenen Agent erstellen) aus.
- Füllen Sie das Formular mit den Agent-Einstellungen unten aus und klicken Sie auf Create (Erstellen), um den Agent zu erstellen.
- Wähle als Anzeigenamen aus:
Divebooker
- Als Standort auswählen:
us-central1
- Wählen Sie Ihre bevorzugte Zeitzone aus.
en - English
als 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 Agent-Liste 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 Upload (Hochladen) aus und legen Sie die ZIP-Datei ab, die Sie zuvor aus dem GitHub-Repository heruntergeladen haben, oder wählen Sie sie aus.
- Klicken Sie auf die Schaltfläche Wiederherstellen, um den bereitgestellten Agent zu importieren.
Gut gemacht! Sie haben einen virtuellen Kundenservicemitarbeiter für Tauchreservierungen erstellt, der Ihren Kunden helfen kann. Im nächsten Abschnitt testen Sie den Dienst, um zu sehen, wie gut er bei der Beantwortung von Nutzerfragen und der Unterstützung bei Buchungsanfragen hilft.
4. Agent testen
Dialogflow bietet einen integrierten Simulator, über den Sie mit Ihren Kundenservicemitarbeitern chatten und Programmfehler aufspüren können. Sie können in jeder Runde die korrekten Werte für den ausgelösten Intent, die Agent-Antwort, die aktive Seite und die Sitzungsparameter überprüfen.
Wir testen einige Szenarien und sehen uns für jedes Szenario den Grund an, warum der Agent eine bestimmte Antwort gibt. Beginnen wir mit der ersten.
Ungelöster Intent
- Klicken Sie in der Dialogflow-Konsole und in Ihrem Agent auf Test Agent (Agent testen), um den Simulator zu öffnen.
- Geben Sie eine Begrüßung für den Agent ein, z. B.
Hello
, und fragen Siewhat is a liveaboard?
. Die Frage stimmt mit keinem Intent überein. Eine allgemeine Aufforderung wie „Tut mir leid, ich bin mir nicht sicher, wie ich helfen kann“. angezeigt wird. Sie können prüfen, ob das integrierte Ereignis "sys.no-match-default" aufgerufen wurde, indem Sie die ursprüngliche Antwort im Simulator überprüfen.
Scrollen Sie fast bis zum Ende der JSON-Antwort nach unten. Beachten Sie, dass Dialogflow bei der Suche nach einem übereinstimmenden Intent feststellt, dass dies ein NO_MATCH ist, und ein No-Match-Ereignis auslöst.
- Wechseln Sie zum Tab Build und öffnen Sie die Startseite des Ablaufs Liveaboards.
Standardmäßig verfügt jeder Ablauf über Event-Handler für die integrierten Ereignisse "no-match" und "no-input". Diese Event-Handler werden automatisch erstellt, wenn Sie einen Ablauf erstellen, 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 (Agent-Antwort). 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.
Machen wir uns nun mit dem Happy Path weiter!
Der Happy Path
In diesem zweiten Fall geben Sie sich als Taucher aus, der nächstes Jahr im Juli eine Tauchreise für eine Gruppe von zwölf Personen zu den Galapagosinseln buchen möchte.
- Klicken Sie im Bereich „Simulator“ auf das Symbol Zurücksetzen, um eine neue Unterhaltung mit dem Agent zu starten.
- Teile dem Agent mit, dass du eine Charter zu den Galapagosinseln buchen möchtest, und teile ihm die Details deiner Reise mit. Sie müssen nicht dieselben Aufforderungen unten verwenden. Probieren Sie es einfach aus.
- Öffnen Sie die Startseite und klicken Sie auf die Route head.send.group.request. Scrollen Sie nach unten zum Abschnitt Transition (Übergang). Dadurch wird Dialogflow angewiesen, auf welcher Seite gewechselt werden soll, wenn der Intent zugeordnet wird.
- Schließen Sie die Definition der Route und maximieren Sie die Seite Weitere Informationen erfassen. Beachten Sie die Auftragsausführung 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. Beachten Sie, dass der Agent nicht nach dem Reiseziel gefragt hat, da wir es als Teil der anfänglichen Eingabe übergeben haben und destination ebenfalls ein Intent-Parameter ist. Wenn eine Seite zum ersten Mal aktiv wird und während ihrer aktiven Zeit aktiv ist, wird jeder Formularparameter, der denselben Namen wie ein Intent-Parameter hat, automatisch auf den Sitzungsparameterwert gesetzt und die entsprechende Aufforderung übersprungen.
- Wechseln Sie zum Tab Manage (Verwalten) und klicken Sie im Abschnitt 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.
- Denken Sie an die Trainingsformulierung „Ich muss eine Reise nach Costa Rica für 15 Taucher organisieren“. „Costa Rica“ ist mit destination und "15" gekennzeichnet. mit Anzahl der Gäste. 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. Aus diesem Grund gebe ich bei der Eingabe „Bieten Sie Charterflüge für die Galapagosinseln an?“ Dialogflow extrahiert den Zielparameter aus den "Galapagosinseln".
Als Nächstes sehen wir uns an, was passiert, wenn der Kundenservicemitarbeiter keine gültige Eingabe erhält, wenn er zum Ausfüllen eines Formularparameters aufgefordert wird.
Ungültige Eingabe
- Klicken Sie im Bereich „Simulator“ auf das Symbol Zurücksetzen, um eine neue Unterhaltung mit dem Agent zu starten.
- Wenn Sie eine Gruppenbuchung vornehmen möchten, sagen Sie dem Kundenservicemitarbeiter nicht, wohin Sie gehen möchten und wenn Sie um eine Antwort mit einem zufälligen Wert gebeten werden, der nicht Costa Rica, Galapagos oder Mexiko ist.
- Klicken Sie auf dem Tab Verwalten im Abschnitt Ressourcen auf Entitätstypen. Beachten Sie zwei Tabs: Auf dem Tab „System“ finden Sie die Systementitäten, die derzeit von Ihrem Agent verwendet werden. Der Tab Custom (Benutzerdefiniert) enthält eine Liste der benutzerdefinierten Entitäten, die zum Abgleichen von Daten speziell für diesen Agent erstellt wurden.
- Klicken Sie auf die Zielentität, um zu sehen, mit welchen Werten die Entität übereinstimmt. „Europa“ ist weder einer der Einträge noch auch ein 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 erneut auffordern und klicken Sie dann auf den Event-Handler Keine Übereinstimmung Standard.
Dieser Event-Handler auf Parameterebene ist speziell dafür vorgesehen, ungültige Endnutzereingaben beim Ausfüllen eines Formulars zu verarbeiten. Weil „Europe“ eine unerwartete Eingabe ist, ein Ereignis vom Typ sys.no-match-default aufgerufen und der entsprechende Handler für die erneute Eingabeaufforderung aufgerufen wurde, der für dieses Ereignis definiert wurde. Im Abschnitt Agent sagt werden zwei alternative Aufforderungsnachrichten aufgeführt.
Super! Diese Testläufe stellen häufige Szenarien dar, die der Agent ordnungsgemäß verarbeiten muss. Sehr oft stellen Nutzer Fragen, die von Bots nicht beantwortet werden können, oder sie stellen Anfragen, die von Bots nicht ausgeführt werden können. Die Entwicklung für Long Tail ist sehr komplex, d. h. abseits der häufig genutzten Pfade, denen die meisten Nutzer folgen. Denken Sie an all die Dinge, die in einer Unterhaltung schiefgehen können, und an alle unerwarteten oder nicht unterstützten Pfade, die Nutzer wählen könnten.
Dank der Fortschritte bei der automatischen Spracherkennung wissen wir fast immer genau, was die Nutzer sagen. Es ist jedoch noch schwierig herauszufinden, was die Nutzenden meinen. Äußerungen können oft nicht isoliert verstanden werden. dass sie nur im Kontext verstanden werden können. Im nächsten Abschnitt dieses Codelabs erfahren Sie, wie die neuesten generativen Large Language Models (LLMs) von Google dazu beitragen können, den Dialog auf Kurs zu bringen und die Unterhaltung voranzutreiben.
5. Generatives Fallback aktivieren
Was ist die generative Fallback-Funktion?
Das generative Fallback ist eine Dialogflow CX-Funktion, die mithilfe der Large Language Models (LLMs) von Google Antworten virtueller Kundenservicemitarbeiter generiert.
Vorteile
Zwischen den wichtigsten Anwendungsfällen gibt es eine Reihe gängiger Nutzeranfragen. Sie können z. B. wiederholen, was der Kundenservicemitarbeiter gesagt hat, falls der Nutzer ihn nicht verstanden hat, die Leitung halten, wenn der Nutzer danach fragt, und die Unterhaltung zusammenfassen. Im ersten Test konnte der Kundenservicemitarbeiter die Frage „Was ist ein Liveaboard?“ nicht beantworten. da wir noch keinen Intent erstellt und einen User Flow für allgemeine Fragen rund um das Tauchen und das Liveaboarden entwickelt haben.
Selbst bei robusten Intents besteht immer noch Raum für Fehler. Nutzer können etwas Unerwartetes sagen, z. B. wenn sie nichts hören (Fehler „Keine Eingabe“) oder etwas Unerwartetes sagen (Fehler „Keine Übereinstimmung“). Es ist zwar besser, das Auftreten von Fehlern zu verhindern, als Fehler zu beheben, aber Fehler lassen sich nicht vollständig vermeiden. Allgemeine Aufforderungen wie „Tut mir leid, ich weiß nicht, wie ich helfen kann“ oder ähnliche kaum realisierbare Lösungen oft nicht gut genug sind. Fehleraufforderungen sollten vom kooperativen Prinzip inspiriert sein, nach dem eine effiziente Kommunikation auf der Annahme beruht, dass die Zusammenarbeit zwischen den Teilnehmern der Konversation zu gering ist.
Im nächsten Abschnitt sehen wir uns an, wie die Generative-Fallback-Funktion konfiguriert werden kann, um die Abdeckung von Intents zu erhöhen und die Fehlerbehandlung zu vereinfachen, um die Kundenerfahrung zu verbessern.
Generatives Fallback für das No-Match-Ereignis des gesamten Ablaufs aktivieren
Sie können das generative Fallback für No-Match-Event-Handler aktivieren, die in Abläufen, Seiten oder beim Ausfüllen von Parametern verwendet werden. Wenn das generative Fallback für ein No-Match-Ereignis aktiviert ist, versucht Dialogflow bei jedem Auslösen dieses Ereignisses, eine generierte Antwort zu erzeugen, die dem Nutzer zurückgegeben wird. Wenn die Antwort nicht generiert werden kann, wird stattdessen die reguläre Agent-Antwort ausgegeben.
Sie können das generative Fallback in Ihrem Agent für No-Match-Event-Handler aktivieren, die für die Ablauf-, Seiten- oder Parameterauftragsausführung verwendet werden können.
Wir aktivieren das generative Fallback für den gesamten No-Match-Standard-Vorgang für den Liveaboards-Vorgang.
- Maximieren Sie die Startseite des Ablaufs.
- Klicken Sie unter Event-Handler auf sys.no-match-default.
- Klicken Sie unter Agent-Antworten auf das Kästchen Generatives Fallback aktivieren und dann auf Speichern.
Generatives Fallback für bestimmte No-Match-Ereignisse aktivieren
Wir möchten nun das generative Fallback aktivieren, um ungültige Eingaben zu verarbeiten, wenn der Agent nach der Anzahl der Passagiere fragt:
- Öffnen Sie die Seite Weitere Informationen erfassen, die die Formularparameter enthält. Klicken Sie auf den Parameter number-of-guests (Anzahl der Gäste).
- Gehen Sie zum Ziel-Event-Handler No-match. Scrollen Sie dazu nach unten zum Abschnitt Reprompt-Event-Handler und klicken Sie dann auf den Standard-Event-Handler für No-match.
- Klicken Sie unter Agent-Antworten das Kästchen Generatives Fallback aktivieren an.
- Klicken Sie abschließend auf Speichern.
- Wiederholen Sie die Schritte zum Aktivieren des generativen Fallbacks für Ziel und E-Mail-Adresse.
Super! Sie haben das generative Fallback aktiviert, um unerwartete Intents und ungültige Parameterwerte zu verarbeiten. Als Nächstes sehen wir uns an, wie die Generative-Fallback-Funktion mit einem Text-Prompt konfiguriert wird, der dem LLM Anweisungen zum Antworten gibt.
6. Generatives Fallback konfigurieren
Das generative Fallback-Feature übergibt eine Anfrage an ein Large Language Model, um die generierte Antwort zu generieren. Die Anfrage erfolgt in Form einer Textaufforderung, die aus natürlicher Sprache und Informationen zum aktuellen Status des Agents und der Unterhaltung besteht. Die Funktion kann auf verschiedene Arten konfiguriert werden:
- Wählen Sie eine bestimmte (bereits definierte) Aufforderung aus, die für die Antwortgenerierung verwendet werden soll.
- Benutzerdefinierten Prompt definieren.
Bereits definierten Prompt auswählen
- Klicken Sie in der Dialogflow CX-Konsole auf Agent Settings (Agent-Einstellungen).
- Gehen Sie zum Tab ML und dann zum Untertab Generative AI.
Die Funktion wird mit zwei Vorlagen für Prompts geliefert: der Default-Vorlage (die nicht sichtbar ist) und der Example-Vorlage, die Sie beim Schreiben eigener Prompts unterstützt.
- Wählen Sie die Vorlage Beispiel aus und klicken Sie rechts im Drop-down-Menü auf die Schaltfläche Bearbeiten, um sie zu überprüfen.
Mit dem vordefinierten Prompt kann der virtuelle Kundenservicemitarbeiter grundlegende Konversationssituationen bewältigen. Beispiel:
- Begrüßen Sie den Nutzer und verabschieden Sie sich.
- Wiederholen Sie, was der Kundenservicemitarbeiter gesagt hat, falls der Nutzer nicht verstanden hat.
- Die Leitung halten, wenn der Nutzer danach fragt.
- Fasse das Gespräch zusammen.
Definieren wir nun einen speziellen Text-Prompt für den Divebooker-Agenten.
7. Eigenen Prompt definieren
- Kopieren Sie den Prompt unten 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 Steuerfeld auf Speichern.
- Damit der neu erstellte Prompt tatsächlich aktiv wird, müssen Sie auch die Einstellungen speichern.
Formulieren Sie Ihren eigenen Text-Prompt klar, prägnant und präskriptiv. Die Art und Weise, wie der Prompt für das LLM erstellt wird, kann die Qualität der Antwort des LLM stark beeinflussen. LLMs sind darauf trainiert, Anweisungen zu folgen. Daher gilt: Je mehr Ihr Prompt wie eine präzise Anweisung aussieht, desto bessere Ergebnisse werden Sie wahrscheinlich erzielen. Erstellen Sie einen Prompt und basierend auf den Ergebnissen, die Sie erhalten, und wiederholen Sie ihn, um ihn zu verbessern.
Beachten Sie die folgenden Best Practices, um effektive Prompts zu erstellen:
- Beschreiben Sie klar und prägnant die Aufgabe, die das LLM erledigen soll. Nicht mehr, nicht weniger. Achten Sie darauf, dass der Text vollständig und kurz ist.
- Darüber hinaus sollte der Prompt spezifisch und klar definiert sein und eine vage oder mehrdeutige Sprache vermeiden.
- Zerlegen Sie komplexe Aufgaben in kleinere, übersichtlichere Aufgaben. Indem Sie die Aufgabe in kleinere Schritte aufteilen, können Sie dem Modell helfen, sich auf eine Sache nach der anderen zu konzentrieren, und die Wahrscheinlichkeit von Fehlern oder Verwirrung verringern.
- Fügen Sie Ihrem Prompt Beispiele hinzu, um die Qualität der Antworten zu verbessern. Das LLM lernt anhand der Beispiele im Kontext, wie es zu reagieren ist.
Beim Erstellen eines Prompts können neben einer Beschreibung in natürlicher Sprache, welche Art von Kontext generiert werden soll, auch die folgenden Platzhalter verwendet werden:
$conversation
: Die Unterhaltung zwischen dem Agent und dem Nutzer, mit Ausnahme der letzten Nutzeräußerung. Sie können die Abbiegepräfixe anpassen (z.B.: „Mensch“, „KI“ oder „You“, „Agent“) in die Textaufforderung ein.$last-user-utterance
Die letzte Nutzeräußerung.$flow-description
Die Ablaufbeschreibung des aktiven Ablaufs.$route-descriptions
Die Intent-Beschreibungen der aktiven Intents.
Da wir nun einen ersten Text-Prompt haben, müssen wir sicherstellen, dass der Ablauf und die Intents gute Beschreibungen haben.
8. Beschreibungen des Ablaufs und der Intents hinzufügen
Ablaufbeschreibung hinzufügen
- Zum Hinzufügen einer Beschreibung zum Ablauf Liveaboards bewegen Sie den Mauszeiger auf den Ablauf im Abschnitt Flows (Abläufe) auf die Ablaufeinstellungen.
- 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.
Intent-Beschreibung hinzufügen
- Fügen wir nun dem Intent head.send.group.request eine gute Beschreibung hinzu. Wechseln Sie zum Tab Manage (Verwalten), wählen Sie im Abschnitt Resources (Ressourcen) die Option Intents und dann 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
Beachten Sie, dass die Beschreibung wichtige Informationen enthält, z. B. die minimale und maximale Anzahl von Fahrgästen, die auf einem Boot erlaubt sind. Das solltest du beachten.
- Klicken Sie auf Speichern.
Damit sind die ersten Schritte abgeschlossen. Sie haben das generative Fallback für No-Match-Event-Handler sowohl für die Ablauf- als auch für die Parameterausführung aktiviert. Sie haben außerdem 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 den Agent noch einmal, um zu sehen, wie er die gleichen schwierigen Fragen wie zuvor beantworten kann.
9. Agent noch einmal testen
Nachdem Sie das generative Fallback-Fallback für den virtuellen Kundenservicemitarbeiter konfiguriert und aktiviert haben, können Sie ähnliche schwierige Fragen stellen und sehen, wie damit die Antworten verarbeitet werden.
Klicken Sie auf Test Agent (Agent testen), um den Simulator wieder zu öffnen.
Fragen Sie den Kundenservicemitarbeiter noch einmal nach Live- und Live-Tauchen. Ab jetzt enthält jeder Dialog benutzerdefinierte Nachrichten sowie generierte Antworten, die in roten Kästchen hervorgehoben sind.
Haben Sie statt einer allgemeinen Aufforderung eine nette informative Antwort erhalten? Sehr gut! Nachdem Sie im Text-Prompt und in der Ablaufbeschreibung eine klare und prägnante Beschreibung der Aufgaben angegeben haben, die der Agent erledigen soll, ist er jetzt viel schlauer, wenn er detaillierte Fragen beantworten kann, ohne spezifische Intents zu erstellen. Ihr Kunde wird es zu schätzen wissen, dass der Kundenservicemitarbeiter eine fundiertere Antwort geben kann, anstatt sie zu ignorieren.
Sei nicht schüchtern und fordere den Mitarbeiter heraus. Frag ihn, ob er dir bei der Suche nach einem Tauchkurs helfen kann, da du noch kein zertifizierter Taucher bist.
Im Moment haben wir den Agent nicht für die Unterstützung bei Tauchkursen entwickelt. Woher weiß der Kundenservicemitarbeiter das? In dem Prompt wird genau beschrieben, womit der Kundenservicemitarbeiter helfen kann. „Momentan können wir Kunden nicht mit Tauchkursen an Land helfen. Tauchgeschäfte und Tauchresorts in der Nähe kann man nicht empfehlen.“
Führen Sie nun das Happy Szenario erneut durch und bereichern Sie das Gespräch. Sehen wir uns an, was sich geändert hat.
Wenn Dialogflow einen Intent zuordnet oder versucht, einen Parameter gemäß dem Ablaufdesign zu erfassen, werden die zum Entwurfszeitpunkt definierten Auftragsausführungen angezeigt. Wenn Nutzer eine Zusammenfassung der Reisedetails anfordern oder anbieten, ihre Telefonnummer anzugeben, kommt die generative Fallback-Funktion zum Einsatz.
Sehr gut! Sie haben das Happy-Szenario noch einmal getestet.
Leider kann in einer Unterhaltung auch etwas schiefgehen. Führen wir einen anderen Test durch. Dieses Mal wird nach der Anzahl der Gäste gefragt, ob sie eine Zahl größer als 15 ist.
Hier sind einige Dinge zu beachten:
- Warum ist 20 keine gültige Zahl? Weil wir in der Intent-Beschreibung eine Beschränkung für die Anzahl der Gäste festgelegt haben: "The agent sammelt Informationen wie Abflugzeit, Reiseziel, Anzahl der Gäste***(min 4 max 15 people)*** *, contact details*" . Die generative Antwort, die LLM zurückgegeben hat: „Leider können wir nur bei Gruppenbuchungen mit bis zu 15 Gästen helfen.“ mit den Einschränkungen, die wir in Bezug auf die Anzahl der Gäste festgelegt haben, absolut stimmig ist. Um dies weiter zu erzwingen, ist die Anzahl der Gäste eine benutzerdefinierte RegExp-Entität, die nur Zahlen im Bereich von 4 bis 15 entspricht.
- Das Gespräch geht weiter, weil der Nutzer letztendlich immer noch auf ein Angebot für 15 Taucher interessiert ist. Das passiert häufig in natürlichen Gesprächen und wir ändern unsere Meinung ziemlich häufig! Achten Sie darauf, wie der Agent kooperativ ist und den Nutzer sanft zurück auf den erfolgreichen Weg lenkt.
Das Konversationsdesign beinhaltet die Skripterstellung für eine Hälfte eines Dialogs in der Hoffnung, dass sie so stabil ist, dass jeder ein- und ausgehen kann. Beim Entwickeln von Long Tail Designs müssen sich Entwickler darauf konzentrieren, was der Nutzer bei jedem Schritt im Dialogfeld sagen könnte, um Routen, Handler und Parameter zu definieren. Aus diesem Grund haben wir Dialogflow CX das generative Fallback hinzugefügt. Damit können sich Entwickler auf die Grundsätze des Konversationsdesigns und weniger auf Details zur Implementierung konzentrieren, um Nutzern zuverlässige Konversationsfunktionen zur Verfügung zu stellen.
Lassen Sie uns einen weiteren Test durchführen, bei dem der Bot diesmal noch einmal mit einem Ort herausgefordert wird, der nicht in der Liste der verfügbaren Ziele wie die Malediven aufgeführt ist. Anschließend sehen wir uns kurz an, was hinter den Kulissen passiert.
Da wir auch das generative 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 generieren. Die regulären Antworten (unter „Vom Kundenservicemitarbeiter“ genannt) werden ignoriert.
Anhand der folgenden Textfelder können Sie besser nachvollziehen, wie die Platzhalter die an das Large Language Model gesendete Anfrage gestalten.
Dies ist der benutzerdefinierte Text-Prompt, den wir in Dialogflow konfiguriert haben, wobei die Platzhalter fett hervorgehoben sind:
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 habe ich die vom Large Language Model empfangene Eingabe und die Ausgabe mit der generierten Antwort eingefügt, die an den Nutzer zurückgegeben 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 zuvor durchgeführten Test wird die an den Nutzer zurückgesendete Antwort vom Modell generiert und basiert auf den Informationen, die wir im Rahmen der Intent-Beschreibung bereitgestellt haben: „The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands“
Liste der gesperrten Wortgruppen bearbeiten
Die Funktion für generatives Fallback kann auf verschiedene Arten konfiguriert werden:
- Wählen Sie eine bestimmte (bereits definierte) Aufforderung aus, die für die Antwortgenerierung verwendet werden soll.
- Benutzerdefinierten Prompt definieren.
- Liste der gesperrten Wortgruppen ändern
Bisher haben wir uns mit den ersten beiden Möglichkeiten beschäftigt. Schauen wir uns die dritte an.
- Gehen Sie in Agent Settings (Agent-Einstellungen) zum Tab ML und dann zum Untertab Generative AI.
- Fügen Sie der Liste im Abschnitt Gesperrte Wortgruppen die folgenden Sätze hinzu:
Dangerous country
Hateful place
Medical assistance
- Klicken Sie auf Speichern.
- Klicken Sie auf das Symbol Zurücksetzen und testen Sie das letzte Szenario noch einmal. Anstatt ein wunderschönes Tauchziel auf der ganzen Welt anzubieten, gib hier eine verbotene Phrase ein.
Der Prompt und die generierte Antwort werden mit der Liste der gesperrten Wortgruppen abgeglichen. Verbotene Formulierungen sind für Generative AI verbotene Formulierungen. Wenn die Eingabe verbotene oder als unsicher eingestufte Sätze enthält, wird die Generierung nicht erfolgreich sein. Stattdessen wird die normale vorgesehene Antwort (unter dem Vertreter des Kundenservicemitarbeiters in derselben Ausführungsform angegeben) gesendet.
Ausgezeichnet! Wir haben eine Reihe von Situationen behandelt, in denen generative Antworten wirklich einen Unterschied machen können. Probieren Sie es gern weiter!
10. Glückwunsch
Sie haben das Codelab erfolgreich abgeschlossen. Zeit zum Chillen!
Sie haben einen virtuellen Kundenservicemitarbeiter erstellt und das generative Fallback für no-match
-Event-Handler aktiviert, die in Abläufen und beim Ausfüllen von Parametern verwendet werden.
Die generative Fallback-Funktion in Kombination mit einer guten Ablauf- und Intent-Beschreibung kann spezifische und kooperative Antworten des Agents liefern – im Gegensatz zu allgemeinen Aufforderungen wie „Tut mir leid, ich bin mir nicht sicher, wie ich helfen kann“. oder "Die eingegebene Option ist ungültig". Durch Large Language Models generierte Fehler-Prompts können Nutzende sanft zu einem erfolgreichen Weg zurückleiten oder ihre Erwartungen an das, was nicht möglich ist, zurücksetzen.
Sie können gerne andere Situationen testen und die weiteren verfügbaren Funktionen für Dialogflow CX und Generative AI kennenlernen.
Bereinigen
Mit der folgenden Bereinigung 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 erstellten Agents.
- Rufen Sie in der Google Cloud Console die Seite „APIs und Dienste“ auf und deaktivieren Sie die Dialogflow API.
Weitere Informationen
In diesen Leitfäden und Ressourcen erfahren Sie mehr über konversationelle und generative KI:
- Dokumentation für Dialogflow CX
- Dokumentation zum 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.