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

1. Przegląd

W dzisiejszym dynamicznym świecie handlu detalicznego najważniejsze jest zapewnienie wyjątkowej obsługi klienta przy jednoczesnym umożliwieniu spersonalizowanych zakupów. Zabierzemy Cię w techniczną podróż po procesie tworzenia aplikacji do czatowania opartej na wiedzy, która ma odpowiadać na pytania klientów, ułatwiać odkrywanie produktów i dostosowywać wyniki wyszukiwania. To innowacyjne rozwiązanie łączy moc AlloyDB do przechowywania danych, wewnętrzny silnik analityczny do zrozumienia kontekstowego, Gemini (duży model językowy) do weryfikacji trafności oraz narzędzie Google Agent Builder do szybkiego tworzenia inteligentnego asystenta konwersacyjnego.

Wyzwanie: współcześni klienci detaliczni oczekują natychmiastowych odpowiedzi i rekomendacji produktów, które są zgodne z ich indywidualnymi preferencjami. Tradycyjne metody wyszukiwania często nie zapewniają takiego poziomu personalizacji.

Rozwiązanie: nasza aplikacja do obsługi czatu oparta na wiedzy bezpośrednio rozwiązuje ten problem. Wykorzystuje ona bogatą bazę wiedzy pochodzącą z Twoich danych o sprzedaży detalicznej, aby rozpoznawać intencje klientów, inteligentnie odpowiadać na ich pytania i dostarczać bardzo trafne wyniki.

Co utworzysz

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

  1. Tworzenie agenta tworzenia kodu Kreatora agentów Vertex AI
  2. Integracja narzędzia AlloyDB z agentem

Wymagania

  • przeglądarka, np. Chrome lub Firefox;
  • Projekt Google Cloud z włączonymi płatnościami.

2. Architektura

Przepływ danych: przyjrzyjmy się bliżej temu, jak dane przepływają przez nasz system:

Przetwarzanie:

Dane o sprzedaży detalicznej (zapasy, opisy produktów, interakcje z klientami) są stale ładowane do AlloyDB.

Silnik Analytics:

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

  1. Wyodrębnianie kontekstu: silnik analizuje dane przechowywane w AlloyDB, aby zrozumieć relacje między produktami, 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 dla informacji przechowywanych w AlloyDB.
  3. Wyszukiwanie wektorowe: silnik przeprowadza wyszukiwanie podobieństw, porównując wektor zapytania z wektorami dystrybucyjnymi opisów produktów, opinii i innych odpowiednich danych. Wskazuje to 25 najbardziej trafnych „najbliższych sąsiadów”.

Weryfikacja Gemini:

Te potencjalne odpowiedzi są wysyłane do Gemini w celu oceny. Gemini sprawdza, czy są one rzeczywiście trafne i bezpieczne dla użytkownika.

Generowanie odpowiedzi:

Zweryfikowane odpowiedzi są uporządkowane w tablicę JSON, a cały silnik jest spakowany w bezserwerową funkcję Cloud Run, która jest wywoływana z poziomu narzędzia do tworzenia agentów.

Powyższe kroki zostały już omówione w części 1 laboratorium.

Omówiliśmy szczegóły techniczne tworzenia silnika analitycznego opartego na wiedzy, który obsługuje naszego inteligentnego asystenta zakupów. Teraz zobaczmy, jak wykorzystujemy magię narzędzia Agent Builder, aby ożywić ten silnik w interfejsie konwersacyjnym. Zanim przejdziesz do części 2, przygotuj adres URL punktu końcowego. Ten kolejny krok omówimy w tym laboratorium:

Interakcja konwersacyjna:

Kreator agentów przedstawia odpowiedzi użytkownikowi w formacie języka naturalnego, co ułatwia prowadzenie dialogu.

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. Będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud, które jest wstępnie załadowane narzędziem bq. U góry konsoli Google Cloud kliknij Aktywuj Cloud Shell.

Obraz przycisku aktywowania Cloud Shell

  1. Po połączeniu z Cloud Shell sprawdź, czy uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu, używając tego polecenia:
gcloud auth list
  1. Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
  1. Jeśli projekt nie jest ustawiony, użyj tego polecenia, aby go ustawić:
gcloud config set project <YOUR_PROJECT_ID>
  1. Włącz wymagane interfejsy API. Alternatywą dla polecenia gcloud jest wyszukanie poszczególnych usług w konsoli lub skorzystanie z tego linku.

Jeśli pominiesz jakiś interfejs API, możesz go włączyć w trakcie wdrażania.

Informacje o poleceniach gcloud i ich użyciu znajdziesz w dokumentacji.

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

4. Tworzenie agenta

Przedstawiamy Kreatora agentów

Kreator agentów to zaawansowane narzędzie, które nie wymaga pisania dużych ilości kodu i umożliwia szybkie i wydajne tworzenie agentów konwersacyjnych. Upraszcza proces projektowania przepływów dialogowych, integrowania baz wiedzy i łączenia się z zewnętrznymi interfejsami API. W naszym przypadku użyjemy narzędzia Agent Builder, aby bezproblemowo połączyć się z punktem końcowym funkcji Cloud Function utworzonym w części 1. Dzięki temu nasz asystent zakupów będzie miał dostęp do naszej bazy wiedzy o sprzedaży detalicznej i będzie mógł inteligentnie odpowiadać na pytania klientów.

Tworzenie 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 Kreator agentów. Jeśli pojawi się prośba o aktywowanie interfejsu API, kliknij DALEJ I AKTYWUJ API.
  2. Kliknij „UTWÓRZ APLIKACJĘ” i nadaj agentowi opisową nazwę (np. „Asystent zakupów detalicznych”).
  3. Kliknij Typ aplikacji „Agent”.

462bb48664e9a14e.png

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

10eceef44b1600d1.png

  1. Wpisz szczegóły agenta:
  2. Zmień nazwę agenta na „Agent zakupowy w detalu”.
  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 w tym momencie i na razie pozostaw instrukcje puste.
  2. Następnie w menu nawigacyjnym kliknij Narzędzia i kliknij 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:

W tym miejscu używamy punktu końcowego backendu do zasilania agenta. Skopiuj poniższą specyfikację OpenAPI i zastąp w niej symbol zastępczy adresu URL (ujęty w nawiasy ostre) punktem końcowym funkcji 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 pozostałych konfiguracjach pozostaw wartości domyślne i kliknij „Zapisz”.

  1. Wróć do agenta, ponieważ chcemy dodać konfigurację „Narzędzie” do „Instrukcji” agenta. Dodaj poniższy tekst do miejsca na instrukcje (pamiętaj, że wcięcia są ważne dla określenia kolejności działań):
- 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 w sekcji „Dostępne narzędzia” wybrane jest narzędzie „Narzędzie do zakupów w sklepie”, a następnie ponownie zapisz agenta.

5. Testowanie agenta

W panelu po prawej stronie powinna się pojawić sekcja Podgląd agenta, w której możesz przetestować agenta.

Jak widać na zrzucie ekranu poniżej, przywitałem się jako użytkownik i rozpocząłem czat z prośbą o białą koszulę z niebieskimi nadrukami:

63ac3ef6d1f0f614.png

Oto odpowiedź JSON:

acf3cb0e2be2ed91.png

To jest surowy wynik JSON z funkcji w Cloud Functions, która przetwarza wyszukiwanie podobieństwa w AlloyDB. To wszystko. Wszystko już załatwione.

6. Przykładowy przebieg rozmowy

Na tym etapie możesz przetestować i ulepszyć działanie agenta dialogowego (konwersacyjnego):

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!

Prompty few-shot

Załóżmy teraz, że chcesz zobaczyć wynik w agencie konwersacyjnym w określonym formacie graficznym, w tym zdjęcia i linki. Zrobimy to, używając przykładów rozmów, czyli promptów typu „few-shot”.

Oznacza to, że 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 sekcji „Testowanie agenta” widzimy odpowiedź agenta: „Rozumiem. Szukasz białej koszuli z niebieskimi nadrukami…”. Przejdź do tej odpowiedzi lub utwórz nową rozmowę testową w prawym panelu agenta:

  1. W sekcji „Wpisz dane wejściowe użytkownika” wpisz:

dc8c010c36400e64.png

Zobaczysz odpowiedź podobną do tej:

e31d9f53bf5564c8.png

Zobaczysz też tablicę JSON zwróconą przez punkt końcowy interfejsu API.

  1. Teraz kliknij nazwę agenta (jak pokazano na obrazie poniżej, zaznaczoną na czerwono) na marginesie sekcji podglądu, a wszystkie karty w sekcji podglądu czatu zostaną wyróżnione. Następnie w prawym górnym rogu sekcji podglądu kliknij „Save Example” (Zapisz przykład). Będzie on wyglądał :

1e0a9f6815f63bf9.png

  1. Zapisz rozmowę pod nazwą wyświetlaną „Odpowiedź z obrazami” lub podobną i kliknij „Utwórz”.
  2. Teraz otwórz kartę odpowiedzi oznaczoną czarnym znacznikiem wyboru na powyższym obrazie i zastąp tekst „I see. Szukasz żółtych sandałów. Is that correct?” na:
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. U góry kliknij „Zapisz”.

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

Teraz przetestujmy to, wpisując dane wejściowe użytkownika:

450166a929645353.png

Inne typy odpowiedzi:

be8908c99cd33730.png

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

7. Wdrażanie i integracja

Gdy uznasz, że agent jest gotowy, możesz go łatwo wdrożyć w różnych kanałach za pomocą integracji Kreatora agentów. Możesz go umieścić w swojej witrynie, zintegrować z popularnymi platformami do przesyłania wiadomości, a nawet utworzyć dedykowaną aplikację mobilną. Możemy też używać interfejsu Agent Builder API bezpośrednio w naszych aplikacjach klienckich, o czym piszemy w tym artykule na blogu.

8. Czyszczenie danych

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

  1. W konsoli Google Cloud otwórz Zarządzaj .
  2. zasobów.
  3. Z listy 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! Dzięki połączeniu możliwości naszego silnika analitycznego z intuicyjnym interfejsem narzędzia Agent Builder stworzyliśmy inteligentnego asystenta zakupów, który zapewnia spersonalizowane doświadczenia, dokładnie odpowiada na pytania i w efekcie zwiększa zadowolenie klientów oraz sprzedaż. Łącząc możliwości AlloyDB, Vertex AIwyszukiwania wektorowego, zrobiliśmy ogromny krok naprzód w udostępnianiu wyszukiwania kontekstowego i wektorowego, które jest wydajne, oparte na znaczeniu i agentowe.