Zwiększaj zasięg intencji i płynnie radzij sobie z błędami dzięki generatywnej kreacji zastępczej

1. Przegląd

Ostatnia aktualizacja: 2023-08-07

Co utworzysz

W ramach tego ćwiczenia w Codelabs utworzysz, wdrożysz i skonfigurujesz prostego agenta wirtualnego w Dialogflow CX, który będzie pomagał nurkom podróżującym w grupach i osobom wynajmującym prywatne czartery. Agent wirtualny będzie używać generatywnej AI i najnowszych generatywnych dużych modeli językowych (LLM) od Google do generowania odpowiedzi.

Czego się nauczysz

  • Jak włączyć odpowiednie interfejsy API
  • Automatyczne wstępne wypełnianie wartości parametrów formularza strony w Dialogflow na podstawie parametrów intencji
  • Jak skonfigurować moduły obsługi zdarzeń w Dialogflow
  • Jak włączyć generatywne zastępowanie w modułach obsługi zdarzeń braku dopasowania używanych w przepływach i podczas wypełniania parametrów
  • Jak skonfigurować własny prompt tekstowy do obsługi podstawowych i specyficznych dla agenta sytuacji konwersacyjnych
  • Jak pisać dobre opisy intencji i parametrów, aby generować moduły obsługi ponownych pytań dotyczące wymaganych parametrów (oprócz ponownych pytań zdefiniowanych przez użytkownika)
  • Jak przetestować agenta i symulować pytania klientów, które wywołują generatywne działanie rezerwowe

Czego potrzebujesz

  • Projekt Google Cloud
  • przeglądarka, np. Chrome;

2. Przygotowania

Zanim zaczniesz korzystać z funkcji generatywnego wycofywania w Dialogflow CX, musisz włączyć interfejs Dialogflow API.

Włączanie interfejsu Dialogflow API za pomocą konsoli Cloud

  1. Otwórz konsolę Google Cloud w przeglądarce.
  2. W konsoli Google Cloud otwórz Bibliotekę interfejsów API, aby przejrzeć interfejsy API i usługi, które można włączyć.
  3. Na pasku wyszukiwania u góry strony Biblioteka interfejsów API wyszukaj Dialogflow API, a potem kliknij wynikową usługę.
  4. Kliknij przycisk Włącz, aby włączyć interfejs Dialogflow API w projekcie Google Cloud.

Korzystanie z gcloud CLI (alternatywnie)

Interfejs API można też włączyć za pomocą tego polecenia gcloud:

gcloud services enable dialogflow.googleapis.com

Jeśli interfejs API został włączony, powinien wyświetlić się komunikat podobny do tego:

Operation "operations/..." finished successfully.

Pobierz kod

Nie będziesz tworzyć agenta wirtualnego od zera. Udostępnimy Ci agenta, którego musisz przywrócić z konsoli Dialogflow CX, a następnie ulepszyć.

Aby pobrać kod źródłowy:

  1. Otwórz nową kartę przeglądarki, wejdź do repozytorium agenta i sklonuj je z wiersza poleceń.
  2. Pierwotny agent został wyeksportowany jako pakiet JSON. Rozpakuj plik, sprawdź ustawienia agenta, zapoznaj się z definicją przepływu Liveaboards.json i przejrzyj strony przepływu, intencje i elementy.

3. Tworzenie nowego agenta

Otwórz konsolę Dialogflow

W pozostałych krokach tego samouczka będziesz używać konsoli Dialogflow CX i projektu Google Cloud.

  1. W przeglądarce otwórz konsolę Dialogflow CX.
  2. Wybierz projekt Google Cloud, którego chcesz używać, lub utwórz nowy projekt.
  3. W konsoli Dialogflow CX powinna pojawić się lista agentów.

Jeśli korzystasz z Dialogflow CX po raz pierwszy, zapoznaj się z dokumentacją Dialogflow CX, aby dowiedzieć się więcej o konfigurowaniu projektu i ustawień w zależności od potrzeb.

Tworzenie nowego agenta Dialogflow CX

  1. Aby przywrócić agenta pobranego z repozytorium GitHub, musisz utworzyć nowego agenta. W konsoli Dialogflow CX w prawym górnym rogu strony kliknij Utwórz nowego agenta.

Tworzenie nowego agenta

  1. Wybierz opcję Utwórz własnego agenta.

Wybierz opcję

  1. Wypełnij formularz ustawieniami agenta podanymi poniżej i kliknij Utwórz, aby utworzyć agenta.
  • Jako wyświetlaną nazwę wybierz: Divebooker
  • Jako lokalizację wybierz: us-central1
  • Wybierz preferowaną strefę czasową.
  • Wybierz en - English jako język domyślny
  1. Dialogflow automatycznie otworzy agenta. To jeszcze nie koniec!

Przywracanie agenta Divebooker

  1. Wróć na stronę z listą agentów i znajdź utworzonego właśnie agenta. Kliknij opcję 78d2781c655810e7.png, a potem przycisk Przywróć.
  2. Wybierz opcję Prześlij, a następnie przeciągnij i upuść lub wybierz plik ZIP pobrany wcześniej z repozytorium GitHub.
  3. Kliknij przycisk Przywróć, aby zaimportować udostępnionego przez nas agenta.

Kliknij przycisk Przywróć, aby zaimportować udostępnionego przez nas agenta.

Brawo! Agent wirtualny do rezerwacji nurkowania jest gotowy do pomocy klientom. W następnej sekcji przetestujesz go i sprawdzisz, jak dobrze odpowiada na pytania użytkowników i pomaga w rezerwacjach.

4. Testowanie agenta

Dialogflow udostępnia wbudowany symulator, który umożliwia czatowanie z agentami i wykrywanie błędów. W przypadku każdej tury możesz sprawdzić prawidłowe wartości wywołanego zamiaru, odpowiedzi agenta, aktywnej strony i parametrów sesji.

Przetestujemy kilka scenariuszy i w każdym z nich sprawdzimy, dlaczego agent udziela określonej odpowiedzi. Zacznijmy od pierwszego.

Nierozwiązany zamiar

  1. W konsoli Dialogflow i w agencie kliknij Test Agent (Przetestuj agenta), aby otworzyć symulator.

Kliknij Testuj agenta, aby otworzyć symulator.

  1. Wpisz powitanie, np. Hello, i zadaj pytanie what is a liveaboard?. Pytanie nie pasuje do żadnego zamiaru, więc wyświetla się ogólny komunikat, np. „Nie wiem, jak mam pomóc”. Możesz sprawdzić, czy wbudowane zdarzenie sys.no-match-default zostało wywołane, sprawdzając pierwotną odpowiedź w symulatorze.

Przywitaj się z pracownikiem obsługi klienta i zapytaj, czym jest liveaboard.

Przewiń prawie do końca odpowiedzi JSON. Zwróć uwagę, że podczas wyszukiwania pasującego zamiaru Dialogflow stwierdza, że jest to NO_MATCH, i wywołuje zdarzenie no-match.

Sprawdź, czy Dialogflow wywołał zdarzenie sys.no-match-default

  1. Przejdź na kartę Build (Tworzenie) i otwórz Start Page (Strona początkowa) w sekcji Liveaboards (Łodzie mieszkalne).

Przejdź na kartę Build (Tworzenie) i otwórz stronę Start Page (Strona początkowa) przepływu Liveaboards.

Domyślnie każdy przepływ ma obsługę zdarzeń wbudowanych no-match i no-input. Te procedury obsługi zdarzeń są tworzone automatycznie podczas tworzenia przepływu i nie można ich usunąć.

  1. Kliknij moduł obsługi zdarzeń sys.no-match-default i przewiń w dół do sekcji Odpowiedzi agenta. Dialogflow udostępnia listę alternatywnych odpowiedzi, ale możesz też zdefiniować różne typy wiadomości z odpowiedziami, aby przekazywać użytkownikowi więcej niż tylko odpowiedzi tekstowe.

Sprawdź wstępnie zdefiniowane odpowiedzi agenta

Przejdźmy teraz do pozytywnego scenariusza.

Szczęśliwa ścieżka

W tym drugim przypadku wciel się w rolę nurka, który chce zarezerwować rejs nurkowy dla grupy 12 osób na Galapagos w lipcu przyszłego roku.

  1. W panelu Symulator kliknij ikonę Resetuj, aby rozpocząć nową rozmowę z agentem.

Zresetuj, aby rozpocząć nową rozmowę

Rozważ zmianę widoku na pionowy, aby zapewnić lepsze wrażenia użytkownika

  1. Poinformuj agenta, że chcesz zarezerwować czarter na wyspy Galapagos, i podaj szczegóły podróży. Nie musisz używać dokładnie tych samych promptów co poniżej. Eksperymentuj!

Testowanie szczęśliwej ścieżki

  1. Otwórz stronę startową i kliknij trasę head.send.group.request. Przewiń w dół do sekcji Przejście, która informuje Dialogflow, na którą stronę przejść, gdy zostanie dopasowany ten zamiar.

Przejście na stronę Zbieranie dodatkowych informacji

  1. Zamknij definicję Trasa i rozwiń stronę Zbierz dodatkowe informacje. Zwróć uwagę na realizację wpisu i listę parametrów.

Strona Zbieranie dodatkowych informacji

W przypadku każdej strony w Dialogflow CX możesz zdefiniować formularz, czyli listę parametrów, które powinny być zbierane od użytkownika na tej stronie. Pamiętaj, że agent nie zapytał o miejsce docelowe podróży, ponieważ przekazaliśmy je w ramach początkowego wejścia, a miejsce docelowe jest też parametrem intencji. Gdy strona stanie się aktywna, a także w okresie jej aktywności, każdy parametr formularza o nazwie identycznej z parametrem intencji zostanie automatycznie ustawiony na wartość parametru sesji, a odpowiedni prompt zostanie pominięty.

  1. Przejdź na kartę Zarządzaj i w sekcji Intencje kliknij intencję head.send group request. Sprawdź wyrażenia na potrzeby trenowania podane dla tego zamiaru oraz oznaczone części tych wyrażeń.

Sprawdź wyrażenia na potrzeby trenowania podane dla tego zamiaru oraz oznaczone części tych wyrażeń.

  1. Rozważmy frazę treningową „Muszę zorganizować wyjazd do Kostaryki dla 15 nurków”. „Kostaryka” jest oznaczona jako miejsce docelowe, a „15” jako liczba gości. Gdy dodasz adnotacje do części frazy treningowej, Dialogflow rozpozna, że te części są tylko przykładami rzeczywistych wartości, które będą podawane przez użytkowników w czasie działania. Dlatego w przypadku początkowego zapytania „Czy oferujecie czartery na wyspy Galapagos?” Dialogflow wyodrębnił parametr miejsca docelowego z wartości „Wyspy Galapagos”.

Następnie przyjrzymy się, co się stanie, jeśli nie podamy agentowi prawidłowych danych wejściowych, gdy poprosi o wypełnienie parametru formularza.

Nieprawidłowe dane wejściowe

  1. W panelu Symulator kliknij ikonę Resetuj, aby rozpocząć nową rozmowę z agentem.
  2. Wyraź chęć dokonania rezerwacji grupowej. Tym razem nie mów agentowi, dokąd chcesz się udać. Gdy zapyta Cię o miejsce docelowe, podaj losową wartość inną niż Kostaryka, Galapagos lub Meksyk.

Wpiszesz nieprawidłowe miejsce docelowe

  1. Na karcie Zarządzaj w sekcji Zasoby kliknij Typy jednostek. Zwróć uwagę na 2 karty: na karcie System znajdziesz encje systemowe, które są obecnie używane przez Twojego agenta. Karta Niestandardowe zawiera listę niestandardowych typów, które zostały utworzone w celu dopasowywania danych specyficznych dla tego agenta.

Niestandardowa encja docelowa

  1. Kliknij element miejsce docelowe, aby dowiedzieć się, z jakimi wartościami jest on zgodny. „Europa” nie jest jednym z wpisów ani synonimem.
  2. Na diagramie przepływu rozwiń stronę Zbierz dodatkowe informacje, która zawiera parametry formularza. Kliknij parametr Miejsce docelowe.
  3. W panelu parametrów przewiń w dół do sekcji Reprompt event handlers (Moduły obsługi zdarzeń ponownego pytania), a następnie kliknij moduł obsługi zdarzeń No-match default (Domyślne w przypadku braku dopasowania).

Ten moduł obsługi zdarzeń na poziomie parametru jest przeznaczony do obsługi nieprawidłowych danych wejściowych użytkownika podczas wypełniania formularza. Ponieważ „Europa” to nieoczekiwane dane wejściowe, wywołano zdarzenie sys.no-match-default i wywołano odpowiedni moduł obsługi ponownego pytania zdefiniowany dla tego zdarzenia. W sekcji Odpowiedź agenta znajdziesz 2 alternatywne komunikaty ponownego pytania.

Statyczne alternatywne komunikaty ponownego pytania, gdy użytkownik wpisze nieprawidłowe miejsce docelowe.

Dobra robota! Te przypadki testowe reprezentują typowe scenariusze, z którymi agent powinien sobie poradzić. Użytkownicy bardzo często zadają pytania, na które boty nie są w stanie odpowiedzieć, lub przesyłają prośby, których boty nie mogą spełnić. Projektowanie z myślą o długim ogonie, czyli o ścieżkach, którymi podąża większość użytkowników, jest bardzo złożone. Zastanów się, co może pójść nie tak w rozmowie i jakie nieoczekiwane lub nieobsługiwane ścieżki mogą wybrać użytkownicy.

Dzięki postępom w automatycznym rozpoznawaniu mowy (ASR) prawie zawsze wiemy dokładnie, co powiedzieli użytkownicy. Określenie, co użytkownicy mieli na myśli, nadal jest jednak trudne. Wypowiedzi często nie można zrozumieć w izolacji – można je zrozumieć tylko w kontekście. W następnej sekcji tego laboratorium przyjrzymy się, jak najnowsze generatywne duże modele językowe (LLM) od Google mogą pomóc w przywróceniu dialogu i pchnięciu rozmowy do przodu.

5. Włączanie przebiegu generatywnego

Czym jest funkcja przebiegu generatywnego?

Funkcja generatywnego wycofywania to funkcja Dialogflow CX, która wykorzystuje duże modele językowe (LLM) Google do generowania odpowiedzi agenta wirtualnego.

Jak to pomaga?

Pomiędzy kluczowymi przypadkami użycia pojawia się szereg dość powszechnych próśb użytkowników, takich jak powtórzenie tego, co powiedział agent, gdy użytkownik nie zrozumiał, wstrzymanie połączenia na prośbę użytkownika i podsumowanie rozmowy. W pierwszym teście agent nie odpowiedział na pytanie „Co to jest liveaboard?”, ponieważ nie utworzyliśmy intencji dla tego pytania ani nie zaprojektowaliśmy przepływu, który obsługiwałby tego typu ogólne pytania związane z nurkowaniem i liveaboardami.

Nawet przy dobrze zdefiniowanych intencjach istnieje ryzyko błędu. Użytkownicy mogą odbiegać od skryptu, milcząc (błąd braku danych wejściowych) lub mówiąc coś nieoczekiwanego (błąd braku dopasowania). Zapobieganie błędom jest lepsze niż ich obsługa po wystąpieniu, ale nie można ich całkowicie uniknąć. Ogólne prompty, takie jak „Nie wiem, jak mam pomóc” lub podobne minimalne rozwiązania, często nie są wystarczające. Komunikaty o błędach powinny być zgodne z zasadą współpracy, zgodnie z którą efektywna komunikacja opiera się na założeniu, że między uczestnikami rozmowy istnieje współpraca.

W następnej sekcji przyjrzymy się, jak skonfigurować funkcję rezerwową generatywną, aby zwiększyć zasięg intencji i uprościć obsługę błędów, co poprawi wrażenia klientów.

Włączanie generatywnego powrotu w przypadku zdarzenia braku dopasowania w całym przepływie

Możesz włączyć generatywne wycofywanie w modułach obsługi zdarzeń bez dopasowania używanych w przepływach, na stronach lub podczas wypełniania parametrów. Gdy w przypadku zdarzenia braku dopasowania włączona jest generatywna odpowiedź zastępcza, za każdym razem, gdy to zdarzenie zostanie wywołane, Dialogflow spróbuje wygenerować odpowiedź, która zostanie odczytana użytkownikowi. Jeśli wygenerowanie odpowiedzi się nie powiedzie, zostanie wysłana zwykła odpowiedź agenta.

W obsłudze zdarzeń braku dopasowania w agencie możesz włączyć generatywne wycofywanie, które można wykorzystać w realizacji przepływu, strony lub parametru.

Zaczniemy włączać generatywne zastępowanie w przypadku całego przepływu Liveaboards w przypadku domyślnego zdarzenia bez dopasowania.

  1. Rozwiń stronę początkową procedury.
  2. W sekcji Obsługa zdarzeń kliknij sys.no-match-default.
  3. W sekcji Odpowiedzi agenta zaznacz Włącz generatywne odpowiedzi zastępcze, a potem kliknij Zapisz.

W sekcji Odpowiedzi agenta zaznacz opcję Włącz generatywne odpowiedzi zastępcze.

Zapisz, aby włączyć generatywne zastępowanie na stronie początkowej Liveaboards

Włączanie generatywnego zastępowania w przypadku określonych zdarzeń braku dopasowania

Chcemy teraz włączyć generatywne zastępowanie, aby obsługiwać nieprawidłowe dane wejściowe, gdy agent zapyta o liczbę pasażerów:

  1. Otwórz stronę Zbieranie dodatkowych informacji, która zawiera parametry formularza. Kliknij parametr number-of-guests.
  2. Przejdź do docelowego modułu obsługi zdarzeń No-match (przewiń w dół do sekcji Moduły obsługi zdarzeń ponownego pytania, a następnie kliknij moduł obsługi zdarzeń No-match default).

Przejdź do docelowego modułu obsługi zdarzeń No-match (przewiń w dół do sekcji Moduły obsługi zdarzeń ponownego pytania, a następnie kliknij domyślny moduł obsługi zdarzeń No-match).

  1. W sekcji Odpowiedzi agenta zaznacz opcję Włącz generatywne kreacje zastępcze.

Włączanie kreacji zastępczych generowanych przez AI w przypadku parametru number-of-guest

  1. Na koniec kliknij Zapisz.
  2. Teraz powtórz te same kroki, aby włączyć generatywne zastępowanie w przypadku pól destinationemail-address.

Dobra robota! Masz włączone generatywne wycofywanie, aby obsługiwać nieoczekiwane intencje i nieprawidłowe wartości parametrów. Następnie pokażemy, jak skonfigurować funkcję zastępczą generatywnego tekstu za pomocą promptu tekstowego, który instruuje LLM, jak ma odpowiadać.

6. Konfigurowanie przebiegu generatywnego

Funkcja generatywnej odpowiedzi zastępczej przekazuje żądanie do dużego modelu językowego, aby wygenerować odpowiedź. Żądanie ma postać promptu tekstowego, który jest połączeniem języka naturalnego i informacji o bieżącym stanie agenta i rozmowy. Tę funkcję można skonfigurować na kilka sposobów:

  1. Wybierz konkretny (zdefiniowany wcześniej) prompt, który ma być użyty do wygenerowania odpowiedzi.
  2. Określ niestandardowy prompt.

Wybieranie zdefiniowanego już prompta

  1. W konsoli Dialogflow CX kliknij Ustawienia agenta.

Otwórz Ustawienia agenta

  1. Otwórz kartę ML, a potem podkartę generatywna AI.

Podzakładka Generatywna AI

Ta funkcja zawiera 2 szablony promptów: domyślny (niewidoczny) i przykładowy, który pomaga w tworzeniu własnych promptów.

  1. Wybierz szablon Przykład i kliknij przycisk Edytuj po prawej stronie menu, aby go sprawdzić.

Aby sprawdzić szablon, kliknij przycisk Edytuj po prawej stronie menu szablonów.

Dzięki wstępnie zdefiniowanemu promptowi agent wirtualny może obsługiwać podstawowe sytuacje konwersacyjne. Na przykład:

  • Przywitaj się z użytkownikiem i się z nim pożegnaj.
  • Powtórz to, co powiedział pracownik obsługi klienta, jeśli użytkownik nie zrozumiał.
  • Gdy użytkownik o to poprosi, nie rozłączaj się.
  • Podsumuj rozmowę.

Spróbujmy zdefiniować konkretny prompt tekstowy dla agenta Divebooker.

7. Definiowanie własnego promptu

  1. Skopiuj prompta poniżej i wklej go w obszarze Prompt tekstowy.
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:
  1. Kliknij Zapisz jako nowy szablon, aby zapisać nowy prompt jako nowy szablon (wybierz nową nazwę szablonu), a następnie kliknij Zapisz w prawym dolnym rogu panelu.

Utwórz prompt tekstowy dostosowany do agenta i zapisz go jako nowy szablon.

  1. Aby nowo utworzony prompt stał się aktywny, musisz też zapisać ustawienia.

Zapisz nowe ustawienia

Pisząc własny prompt tekstowy, zachowaj jasność, zwięzłość i precyzyjność. Sposób sformułowania prompta dla modelu LLM może mieć duży wpływ na jakość odpowiedzi. Modele LLM są trenowane pod kątem wykonywania instrukcji, więc im bardziej prompt przypomina precyzyjną instrukcję, tym lepsze wyniki prawdopodobnie uzyskasz. Utwórz prompta, a następnie na podstawie uzyskanych wyników ulepsz go.

Aby tworzyć skuteczne prompty, postępuj zgodnie z tymi sprawdzonymi metodami:

  1. Podaj jasny i zwięzły opis zadania, które ma wykonać LLM. Nie więcej, nie mniej. Niech będzie kompletny i krótki.
  2. Prompt powinien być konkretny i dobrze zdefiniowany, bez niejasnych lub niejednoznacznych sformułowań.
  3. Podziel skomplikowane zadania na mniejsze, bardziej przejrzyste części. Dzieląc zadanie na mniejsze etapy, możesz pomóc modelowi skupić się na 1 rzeczy naraz i zmniejszyć ryzyko popełnienia błędów lub dezorientacji.
  4. Aby poprawić jakość odpowiedzi, dodaj przykłady w prompcie. Model LLM uczy się w kontekście na podstawie przykładowych odpowiedzi.

Podczas tworzenia promptu oprócz opisu w języku naturalnym, który określa rodzaj kontekstu, jaki ma zostać wygenerowany, można też używać tych symboli zastępczych:

  • $conversation Rozmowa między agentem a użytkownikiem, z wyłączeniem ostatniej wypowiedzi użytkownika. Możesz dostosować prefiksy zwrotów (np. „Człowiek”, „AI” lub „Ty”, „Agent”) w prompcie tekstowym.
  • $last-user-utterance Ostatnia wypowiedź użytkownika.
  • $flow-description Opis aktywnego przepływu.
  • $route-descriptions Opisy intencji aktywnych.

Gdy mamy już wstępny prompt tekstowy, następnym zadaniem jest zadbanie o to, aby przepływ i intencje miały dobre opisy.

8. Dodawanie opisów ścieżki i intencji

Dodaj opis przepływu

  1. Aby dodać opis do ścieżki Liveaboards, otwórz ustawienia ścieżki, najeżdżając kursorem myszy na ścieżkę w sekcji Ścieżki.

Aby uzyskać dostęp do ustawień procesu, najedź kursorem myszy na proces w sekcji Procesy.

  1. Kliknij przycisk opcji 78d2781c655810e7.png.
  2. Wybierz Ustawienia przepływu i dodaj ten opis (lub podobny): search, find and book liveaboards.

Dodawanie opisu do procesu rezerwacji łodzi mieszkalnych

  1. Kliknij Zapisz.

Dodaj opis intencji

  1. Teraz dodajmy dobry opis do intencji head.send.group.request. Przejdź na kartę Zarządzaj, w sekcji Zasoby wybierz Intencje, a następnie kliknij intencję head.send.group.request.
  2. Dodaj ten tekst reklamy: 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

Pamiętaj, że opis zawiera ważne informacje, takie jak minimalna i maksymalna liczba pasażerów, którzy mogą przebywać na łodzi. Pamiętaj o tym!

  1. Kliknij Zapisz.

Gotowe. Włączono generatywne wycofywanie w przypadku modułów obsługi zdarzeń bez dopasowania zarówno w przypadku przepływu, jak i wypełniania parametrów. Masz też zdefiniowany własny prompt tekstowy, który funkcja rezerwowa generatywnego tekstu przekazuje do dużego modelu językowego, aby generować odpowiedzi.

W następnej sekcji ponownie przetestujesz agenta, aby sprawdzić, jak odpowie na te same trudne pytania co wcześniej.

9. Ponowne testowanie agenta

Po skonfigurowaniu i włączeniu wirtualnego agenta z generatywnym trybem awaryjnym możesz zadawać podobne trudne pytania i sprawdzać, jak radzi sobie z odpowiedziami.

Kliknij Test Agent (Przetestuj agenta), aby ponownie otworzyć symulator.

Ponowne testowanie agenta

Ponownie zapytaj agenta o nurkowanie na łodziach mieszkalnych. Od teraz zwracaj uwagę na to, że każdy dialog zawiera zdefiniowane przez użytkownika wiadomości oraz wygenerowane odpowiedzi wyróżnione w czerwonych ramkach.

Ponownie przetestuj agenta i zapytaj, czym jest liveaboard

Czy zamiast ogólnego ponownego prompta pojawiła się przydatna odpowiedź? Świetnie. Po podaniu jasnego i zwięzłego opisu zadań, które ma wykonać agent (w prompcie tekstowym i w opisie przepływu), Twój bot będzie znacznie lepiej odpowiadać na szczegółowe pytania bez tworzenia konkretnych intencji. Klient doceni, że pracownik obsługi klienta może udzielić mu bardziej przemyślanej odpowiedzi zamiast odpowiedzi, która nie pozwala podjąć żadnych działań.

Nie wstydź się i rzuć wyzwanie agentowi. Zapytaj, czy może Ci pomóc w znalezieniu kursu nurkowania, ponieważ nie masz jeszcze certyfikatu.

 Zapytaj agenta, czy może Ci pomóc w znalezieniu kursu nurkowania

Tak, obecnie agent nie jest przeznaczony do pomocy w przypadku kursów nurkowania. Skąd pracownik obsługi klienta to wie? W prompcie tekstowym wyraźnie wskazaliśmy, w czym pracownik obsługi klienta może Ci pomóc, a w czym nie. „Obecnie nie możesz pomagać klientom w przypadku nurkowania i kursów na lądzie. Nie możesz polecać lokalnych sklepów nurkowych ani ośrodków nurkowych”.

Teraz ponownie przetestuj scenariusz pozytywny i wzbogać rozmowę. Zobaczmy, jak zmieniło się to doświadczenie.

Ponownie przetestuj pozytywny scenariusz i wykaż się kreatywnością w dialogu.

Ponownie przetestuj pozytywny scenariusz i wykaż się kreatywnością w dialogu.

Gdy Dialogflow dopasuje intencję lub spróbuje zebrać parametr zgodnie z projektem przepływu, wyświetli realizacje zdefiniowane w momencie projektowania. Gdy użytkownik odbiega od skryptu, prosząc o podsumowanie szczegółów podróży lub oferując podanie numeru telefonu, włącza się funkcja rezerwowa generatywnej odpowiedzi.

Super! Ponownie przetestowano scenariusz pozytywny. Mam nadzieję, że rozmowa z agentem była przyjemna i naturalna, a jej przebieg był jak najbardziej zbliżony do rozmowy z pracownikiem obsługi klienta.

Niestety w rozmowie mogą wystąpić problemy. Przeprowadźmy inny test. Tym razem, gdy poprosimy Cię o podanie liczby gości, podaj liczbę większą niż 15.

Podaj liczbę gości większą niż 15

Podaj liczbę gości większą niż 15

Warto zwrócić uwagę na kilka kwestii:

  1. Dlaczego 20 nie jest prawidłową liczbą? Ustawiliśmy limit liczby gości w opisie intencji: „Agent zbiera informacje takie jak okres wyjazdu, miejsce docelowe, liczba gości ***(min. 4, maks. 15 osób)****, dane kontaktowe*”. Wygenerowana przez LLM odpowiedź „Przepraszamy, możemy pomóc tylko w przypadku rezerwacji grupowych dla maksymalnie 15 osób” jest w pełni zgodna z ograniczeniami, które podaliśmy w odniesieniu do liczby gości. Aby jeszcze bardziej to egzekwować, liczba gości jest niestandardową jednostką wyrażenia regularnego, która pasuje tylko do liczb z zakresu 4–15.
  2. Rozmowa trwa dalej, ponieważ użytkownik nadal chce otrzymać ofertę dla 15 nurków. Często zdarza się to podczas naturalnych rozmów – dość często zmieniamy zdanie. Zwróć uwagę, jak agent współpracuje z użytkownikiem i delikatnie kieruje go z powrotem na właściwą ścieżkę.

Projektowanie rozmów polega na napisaniu połowy dialogu z nadzieją, że będzie on na tyle solidny, że każdy będzie mógł wziąć w nim udział i odegrać drugą połowę. Projektując pod kątem długiego ogona, deweloperzy muszą skupić się na tym, co użytkownik może powiedzieć na każdym etapie dialogu, aby zdefiniować ścieżki, moduły obsługi i parametry. Dlatego dodaliśmy do Dialogflow CX funkcję generowania odpowiedzi zastępczych, aby deweloperzy mogli skupić się na zasadach projektowania rozmów, a nie na szczegółach implementacji, i zapewnić użytkownikom solidne funkcje konwersacyjne.

Przeprowadźmy jeszcze jeden test. Tym razem ponownie poproś bota o miejsce, które nie znajduje się na liście dostępnych miejsc docelowych, np. Malediwy. Następnie przyjrzymy się temu, co dzieje się za kulisami.

Ponownie poproś bota o informacje o miejscu, które nie znajduje się na liście dostępnych miejsc docelowych, np. o Malediwach.

Pamiętaj, że w przypadku parametru miejsce docelowe w zdarzeniu no-match włączyliśmy też generatywne wycofywanie, więc żądanie jest wysyłane do dużego modelu językowego w celu wygenerowania odpowiedzi. Standardowe gotowe odpowiedzi (w sekcji „Odpowiedź pracownika obsługi klienta”) są ignorowane.

Pola tekstowe poniżej pomogą Ci lepiej zrozumieć, jak symbole zastępcze kształtują prośbę wysyłaną do dużego modelu językowego.

To jest niestandardowy prompt tekstowy skonfigurowany w Dialogflow z obiektami zastępczymi wyróżnionymi pogrubioną czcionką:

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 polu tekstowym poniżej znajdziesz dane wejściowe otrzymane przez duży model językowy i dane wyjściowe zawierające wygenerowaną odpowiedź, która zostanie przekazana użytkownikowi:

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.

Podobnie jak w przypadku poprzedniego testu, odpowiedź wysyłana do użytkownika jest generowana przez model i opiera się na informacjach, które podaliśmy w ramach opisu intencji: „Miejsce docelowe musi być jednym z tych miejsc w regionie Pacyfiku: Kostaryka, Meksyk, Wyspy Galapagos”.

Modyfikowanie listy zabronionych fraz

Funkcję rezerwowego generowania można skonfigurować na kilka sposobów:

  1. Wybierz konkretny (zdefiniowany wcześniej) prompt, który ma być użyty do wygenerowania odpowiedzi.
  2. Określ niestandardowy prompt.
  3. Zmień listę zabronionych fraz.

Do tej pory przyjrzeliśmy się 2 pierwszym sposobom. Przyjrzyjmy się trzeciej z nich.

  1. ustawieniach agenta otwórz kartę Uczenie maszynowe, a następnie podkartę Generatywna AI.
  2. W sekcji Zakazane wyrażenia dodaj do listy te zdania:
  3. Dangerous country
  4. Hateful place
  5. Medical assistance
  6. Kliknij Zapisz.
  7. Kliknij ikonę Resetuj i ponownie przetestuj ostatni scenariusz. Zamiast podać piękne miejsce do nurkowania na świecie, wpisz jedno z zakazanych wyrażeń.

Przetestuj jedną z zabronionych fraz

Prompt i wygenerowana odpowiedź są sprawdzane pod kątem występowania na liście zakazanych zwrotów. Zabronione frazy to frazy, których nie można używać w generatywnej AI. Jeśli dane wejściowe zawierają zabronione lub uznane za niebezpieczne frazy, generowanie się nie powiedzie i zamiast tego zostanie wydana zwykła, określona odpowiedź (w sekcji „Agent mówi” w tym samym spełnieniu).

Świetna robota! Omówiliśmy wiele sytuacji, w których odpowiedzi generatywne mogą mieć duże znaczenie. Możesz dalej testować.

10. Gratulacje

Gratulujemy ukończenia ćwiczeń z programowania. Czas na relaks.

Cbo Chill

Udało Ci się utworzyć agenta wirtualnego i włączyć zastępcze odpowiedzi generatywne w no-match modułach obsługi zdarzeń używanych w przepływach i podczas wypełniania parametrów.

Funkcja generatywnego powrotu w połączeniu z dobrymi opisami przepływu i intencji może zapewnić agentowi konkretne i pomocne odpowiedzi, w przeciwieństwie do ogólnych promptów, takich jak „Przepraszam, nie wiem, jak Ci pomóc” lub „Przepraszam, wprowadzono nieprawidłową opcję”. Komunikaty o błędach generowane przez duże modele językowe mogą delikatnie kierować użytkowników z powrotem na właściwe ścieżki lub resetować ich oczekiwania co do tego, co jest możliwe, a co nie.

Możesz przetestować inne sytuacje konwersacyjne i poznać inne funkcje dostępne w Dialogflow CXgeneratywnej AI.

Czyszczenie

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym Codelabs, wykonaj te czynności czyszczenia:

  • Otwórz konsolę Dialogflow CX i usuń wszystkich utworzonych agentów.
  • W konsoli Google Cloud otwórz stronę Interfejsy API i usługi i wyłącz interfejs Dialogflow API.

Więcej informacji

Aby dowiedzieć się więcej o konwersacyjnej i generatywnej AI, zapoznaj się z tymi przewodnikami i zasobami:

Licencja

To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.