Tworzenie inteligentnego asystenta zakupowego za pomocą Kreatora agentów AlloyDB i Vertex AI – część 2

1. Omówienie

W szybko zmieniającym się środowisku sprzedaży detalicznej zapewnienie klientom wyjątkowej obsługi klienta przy jednoczesnym zapewnieniu spersonalizowanej obsługi jest kluczowe. Zaprowadzimy Cię w techniczną podróż przez tworzenie aplikacji czatu opartej na wiedzy, która będzie służyć do odpowiadania na pytania klientów, ułatwiania odkrywania produktów i dostosowywania wyników wyszukiwania. To innowacyjne rozwiązanie łączy możliwości AlloyDB do przechowywania danych, wewnętrzny mechanizm analizy kontekstu, Gemini (duży model językowy) do walidacji trafności i Kreator agentów Google w celu szybkiego uruchomienia inteligentnego asystenta konwersacyjnego.

Wyzwanie: współcześni klienci z branży handlu detalicznego oczekują szybkich odpowiedzi i rekomendacji produktów zgodnych z ich unikalnymi preferencjami. Tradycyjne metody wyszukiwania często nie zapewniają takiej personalizacji.

Rozwiązanie: nasza aplikacja czatu, która bazuje na wiedzy, radzi sobie z tym wyzwaniem. Wykorzystuje obszerną bazę wiedzy z danych o handlu detalicznym, aby zrozumieć zamiary klientów, sprytnie odpowiadać i osiągać niezwykle trafne wyniki.

Co utworzysz

W ramach tego modułu (część 2):

  1. Tworzenie agenta Kreatora agentów Vertex AI
  2. Zintegruj narzędzie AlloyDB z agentem

Wymagania

  • przeglądarki, na przykład Chrome lub Firefox;
  • Projekt Google Cloud z włączonymi płatnościami.

2. Architektura

Przepływ danych: przyjrzyjmy się bliżej sposobom przenoszenia danych w systemie:

Przetwarzanie:

Dane dotyczące handlu detalicznego (asortyment, opisy produktów, interakcje klientów) są stale wczytywane do AlloyDB.

Mechanizm Analytics:

Będziemy używać AlloyDB jako silnika analitycznego do wykonywania tych czynności:

  1. Wyodrębnianie kontekstu: mechanizm analizuje dane przechowywane w AlloyDB, aby zrozumieć relacje między usługami, kategoriami, zachowaniami klientów itp.
  2. Tworzenie wektorów dystrybucyjnych: wektory dystrybucyjne (matematyczne reprezentacje tekstu) są generowane zarówno dla zapytania użytkownika, jak i informacji przechowywanych w AlloyDB.
  3. Wyszukiwanie wektorowe: wyszukiwarka przeprowadza wyszukiwanie podobieństw, porównując wektory dystrybucyjne zapytań z reprezentacjami opisów produktów, opinii i innych odpowiednich danych. W ten sposób określamy 25 najbliższych sąsiadów, którzy najlepiej pasują do zapytania.

Weryfikacja Gemini:

Te potencjalne odpowiedzi są wysyłane do Gemini w celu oceny. Gemini określa, czy są one rzeczywiście przydatne i można je bezpiecznie udostępniać użytkownikowi.

Generowanie odpowiedzi:

Zweryfikowane odpowiedzi są uporządkowane w tablicę JSON, a cały mechanizm jest spakowany w bezserwerową funkcję w Cloud Run, która jest wywoływana z Kreatora agentów.

Powyższe kroki są już omówione w części 1 tego modułu.

Omówiliśmy szczegóły techniczne związane z tworzeniem mechanizmu analityki opartego na wiedzy, który obsługuje nasz inteligentny asystent zakupów. Przyjrzyjmy się teraz, jak wykorzystujemy magię Kreatora agentów, aby ożywić ten silnik w interfejsie konwersacyjnym. Zanim zaczniesz część 2, przygotuj URL punktu końcowego. Kolejny krok to tematy, które omówimy w tym module:

Interakcja konwersacyjna:

Kreator agentów wyświetla odpowiedzi w języku naturalnym, co ułatwia prowadzenie rozmów.

3. Zanim zaczniesz

Utwórz projekt

  1. W konsoli Google Cloud na stronie selektora projektów wybierz lub utwórz projekt Google Cloud.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności .
  3. Użyjesz Cloud Shell – środowiska wiersza poleceń działającego w Google Cloud, które zawiera wstępnie zainstalowane narzędzie bq. Kliknij Aktywuj Cloud Shell u góry konsoli Google Cloud.

Obraz przycisku aktywowania Cloud Shell

  1. Po nawiązaniu połączenia z Cloud Shell możesz użyć tego polecenia, aby sprawdzić, czy użytkownik jest już uwierzytelniony i czy identyfikator projektu jest ustawiony na identyfikator Twojego projektu:
gcloud auth list
  1. Uruchom to polecenie w Cloud Shell, aby sprawdzić, czy polecenie gcloud zna Twój projekt.
gcloud config list project
  1. Jeśli Twój projekt nie jest skonfigurowany, ustaw go za pomocą tego polecenia:
gcloud config set project <YOUR_PROJECT_ID>
  1. Włącz wymagane interfejsy API. Alternatywą dla polecenia gcloud jest skorzystanie z konsoli – wyszukanie każdej usługi lub użycie tego linku.

Jeśli brakuje jakiegoś interfejsu API, możesz go zawsze włączyć w trakcie implementacji.

Więcej informacji o poleceniach i sposobie korzystania z gcloud znajdziesz w dokumentacji.

Ważna uwaga: aby to zrobić, musisz też ukończyć CZĘŚĆ 1 modułu.

4. Tworzenie agenta

Przedstawiamy Kreator agentów

Kreator agentów to zaawansowane narzędzie, które nie wymaga pisania dużych ilości kodu. Dzięki niemu możemy szybko i efektywnie tworzyć agenty konwersacyjne. Upraszcza proces projektowania przepływów dialogowych, integrowania baz wiedzy i łączenia się z zewnętrznymi interfejsami API. W naszym przypadku użyjemy Kreatora agentów, aby bezproblemowo połączyć się z punktem końcowym w Cloud Functions, który mogliśmy utworzyć w części 1. Dzięki temu asystent zakupowy będzie miał dostęp do naszej bazy wiedzy o handlu detalicznym i w inteligentny sposób odpowiada na pytania klientów.

Tworzę agenta

Zacznijmy od utworzenia nowego agenta, który będzie odpowiadać na pytania użytkowników dotyczące produktów odzieżowych.

  1. Zacznij od zalogowania się na platformie Agent Builder. Jeśli pojawi się prośba o aktywację interfejsu API, kliknij DALEJ I AKTYWUJ INTERFEJS API.
  2. Kliknij „UTWÓRZ APLIKACJĘ”. i nadaj agentowi nazwę opisową (np. „Asystent ds. zakupów w handlu detalicznym”).
  3. Kliknij Typ aplikacji „Agent”.

462bb48664e9a14e.png

  1. , Nadaj agentowi opisową nazwę, np. „Asystent zakupów w handlu detalicznym” i ustaw region na us-central1,

10eceef44b1600d1.png

  1. Wpisz dane agenta:
  2. Zmień nazwę agenta na „Agent ds. zakupów detalicznych”.
  3. Dodaj poniższy „Cel”:
You are a shopping assistant agent! Your job is to help the customer search for their ideal apparels, allow them to add items to their cart, remove items from their cart, and review items in their cart. Once a user is done searching, open the search results in a user friendly html page.

537a87a842aae897.png

  1. Zapisz go i na razie pozostaw instrukcje puste.
  2. Następnie w menu nawigacyjnym kliknij Narzędzia i wybierz UTWÓRZ.

2ffae953bbad38e5.png

Wpisz nazwę narzędzia: Narzędzie do zakupów w handlu detalicznym

Wpisz opis narzędzia:

This tool refers to the dataset in the backend as the context information for product inventory. It takes as input the user's search text summarized by the agent and matches with the most appropriate list of items and returns as an array of items.

Wpisz schemat – OpenAPI w formacie YAML:

Na tym etapie używamy punktu końcowego backendu do obsługi agenta. Skopiuj poniższą specyfikację OpenAPI i zastąp symbol zastępczy adresu URL (zamknięty w nawiasach kątowych) punktem końcowym w Cloud Functions:

openapi: 3.0.0
info:
 title: AlloyDB Product Matcher
 description: A Cloud Function to query AlloyDB for product matches based on user search text.
 version: 1.0.0
servers:
 - url: <<https://us-central1-YOUR_PROJECT_ID.cloudfunctions.net/alloy-gem>>
paths:
 /:
   post:
     summary: Find matching products based on search text.
     operationId: apparelSearch
     requestBody:
       description: JSON object containing the search text.
       required: true
       content:
         application/json:
           schema:
             type: object
             properties:
               search:
                 type: string
                 description: The user's search query for product matching.
     responses:
       '200':
         description: Successful response with a JSON array of matching products.
         content:
           application/json:
             schema:
               type: array
               items:
                 type: object
                 properties:
                   id:
                     type: string
                     description: Product ID.
                   category:
                     type: string
                     description: Product category.
                   sub_category:
                     type: string
                     description: Product sub-category.
                   uri:
                     type: string
                     description: Product URI or URL.
                   description:
                     type: string
                     description: Product description.
                   literature:
                     type: object
                     description: JSON object containing match information from the ML model.
                     properties:
                       MATCH:
                         type: string
                         description: Whether the product matches the search query (YES/NO).
                       PERCENTAGE:
                         type: string
                         description: Percentage of match.
                       DIFFERENCE:
                         type: string
                         description: Description of differences between the search and product.
       '500':
         description: Internal server error.

W innych konfiguracjach pozostaw domyślne wartości i kliknij „Zapisz”.

  1. Wróć teraz do agenta, bo chcemy dodać „Narzędzie” do instrukcji dotyczących agenta. Dodaj poniższy tekst do symbolu zastępczego instrukcji (pamiętaj, że wcięcia są istotne przy definiowaniu przepływu):
- Greet the user and answer their question to the best of your knowledge.
- Summarize the user's request and ask them to confirm that you understood correctly.
   - Check if the request has details like gender, color, material, style and other key apparel details already.
   - If not, seek clarifying details.
   - If the search request is very broad, then ask the user to narrow down the request with specific details that you believe could be personal preferences.
   - Once all the necessary details are met, summarize your final understanding of the request with the user.
- Use ${TOOL: Retail Shopping Tool} to help the user with their task.
- If the request has unrelated input text, gracefully convey that you don't have information on that topic.
- Do not give product availability information outside the source that is provided to you in ${TOOL: Retail Shopping Tool}.
- Do not assist with any information unless you are certain that you know the answer and it is grounded in the source of truth.
- Thank the user for their business and say goodbye.

Upewnij się, że narzędzie „Narzędzie do zakupów w handlu detalicznym” w obszarze „Dostępne narzędzia” i ponownie zapisz agenta.

5. Testowanie agenta

W panelu po prawej stronie powinna być widoczna sekcja podglądu agenta, w której możesz przetestować agenta.

Jak widać na zrzucie ekranu poniżej, powitaliśmy użytkownika i rozpoczęłem czat od prośby o białą koszulę z niebieskimi wzorami:

63ac3ef6d1f0f614.png

Oto odpowiedź JSON:

acf3cb0e2be2ed91.png

To jest nieprzetworzony wynik JSON z funkcji w Cloud Functions, która przetwarza wyszukiwanie podobieństw AlloyDB. Znakomicie. Jesteśmy teraz w kontakcie z pracownikiem obsługi klienta.

6. Przykładowy przebieg rozmowy

Na tym etapie możesz przetestować i powtarzać działanie agenta okna (rozmowy):

User: I'm looking for women's boots for winter. 

Agent: (OpenAPI call to Cloud Function that works with AlloyDB Similarity Search) 

Cloud Function: (Processes query, returns JSON array) 

Agent: Based on your preferences, here are some options: [Product 1, Product 2, Product 3]. Would you like to see more details about any of these?

User: No, That is all. Bye!

Agent: Have a good day!

Kilka podpowiedzi

Teraz załóżmy, że chcesz zobaczyć wynik w agencie konwersacyjnym w określonym formacie graficznym, w tym ze zdjęciami i linkami. Zrobimy to na przykładach rozmów znanych pod nazwą „few Shot Prompting”.

Chcemy dodać do kreatora agentów kilka przykładów, aby uzyskać spójny format wyników.

na jednym z poprzednich zrzutów ekranu w kursie „Test the Agent” (Testowanie agenta). znajduje się odpowiedź od agenta: „Rozumiem. Szukasz białej koszulki z niebieskimi nadrukami...”. Przejdź do tej odpowiedzi lub utwórz nową rozmowę testową w panelu po prawej stronie agenta:

  1. Wpisz podany niżej kod w polu „Podaj dane wejściowe użytkownika”. :

dc8c010c36400e64.png

Zobaczysz odpowiedź podobną do tej:

e31d9f53bf5564c8.png

Zobaczysz też tablicę JSON zwracaną przez punkt końcowy API.

  1. Teraz na marginesie sekcji podglądu kliknij nazwę agenta (jak na ilustracji poniżej z czerwonym znacznikiem wyboru), a wszystkie Twoje karty w tej sekcji zostaną podświetlone. Kliknij „Zapisz przykład”, w prawym górnym rogu sekcji podglądu. Będzie on wyglądał :

1e0a9f6815f63bf9.png

  1. Zapisanie rozmowy z wyświetlaną nazwą „Odpowiedź z obrazami”. lub podobnym, i kliknij „Utwórz”.
  2. Teraz przejdź do karty odpowiedzi podświetlonej czarnym znacznikiem na powyższym obrazie i zastąp tekst „Rozumiem. Szukasz żółtych sandałów. Zgadza się?”. z następującymi wartościami:
I see you are looking for yellow sandals. Here are a few options for you:
<!DOCTYPE html>
<html>
<body>

<h2>Featured Sandals</h2>

<table style="overflow-x: auto; white-space: nowrap;">
    <tr>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/d27dbd8e9666b9af2d72fbfde315f76d_images.jpg" alt="Yellow sandals from Estd. 1977" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/b7a479fe5f56457e930541a789c5df68_images.jpg" alt="Yellow sandals from Gliders" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/b6c813734b29b89d1055fd000ea50743_images.jpg" alt="Yellow sandals from Rocia" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/ee0e918c229e76e0e7e61712e9d2ecb3_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
        </td>
        <td>
            <img src="https://assets.myntassets.com/v1/images/style/properties/5bdd4c9e739205e28ee134ff7849bc60_images.jpg" alt="Yellow flip flops from Numero Uno" width="300">
        </td>
    </tr>
</table>

</body>
</html>
  1. Kliknij „Zapisz”. na górze.

Powtórz ten proces dla dowolnej liczby przykładów z różnymi wariantami i sposobami rozmowy.

Teraz przetestuj ją z pomocą użytkownika:

450166a929645353.png

Inne typy odpowiedzi:

be8908c99cd33730.png

To wszystko. Udało się utworzyć i przetestować agenta konwersacyjnego w naszej aplikacji handlowej.

7. Wdrażanie i integracja

Po utworzeniu agenta możesz go łatwo wdrożyć w różnych kanałach, korzystając z integracji Kreatora agentów. Możesz umieścić go w swojej witrynie, zintegrować z popularnymi platformami komunikacyjnymi, a nawet utworzyć dedykowaną aplikację mobilną. Możemy też używać interfejsu Agent Builder API bezpośrednio w naszych aplikacjach klienckich, które omówiliśmy na tym blogu.

8. Czyszczenie danych

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

  1. W konsoli Google Cloud otwórz Zarządzaj .
  2. resources.
  3. Na liście projektów wybierz projekt do usunięcia, a potem kliknij Usuń.
  4. W oknie wpisz identyfikator projektu i kliknij Wyłącz, aby usunąć projekt.

9. Gratulacje

Gratulacje! Łącząc możliwości naszego niestandardowego mechanizmu analityki z intuicyjnym interfejsem Agent Builder, stworzyliśmy inteligentnego asystenta zakupowego, który zapewnia spersonalizowane wrażenia, odpowiada na pytania, a w efekcie zwiększa zadowolenie klientów i sprzedaż. Dzięki połączeniu możliwości AlloyDB, Vertex AI i wyszukiwania wektorowego zrobiliśmy ogromny krok naprzód w zakresie dostępu do wyszukiwań kontekstowych i wektorowych, które są dostępne, efektywne, oparte na znaczeniu i agenta.