1. Przegląd
Ostatnia aktualizacja: 10 października 2023 r.
Co utworzysz
W ramach tego ćwiczenia w Codelabs wykorzystasz Vertex AI Conversation i Dialogflow CX, aby skompilować, wdrożyć i skonfigurować agenta wirtualnego, który będzie pomagał osobom chcącym oddać krew i upewnić się, że spełniają wymagane kryteria kwalifikacji. Podczas realizacji w Dialogflow CX agent będzie korzystać z rzeczywistych danych publicznych i generatywnych dużych modeli językowych (LLM) Google.
Z jakich funkcji będziesz korzystać
W ramach tego ćwiczenia skonfigurujesz i użyjesz 3 różnych funkcji:
Agenci magazynu danych
Funkcja Vertex AI Conversation tworzy specjalnego agenta Dialogflow, zwanego agentem magazynu danych.
Dzięki tej funkcji możesz podać adres URL witryny, dane strukturalne lub dane niestrukturalne (magazyny danych), a Google przeanalizuje Twoje treści i utworzy wirtualnego agenta opartego na magazynach danych i dużych modelach językowych. Klienci i użytkownicy końcowi będą mogli rozmawiać z agentem i zadawać pytania dotyczące treści. Więcej informacji o tym typie agenta znajdziesz we wprowadzeniu do Vertex AI Conversation.
Generatory
Funkcja generatora to funkcja Dialogflow CX, która umożliwia programistom korzystanie z najnowszych generatywnych dużych modeli językowych (LLM) Google i niestandardowych promptów do generowania odpowiedzi agenta w czasie działania. Generator może obsługiwać ogólne odpowiedzi, które zawierają wiedzę ogólną z dużego zbioru danych tekstowych, na którym został wytrenowany, lub kontekst z rozmowy.
Przebieg generatywny
Funkcja generatywnego powrotu wykorzystuje najnowsze generatywne duże modele językowe (LLM) Google do generowania odpowiedzi agenta wirtualnego, gdy dane wejściowe użytkownika nie pasują do intencji lub parametru wypełniania formularza. Tę funkcję można skonfigurować za pomocą promptu tekstowego, który instruuje LLM, jak ma odpowiadać. Możesz użyć wstępnie zdefiniowanego prompta tekstowego lub dodać własne prompty. 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. Jeśli chcesz dowiedzieć się więcej o generatywnym zastępowaniu, wypróbuj to ćwiczenie.
Czego się nauczysz
- Jak utworzyć agenta magazynu danych na podstawie danych nieuporządkowanych
- Jak używać modułów obsługi wiedzy, aby umożliwić użytkownikom prowadzenie rozmów z agentem wirtualnym na temat treści dodanych do magazynu danych.
- Jak skonfigurować prompt generatora tekstu i dostosować go do kontekstu za pomocą wbudowanych obiektów zastępczych promptu generatora.
- Jak oznaczać słowa jako zmienne zastępcze promptu generatora, a następnie powiązywać je z parametrami sesji w realizacji, aby używać ich wartości podczas wykonywania.
- Jak skonfigurować generator do obsługi odpowiedzi, które wykorzystują wiedzę z dużego zbioru danych tekstowych i kontekst bieżącej rozmowy.
- Jak wygenerować formalny e-mail za pomocą generatorów
- Jak przetestować agenta i symulować pytania klientów, które wywołują wygenerowane odpowiedzi
Czego potrzebujesz
- Projekt Google Cloud
- przeglądarka, np. Chrome;
2. Włącz interfejsy API
Zanim utworzysz agenta magazynu danych w Vertex AI Conversation, musisz włączyć interfejsy Dialogflow oraz Vertex AI Search and Conversation API.
Aby włączyć interfejs Dialogflow API, wykonaj te czynności:
- W przeglądarce otwórz stronę z informacjami o usłudze Dialogflow API.
- Kliknij przycisk Włącz, aby włączyć interfejs Dialogflow API w projekcie Google Cloud.
Aby włączyć interfejs Vertex AI Search and Conversation API, wykonaj te czynności:
- W konsoli Google Cloud otwórz konsolę Vertex AI Search and Conversation.
- Przeczytaj i zaakceptuj Warunki korzystania z usługi, a następnie kliknij Continue and activate the API (Przejdź dalej i aktywuj API).
3. Tworzenie nowej aplikacji do obsługi czatu i magazynu danych dla niej
Teraz utworzysz nową aplikację do obsługi czatu dla agenta wirtualnego i skonfigurujesz ją za pomocą źródła danych. Zadaniem agenta, którego utworzysz, będzie pomaganie klientom mającym pytania dotyczące możliwości oddania krwi. Jako źródło informacji wykorzystasz australijską organizację Red Cross Lifeblood i utworzysz magazyn danych na podstawie nieustrukturyzowanych danych z witryny dotyczącej kryteriów oddawania krwi.
- Aby utworzyć nową aplikację do obsługi czatu w Vertex AI Conversation, możesz:
- Otwórz konsolę Vertex AI Conversation, a następnie u góry konsoli kliknij +Nowa aplikacja.
- Otwórz konsolę Dialogflow CX, kliknij +Utwórz nowego agenta, a następnie wybierz opcję Wygeneruj automatycznie. Następnie przejdziesz do kolejnego kroku w konsoli Vertex AI Conversation.
- W konsoli Vertex AI Conversation wybierz Czat jako typ aplikacji, którą chcesz utworzyć.
- Wpisz nazwę firmy w polu
Save a Life. Ten parametr służy do określania firmy, którą reprezentuje Twój agent, oraz zakresu jego działania. - Podaj nazwę agenta
Blood Donation Agent. - Kliknij Dalej.
- Kliknij Utwórz nowy magazyn danych.
- Wybierz Cloud Storage jako źródło danych dla magazynu danych.
- Wskaż ten folder Google Cloud Storage, który zawiera przykładowe dane na potrzeby tego laboratorium, i pamiętaj, że prefiks
gs://nie jest wymagany:cloud-samples-data/dialogflow-cx/arc-lifeblood - Jako typ importowanych danych wybierz Dokumenty nieuporządkowane.
- Kliknij Dalej.
- Podaj nazwę magazynu danych
Australian Red Cross Lifeblood Unstructured. - Aby utworzyć magazyn danych, kliknij Utwórz.
- Na liście magazynów danych wybierz nowo utworzony magazyn
Australian Red Cross Lifeblood Unstructured. - Aby utworzyć aplikację do obsługi czatu, kliknij Utwórz.
Gratulacje! Udało Ci się utworzyć aplikację do obsługi czatu opartą na wiedzy, która jest gotowa do pomocy potencjalnym darczyńcom. Czas na świętowanie!
Musisz jednak jeszcze wykonać kilka czynności, aby udostępnić agenta użytkownikom. W następnej sekcji użyjesz modułu obsługi wiedzy, aby umożliwić agentowi prowadzenie rozmów z użytkownikami na temat wymagań.
4. Konfigurowanie agenta do odpowiadania na najczęstsze pytania dotyczące kwalifikacji do oddania krwi
Podaj prompt dotyczący daty
Podczas gdy proces zbierania dokumentów działa w tle, nadajmy agentowi markę, edytując prompt magazynu danych.
- W konsoli Vertex AI Conversation kliknij nazwę aplikacji do obsługi czatu, która przekieruje Cię do konsoli Dialogflow CX, gdzie możesz przeprowadzić dalsze testy i dostosowania.
- W konsoli Dialogflow CX w agencie kliknij Ustawienia agenta (w prawym górnym rogu strony), a następnie otwórz kolejno karty ML i Generatywna AI.

- Wypełnij formularz poniżej, aby wygenerować ten prompt magazynu danych: Masz na imię
Donatei jesteś pomocnym i uprzejmymchatbotwSave a life, a fictitious organization. Twoim zadaniem jest pomóchumans with eligibility information.

Włączanie generatywnego wycofywania w przypadku zdarzenia braku dopasowania w domyślnym przepływie rozpoczęcia
- Przejdź na kartę Kompilacja i otwórz stronę startową.
- Kliknij moduł obsługi zdarzeń sys.no-match-default. Jeśli pole nie jest jeszcze zaznaczone, włącz funkcję generatywnego zastępowania.

Sprawdzanie magazynu danych agenta
Na stronie startowej kliknij Edytuj magazyny danych, aby sprawdzić ustawienia magazynu danych.

Utworzony wcześniej magazyn danych został już wybrany przez Dialogflow.

W sekcji Realizacja przewiń w dół do pozycji Odpowiedzi agenta. Realizacja to odpowiedź agenta na zapytanie użytkownika. Dialogflow wstępnie wypełnił pole Agent mówi parametrem $request.knowledge.answers[0], który w czasie działania zawiera najlepszą odpowiedź na pytanie użytkownika.

5. Testowanie agenta
Gdy dokumenty będą dostępne i gotowe do użycia przez agenta, sprawdź, jak dobre są odpowiedzi.
Kliknij Test Agent (Przetestuj agenta), aby ponownie otworzyć symulator.

Zadawaj pytania, na które odpowiedzi powinny znajdować się na stronie z najczęstszymi pytaniami w witrynie:
What age do I need to be to donate?Can pregnant women donate?I've just come back from a trip to Africa. Can I donate?How can I schedule an appointment?

Zwróć uwagę, że odpowiedzi pochodzą z witryny Australian Red Cross Lifeblood. Jak podano na tej stronie, obowiązują minimalny i maksymalny wiek dawcy krwi. Wiek minimalny to 18 lat, a maksymalny – 75 lat w przypadku osób, które oddają krew po raz pierwszy. Dodatkowym dowodem na to, że pobieramy informacje z magazynu danych, jest mała gwiazdka pojawiająca się w odpowiedzi agenta i w oryginalnej odpowiedzi JSON.

Na koniec spróbujmy zadać agentowi pytanie niezwiązane z oddawaniem krwi.
Użytkownik: „Jaka jest pogoda w Melbourne?”
Pracownik obsługi klienta: „Przykro mi, ale nie mogę Ci w tym pomóc. Jak mogę Ci pomóc w sprawie informacji o spełnianiu kryteriów?
Ta odpowiedź zawiera treści generowane przez AI i pochodzi z promptu tekstowego utworzonego przez Dialogflow na podstawie ustawienia agregatora wiedzy podanego wcześniej: „Masz na imię Donate i jesteś pomocnym i uprzejmym czatbotem w organizacji Save a Life. Twoim zadaniem jest pomaganie ludziom w uzyskiwaniu informacji o spełnianiu kryteriów”. Ten prompt tekstowy zawiera nazwę firmy, nazwę agenta i co najważniejsze, zakres jego działania, który jest używany przez Dialogflow do generowania odpowiedzi agenta.
Brawo! Do tej pory korzystasz z magazynu danych, aby pomagać osobom zadającym najczęstsze pytania dotyczące oddawania krwi. W kolejnej części tego laboratorium przyjrzymy się, jak powiązać prompt tekstowy generatora z tymi samymi treściami, aby podejmować świadome decyzje.
6. Konfigurowanie agenta do testu kwalifikacyjnego
Naszym kolejnym zadaniem jest zaprojektowanie agenta, który będzie określać, czy użytkownik może oddać krew. Dawcy muszą spełniać rygorystyczne wymagania, takie jak wiek, waga, choroby, niedawne podróże itp. Na potrzeby tego laboratorium skupimy się tylko na wieku i wadze. Generator będzie korzystać z dużych modeli językowych (LLM) Google, aby dynamicznie podejmować świadome decyzje na podstawie kontekstu rozmowy i bazy wiedzy.
Konfigurowanie nowych tras i parametrów
- Otwórz stronę startową i kliknij Edytuj magazyny danych.
- Zmień odpowiedź obecnego agenta na
$request.knowledge.answers[0] Would you like to take the eligibility quiz to find out if you can donate blood, and start changing lives?.

- Kliknij przycisk Zapisz.
- Teraz musimy zaprojektować agenta tak, aby obsługiwał odpowiedzi „tak” i „nie”. Na początek utwórz intencje confirmation.yes i confirmation.no. Postępuj zgodnie z tymi wskazówkami dotyczącymi ponownego wykorzystywania intencji.
- Następnie na stronie początkowej utwórz trasę dla intencji confirmation.yes, która prowadzi do nowej strony Quiz sprawdzający wymagania.


- Jak wspomnieliśmy wcześniej, uprościmy quiz i będziemy brać pod uwagę tylko wiek i wagę użytkownika, aby określić, czy kwalifikuje się on do oddania krwi. Otwórz stronę Test kwalifikacyjny i dodaj nowy parametr formularza age-weight. Jako typ jednostki wybierz
@sys.any. Podaj"What is your age and weight?"jako początkową odpowiedź na prompt. Chcemy zebrać zarówno wiek, jak i wagę za jednym razem. Zapisz wszystkie zmiany.

Tworzenie i konfigurowanie generatora kwalifikacji
Generator to funkcja Dialogflow CX, która umożliwia deweloperom korzystanie z najnowszych generatywnych dużych modeli językowych (LLM) Google podczas realizacji w Dialogflow CX. Generatory do generowania odpowiedzi agenta w czasie działania. Generator może obsługiwać ogólne odpowiedzi, które zawierają wiedzę ogólną z dużego zbioru danych tekstowych, na którym został wytrenowany, lub kontekst z rozmowy.
Utworzymy nowy generator, który będzie porównywać informacje podane przez użytkownika (np. wiek i wagę) z wymaganiami dotyczącymi możliwości oddania krwi, aby określić, czy użytkownik może to zrobić.
- W konsoli Dialogflow CX otwórz kartę Zarządzaj, wybierz Generatory i kliknij Utwórz nowy.

- Następnie podaj opisową nazwę wyświetlaną i napisz prompt tekstowy. Pozostaw domyślne ustawienia kontroli jakości modelu. Następnie kliknij Zapisz, aby utworzyć generator.
- Wyświetlana nazwa:
Blood Donation Eligibility - Podpowiedź tekstowa:
Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. Weight should be above 50 Kg. The user age and weight is $last-user-utterance. Be nice and tell the user if they are eligible to donate (also tell them why not in case)
- Wyświetlana nazwa:
Prompt tekstowy jest wysyłany do modelu generatywnego podczas realizacji w czasie działania. Powinno to być jasne pytanie lub prośba, aby model mógł wygenerować satysfakcjonującą odpowiedź. W prompcie tekstowym możesz używać specjalnych wbudowanych symboli zastępczych promptów generatora:
$conversationRozmowa między agentem a użytkownikiem, z wyłączeniem ostatniej wypowiedzi użytkownika.$last-user-utteranceOstatnia wypowiedź użytkownika.
Skonfigurowany przez Ciebie prompt tekstowy oczekuje, że użytkownik poda wiek i wagę w jednej turze rozmowy (``$last-user-utterance``).
Użyj generatora w realizacji i skonfiguruj wszystkie wymagane parametry
- Na stronie Quiz kwalifikacyjny dodaj nową ścieżkę, która będzie się pojawiać, gdy wszystkie parametry zostaną wypełnione. Wpisz wymagania dotyczące warunku
$page.params.status = "FINAL"i kliknij Zapisz.

- Otwórz sekcję Generators (Generatory) w panelu Fulfillment (Realizacja) i rozwiń ją. Następnie kliknij Dodaj generator i wybierz generator Kryteria kwalifikacji do oddania krwi. Po wybraniu generatora musisz zdefiniować parametr wyjściowy, który będzie zawierać wynik działania generatora po jego wykonaniu.

- Użyj parametru wyjściowego w odpowiedzi agenta i zapisz trasę. Możesz teraz wszystko przetestować.

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

W Symulatorze rozpocznij nową rozmowę z agentem. Najpierw zapytaj o wymagania dotyczące wieku, a potem przejdź do quizu sprawdzającego, czy użytkownik spełnia kryteria. Najpierw przetestuj ścieżkę „eligible” (kwalifikuje się), więc wpisz wiek z przedziału 18–75 lat i wagę powyżej 50 kg.

Następnie sprawdź, czy weryfikacja kwalifikacji nie powiedzie się, jeśli jeden lub oba wymagania nie zostaną spełnione.

Świetnie, generator działa zgodnie z oczekiwaniami. A może jednak? Co się stanie, jeśli użytkownik poda wiek, ale nie wagę (lub odwrotnie)?

8. Dostrajanie promptów generatora
Zbieranie informacji o wieku i wadze w jednym kroku nie działa, chyba że podasz zarówno wiek, jak i wagę. Zamiast tego powinniśmy utworzyć formularz, który zbiera obie wartości jako parametry jednostki. Aby dostosować prompt do wszystkich wymagań (np. wieku i wagi), możemy użyć symboli zastępczych, dodając znak $ przed słowem. Zastępcze zmienne promptu generatora powiążemy później z parametrami sesji w procesie realizacji, a podczas wykonywania zostaną one zastąpione wartościami parametrów sesji.
- Otwórz stronę Quiz kwalifikacyjny i dodaj 2 osobne parametry formularza: jeden dla wagi, a drugi dla wieku. Wybierz
@sys.number-integerjako typ jednostki i zaznacz wymagane parametry. Podaj początkowe odpowiedzi na prompt, np.How old are you?iWhat is your correct weight?. Zapisz wszystkie zmiany.

- Zanim zmienimy prompt tekstowy generatora, ponieważ dodamy 2 nowe niestandardowe symbole zastępcze, musimy najpierw usunąć generator z realizacji trasy. Kliknij Zapisz.

- Otwórz kartę Zarządzaj, wybierz Generatory i zaktualizuj prompt tekstowy generatora Kryteria kwalifikacji do oddania krwi, wpisując:
Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. The weight must be at least 50 kg. The user is $age years old and weighs $weight Kg. Craft an email and politely explain to the user if they're eligible to donate and if not why.. Kliknij Zapisz.
Zwróć uwagę, że nie tylko dostosowaliśmy tekst promptu do parametrów formularza dotyczących wieku i wagi, ale też zmieniliśmy ostatnie zdanie, aby można było wygenerować formalny e-mail do użytkownika zawierający oficjalny wynik quizu sprawdzającego, czy kwalifikuje się on do udziału w programie.

- Na stronie Quiz kwalifikacyjny wybierz ścieżkę i rozwiń sekcję Generatory w panelu Realizacja. Następnie kliknij Dodaj generator i wybierz generator „Kryteria kwalifikacji do oddania krwi”. Po wybraniu generatora musisz powiązać nowe symbole zastępcze promptu z odpowiednimi parametrami sesji. Musisz też ponownie ustawić parametr wyjściowy. Kliknij Zapisz.

- Ponownie przetestuj agenta. Sprawdzanie kryteriów kwalifikacji uwzględnia teraz zarówno wiek, jak i wagę, a sformułowanie zostało zmienione z konwersacyjnego na bardziej uprzejme, gotowe do wysłania bez udziału człowieka.


9. Gratulacje
Gratulujemy ukończenia tego ćwiczenia!

Dziś zbadaliśmy generatory w kontekście quizów kwalifikacyjnych. Generatory używają dużych modeli językowych do generowania odpowiedzi agenta, a gdy są oparte na bazie wiedzy, mogą też podejmować świadome decyzje. Z pewnością istnieje wiele innych zastosowań, które można wdrożyć przy użyciu generatorów i magazynów danych. Nie możemy się doczekać, aż je poznamy.
Czyszczenie
Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte w tym Codelabs, wykonaj te czynności czyszczenia:
- Aby uniknąć zbędnych opłat w Google Cloud, możesz usunąć projekt w konsoli Google Cloud, jeśli go nie potrzebujesz.
- Jeśli natomiast był to istniejący projekt Google Cloud, usuń utworzone zasoby, aby uniknąć obciążenia konta opłatami. Więcej informacji znajdziesz w instrukcjach usuwania aplikacji.
- Jeśli chcesz wyłączyć interfejsy API dla Vertex AI Conversation i Dialogflow, otwórz stronę szczegółów usługi Discovery Engine API, kliknij Wyłącz interfejs API i potwierdź, a następnie otwórz stronę szczegółów usługi Dialogflow API, kliknij Wyłącz interfejs API i potwierdź.
Więcej informacji
Aby dowiedzieć się więcej o konwersacyjnej i generatywnej AI, zapoznaj się z tymi przewodnikami i zasobami:
- Dokumentacja Dialogflow CX
- Wprowadzenie do Vertex AI Conversation
- Tworzenie agenta magazynu danych i korzystanie z niego
- Dokumentacja Vertex AI Conversation
- Generatywna AI w Google Cloud
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.