1. Omówienie
Ostatnia aktualizacja: 10.10.2023 r.
Co utworzysz
W ramach tego ćwiczenia w programie użyjesz Vertex AI Conversation i Dialogflow CX, aby skompilować, wdrożyć i skonfigurować agenta wirtualnego, który będzie pomagał osobom, które chcą oddać krew, i spełniają odpowiednie wymagania. Podczas realizacji Dialogflow CX agent będzie używać prawdziwych danych publicznych i generatywnych dużych modeli językowych Google (LLM).
Z jakich funkcji będziesz korzystać
Aby wykonać ćwiczenia w Codelabs, będziesz konfigurować i używać 3 różnych funkcji:
Agenty magazynu danych
Funkcja Vertex AI Conversation tworzy specjalnego agenta Dialogflow o nazwie agenta magazynu danych.
Dzięki tej funkcji podajesz adres URL witryny, uporządkowane dane lub nieuporządkowane dane (magazyny danych), a następnie Google analizuje treści i tworzy agenta wirtualnego, który korzysta z magazynów danych i dużych modeli językowych. Klienci i użytkownicy będą mogli rozmawiać z pracownikiem obsługi klienta i zadawać pytania na temat treści. Informacje o tym typie agenta znajdziesz we wprowadzeniu do Vertex AI Conversation.
Generatory
Funkcja generatora to funkcja Dialogflow CX, która umożliwia programistom używanie najnowszych generatywnych dużych modeli językowych Google (LLM) oraz niestandardowych promptów do generowania odpowiedzi agenta w czasie działania. Generator może obsługiwać odpowiedzi ogólne, które wymagają ogólnej wiedzy z dużego tekstowego zbioru danych, na którym został wytrenowany, lub kontekstu rozmowy.
Generatywna kreacja zastępcza
Funkcja generatywnej AI korzysta z najnowszych generatywnych dużych modeli językowych Google (LLM) do generowania odpowiedzi agenta wirtualnego, gdy dane wejściowe użytkownika nie pasują do intencji lub parametru wypełniania formularza. Funkcję można skonfigurować za pomocą prompta tekstowego, który instruuje LLM, jak ma odpowiedzieć. Możesz użyć wstępnie zdefiniowanego prompta tekstowego lub dodać własne. Możesz ją włączyć w przypadku niepasujących modułów obsługi zdarzeń używanych w przepływach, na stronach lub podczas wypełniania parametrów. Gdy generatywna kreacja zastępcza jest włączona w przypadku zdarzenia braku dopasowania, za każdym razem, gdy to zdarzenie się aktywuje, Dialogflow próbuje wygenerować wygenerowaną odpowiedź, która zostanie zwrócona użytkownikowi. Jeśli wygenerowanie odpowiedzi się nie uda, zostanie wysłana standardowa odpowiedź agenta. Jeśli chcesz dowiedzieć się więcej o generatywnej kreacji zastępczej, zapoznaj się z tym ćwiczeniem z programowania.
Czego się nauczysz
- Jak utworzyć agenta magazynu danych na podstawie nieuporządkowanych danych
- Jak używać modułów obsługi wiedzy, aby umożliwić użytkownikom rozmowę z agentem wirtualnym na temat treści dodanych do magazynu danych.
- Jak skonfigurować prompt tekstowy generatora i nadać mu kontekst, korzystając z wbudowanych obiektów zastępczych promptów generatora.
- Jak oznaczać słowa jako zmienne promptów generatora, a następnie powiązać je z parametrami sesji w ramach realizacji, aby używać ich wartości podczas wykonywania.
- Jak skonfigurować generator do obsługi odpowiedzi, które obejmują informacje z dużego tekstowego zbioru danych i kontekst z bieżącej rozmowy.
- Jak wygenerować oficjalnego e-maila za pomocą generatorów
- Jak przetestować agenta i symulować pytania klienta, które aktywują generowane odpowiedzi
Czego potrzebujesz
- Projekt Google Cloud
- przeglądarki, np. Chrome;
2. Włącz interfejsy API
Zanim utworzysz agenta magazynu danych w narzędziu 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ę szczegółów usługi 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ę wyszukiwania i rozmów Vertex AI.
- Przeczytaj i zaakceptuj Warunki korzystania z usługi, a następnie kliknij Continue and activate the API (Przejdź dalej i aktywuj API).
3. Utwórz nową aplikację do obsługi czatu i magazyn danych dla swojej aplikacji
Teraz utworzysz nową aplikację do obsługi czatu dla agenta wirtualnego i skonfigurujesz ją ze źródłem danych. Celem tworzonego przez Ciebie agenta jest pomaganie klientom, którzy mają pytania na temat zalegania krwi w krwi. Wykorzystasz dane Australijskiego Czerwonego Krzyża jako źródła informacji i utworzysz magazyn danych na podstawie nieuporządkowanych danych ze strony kwalifikowania się krwi.
- Aby utworzyć nową aplikację do obsługi czatu w Vertex AI Conversation, wykonaj jedną z tych czynności:
- Otwórz konsolę konwersacyjną Vertex AI, a potem u góry konsoli kliknij +Nowa aplikacja.
- Otwórz konsolę Dialogflow CX, kliknij +Utwórz nowego agenta i wybierz opcję Generuj automatycznie. Przekierujemy Cię do kolejnego kroku w konsoli Vertex AI Conversation.
- W konsoli konwersacyjnej Vertex AI wybierz Google Chat jako typ aplikacji, którą chcesz utworzyć.
- W polu Nazwa firmy wpisz
Save a Life
. Ten parametr służy do określania firmy, którą reprezentuje Twój agent, oraz jego zakresu. - W polu Nazwa agenta podaj
Blood Donation Agent
. - Kliknij Dalej.
- Kliknij Utwórz nowy magazyn danych.
- Wybierz Cloud Storage jako źródło danych magazynu danych.
- Podaj następujący folder Google Cloud Storage, który zawiera przykładowe dane tego ćwiczenia z programowania. Prefiks
gs://
nie jest wymagany:cloud-samples-data/dialogflow-cx/arc-lifeblood
- Jako typ importowanych danych wybierz Dokumenty nieuporządkowane.
- Kliknij Dalej.
- W polu Nazwa magazynu danych podaj
Australian Red Cross Lifeblood Unstructured
. - Kliknij Utwórz, aby utworzyć magazyn danych.
- Z listy magazynów danych wybierz nowo utworzony magazyn danych
Australian Red Cross Lifeblood Unstructured
. - Kliknij Utwórz, aby utworzyć aplikację do obsługi czatu.
Gratulacje! Twoja aplikacja do czatowania oparta na wiedzy jest gotowa do pomagania potencjalnym darczyńcom, więc poświęć chwilę na świętowanie.
Musisz jednak wykonać jeszcze więcej pracy, aby zapewnić użytkownikom dostęp do agenta. W następnej sekcji użyjesz modułu obsługi wiedzy, który umożliwi Ci prowadzenie rozmów między agentem a użytkownikami na temat wymagań.
4. Skonfiguruj agenta, aby odpowiadał na najczęstsze pytania dotyczące kwalifikacji krwi
Podaj prompt dla zapisu daty
Podczas gdy proces zbierania dokumentów przebiega w tle, nadaj agentowi nazwę marki, edytując prompt dla magazynu danych.
- W konsoli Vertex AI Conversation kliknij nazwę aplikacji do obsługi czatu. Spowoduje to przekierowanie do konsoli Dialogflow CX, gdzie możesz przeprowadzić dalsze testy i dostosowanie.
- W konsoli Dialogflow CX z poziomu agenta kliknij Ustawienia agenta (w prawym górnym rogu strony), a następnie przejdź na kartę ML i na koniec otwórz kartę Generative AI (Generatywna AI).
- Wypełnij poniższy formularz, aby wygenerować następujący prompt dla magazynu danych: Twoje imię i nazwisko to
Donate
, a obecnie jesteś pomocnym i uprzejmym użytkownikiem w firmiechatbot
w firmieSave a life, a fictitious organization
. Twoim zadaniem jest pomóc użytkownikowihumans with eligibility information
.
Włącz generatywną kreację zastępczą dla zdarzenia braku dopasowania domyślnego przepływu początkowego
- Przejdź na kartę Kompilacja i otwórz stronę startową.
- Kliknij moduł obsługi zdarzeń sys.no-match-default. Włącz generatywną funkcję kreacji zastępczej, chyba że pole jest jeszcze zaznaczone.
Sprawdź magazyn danych agenta
Na stronie początkowej kliknij Edytuj magazyny danych, aby przejrzeć ustawienia magazynu danych.
Utworzony wcześniej magazyn danych został już wybrany przez Dialogflow.
Przewiń w dół do sekcji Agent Responses (Odpowiedzi pracownika obsługi klienta) w sekcji Fulfillment (Realizacja). Realizacja to odpowiedź agenta na rzecz użytkownika. W usłudze Dialogflow wstępnie wypełniono pole Komunikat agenta 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 pracownika obsługi klienta, sprawdź, jak trafne są odpowiedzi.
Kliknij Test Agent (Testuj agenta), aby ponownie otworzyć Simulator.
Zadawaj pytania, które można znaleźć 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 są pobierane z witryny Australijskiego Czerwonego Krzyża. Zgodnie z informacjami na tej stronie obowiązują minimalne i maksymalne przedziały wiekowe oddawania krwi. Minimalny wiek to 18 lat, a maksymalny – 75 lat dla darczyńców po raz pierwszy. Kolejnym dowodem na to, że pobieramy informacje z magazynu danych, jest ikona małej gwiazdki w odpowiedzi agenta oraz w pierwotnej odpowiedzi JSON.
Na koniec spróbujmy zadać agentowi pytanie całkowicie niezwiązane z przekazywaniem krwi.
Użytkownik: „Jaka jest pogoda w Melbourne?”.
Agent: „Nie mogę w tym pomóc. Jak mogę pomóc Ci w uzyskaniu informacji o kryteriach kwalifikacji?
Ta odpowiedź zawiera treści wygenerowane przez AI i wywodzi się z promptu tekstowego utworzonego przez Dialogflow, który został utworzony na podstawie wcześniejszego ustawienia łącznika wiedzy: „Nazywam się Donate i jesteś pomocnym i uprzejmym czatbotem w firmie Save a Life. Twoim zadaniem jest pomóc innym użytkownikom uzyskać informacje o kryteriach kwalifikacji”. Ten prompt tekstowy zawiera nazwę firmy, nazwę agenta i najważniejsze informacje z zakresu, które są używane przez Dialogflow do wygenerowania odpowiedzi agenta.
Brawo! Na razie używasz magazynu danych, aby udzielać odpowiedzi na najczęstsze pytania na temat krwiodawstwa. W następnej części ćwiczenia w Codelabs dowiesz się, jak powiązać prompt generatora z tymi samymi treściami, aby podejmować świadome decyzje.
6. Przygotowanie agenta do testu kwalifikacyjnego
Następnym zadaniem jest zaprojektowanie agenta, który sprawdzi, czy dana osoba może oddać krew. darczyńcy muszą spełnić rygorystyczne wymagania, takie jak wiek, waga, obecne warunki, ostatnie podróże itp. W zakresie tych ćwiczeń z programowania bierzemy pod uwagę tylko wiek i wagę. Generator używa dużych modeli językowych Google (LLM), aby dynamicznie podejmować świadome decyzje na podstawie kontekstu rozmowy i bazy wiedzy.
Konfigurowanie nowych tras i parametrów
- Otwórz stronę początkową 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 do obsługi odpowiedzi „tak” i „nie” odpowiedzi. Na początek utwórz intencję confirmation.yes oraz intencję confirmation.no. Postępuj zgodnie z tymi wskazówkami dotyczącymi ponownego wykorzystania intencji.
- Następnie na stronie początkowej utwórz trasę dla intencji confirmation.yes, która zostanie przeniesiona do nowej strony – Test kwalifikacji.
- Jak już wspomnieliśmy, uprościmy quiz. O tym, czy może on przekazać darowiznę, bierzemy pod uwagę tylko wiek i wagę użytkownika. Otwórz stronę Test kwalifikacji i dodaj nowy parametr formularza wiek-weight (waga wieku), a jako typ elementu wybierz
@sys.any
. Jako początkową realizację prośby podaj"What is your age and weight?"
. Chcemy zbierać dane o wieku i wadze za jednym razem. Zapisz wszystkie zmiany.
Tworzenie i konfigurowanie generatora kwalifikowalności
Funkcja generatora to funkcja Dialogflow CX, która umożliwia programistom używanie najnowszych generatywnych dużych modeli językowych Google (LLM) podczas realizacji Dialogflow CX. Generatory do generowania odpowiedzi agenta w czasie działania. Generator może obsługiwać odpowiedzi ogólne, które wymagają ogólnej wiedzy z dużego tekstowego zbioru danych, na którym został wytrenowany, lub kontekstu rozmowy.
Stworzymy nowy generator, który porówna informacje podane przez użytkownika (takie jak wiek i waga) z wymaganiami, aby określić, czy użytkownik może przekazać darowiznę.
- W konsoli Dialogflow CX otwórz kartę Manage (Zarządzanie), wybierz Generators (Generatory) i kliknij Create new (Utwórz nową).
- Następnie podaj opisową wyświetlaną nazwę i wpisz prompt tekstowy. Pozostaw domyślne ustawienia kontroli jakości modelu. Następnie kliknij Zapisz, aby utworzyć generator.
- Wyświetlana nazwa:
Blood Donation Eligibility
- Prompt tekstowy:
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 w trakcie realizacji. Musi to być jasne pytanie lub żądanie, aby model mógł wygenerować satysfakcjonującą odpowiedź. W prompcie tekstowym możesz użyć specjalnych obiektów zastępczych promptów generatora:
$conversation
Rozmowa między agentem a użytkownikiem, z wyłączeniem ostatniej wypowiedzi użytkownika.$last-user-utterance
Ostatnia wypowiedź użytkownika.
Skonfigurowany przez Ciebie prompt tekstowy wymaga, aby użytkownik podał wiek i wagę w jednej turze konwersacji („$last-user-utterance”).
Użyj generatora w ramach realizacji i skonfiguruj wszystkie wymagane parametry
- Na stronie Test kwalifikacji dodaj nową trasę, która pojawi się po wypełnieniu wszystkich parametrów. Wpisz wymóg warunku
$page.params.status = "FINAL"
i kliknij Zapisz.
- Otwórz sekcję Generatory w panelu Realizacja i rozwiń ją. Następnie kliknij Dodaj generator i wybierz generator Kryteria kwalifikacji do darowizny krwi. Po wybraniu generatora określ parametr wyjściowy, który po uruchomieniu będzie zawierał wynik działania generatora.
- Użyj parametru wyjściowego w odpowiedzi agenta i zapisz trasę. Teraz możesz wszystko przetestować.
7. Ponownie przetestuj agenta
Kliknij Test Agent (Testuj agenta), aby ponownie otworzyć symulator.
W aplikacji Simulator rozpocznij nową rozmowę z agentem. Najpierw zapytaj o wymagania dotyczące wieku, a potem przejdź do quizu. Przetestuj „odpowiednie” jako pierwsze, więc wpisz wiek z przedziału 18–75 lat i wagę powyżej 50 kg.
Następnie sprawdź, czy weryfikacja kwalifikowalności się nie powiedzie, jeśli nie zostanie spełniony co najmniej jeden z tych warunków.
Świetnie, generator działa zgodnie z oczekiwaniami. Czy tak jest? Co się stanie, jeśli użytkownik poda wiek, ale nie wagę (lub odwrotnie)?
8. Dostrajanie promptów generatora
Wydaje się, że zbieranie danych o wieku i wadze w przeszłości nie działa, jeśli nie podano wieku i wagi. Powinniśmy zamiast tego utworzyć formularz, który zbiera obie wartości jako parametry encji. Aby podpowiedzi były kontekstowe wszystkich wymagań (takich jak wiek czy waga), możemy użyć zmiennych, dodając znak $ przed słowem. Później powiążemy te zmienne w promptach generatora z parametrami sesji w ramach realizacji i w trakcie realizacji zostaną zastąpione wartościami parametrów sesji.
- Otwórz stronę Test kwalifikacji i dodaj do formularza 2 osobne parametry formularza: 1 dla wagi i 1 wiek. Wybierz
@sys.number-integer
jako typ elementu i oznacz parametry wymagane. Podaj początkowe dane realizacji promptu, np.How old are you?
iWhat is your correct weight?
. Zapisz wszystkie zmiany.
- Zanim będziemy mogli zmienić prompt tekstowy generatora, ponieważ dodamy 2 nowe niestandardowe obiekty zastępcze, musimy najpierw usunąć generator z realizacji trasy. Kliknij Zapisz.
- Otwórz kartę Zarządzaj, wybierz Generatory, a następnie w prompcie tekstowym generatora Kryteria kwalifikacji do przekazywania krwi podaj:
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 tekst podpowiedzi nie został po prostu dopasowany do parametrów formularza o wieku i wadze. Zmieniliśmy też ostatnie zdanie, by umożliwić wygenerowanie do użytkownika oficjalnego e-maila z oficjalnym wynikiem quizu kwalifikacyjnego.
- Na stronie Test kwalifikacji wybierz trasę i rozwiń sekcję Generatory w panelu Fulfillment. Następnie kliknij Dodaj generator i wybierz generator uprawnień do oddawania krwi. Po wybraniu generatora musisz powiązać nowe obiekty zastępcze promptów z odpowiednimi parametrami sesji. Konieczne będzie też ponowne ustawienie parametru wyjściowego. Kliknij Zapisz.
- Ponownie przetestuj agenta. Podczas weryfikacji kwalifikacji bierzemy pod uwagę wiek i wagę użytkownika, a jej treść została zmieniona z swobodnego tonu na bardziej uprzejmą odpowiedź, którą można wysłać bez udziału człowieka.
9. Gratulacje
Udało Ci się ukończyć ćwiczenia z programowania.
Dzisiaj przeanalizowaliśmy generatory w kontekście testów kwalifikacji. Zaobserwowaliśmy, że generatory używają modeli LLM do generowania odpowiedzi agentów, a gdy bazują na bazie wiedzy, mogą podejmować przemyślane decyzje. Z pewnością istnieje wiele innych przypadków użycia, które można wdrożyć z wykorzystaniem generatorów i magazynów danych. Chętnie je poznamy.
Czyszczenie
Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby zużyte podczas tego ćwiczenia z programowania, możesz wykonać te czyszczenie:
- Aby uniknąć zbędnych opłat za Google Cloud, możesz usunąć projekt za pomocą konsoli Google Cloud, jeśli nie jest Ci potrzebny.
- 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 sekcji dotyczącej usuwania aplikacji.
- Jeśli chcesz wyłączyć interfejsy API dla Vertex AI Conversation i Dialogflow, otwórz stronę Szczegóły usługi Discovery Engine API, kliknij Wyłącz API i potwierdź, a następnie przejdź na stronę Szczegóły usługi Dialogflow API, kliknij Wyłącz API i potwierdź.
Więcej informacji
Jeśli chcesz dowiedzieć się więcej o konwersacyjnej AI i generatywnej AI, skorzystaj z tych przewodników i materiałów:
- Dokumentacja Dialogflow CX
- Wprowadzenie do Vertex AI Conversation
- Tworzenie i używanie agenta magazynu danych
- Dokumentacja Vertex AI Conversation
- Generatywna AI w Google Cloud
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.