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

1. Omówienie

W obecnej, dynamicznie rozwijającej się branży handlu detalicznego kluczowe znaczenie ma zapewnienie klientom wyjątkowej obsługi i spersonalizowanych wrażeń zakupowych. 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: klienci oczekują błyskawicznych odpowiedzi i rekomendacji produktów dostosowanych do ich indywidualnych preferencji. Tradycyjne metody wyszukiwania często nie zapewniają takiej personalizacji.

Rozwiązanie: nasza aplikacja do czatu oparta na wiedzy pozwala rozwiązać ten problem. Korzysta ona z bogatej bazy wiedzy utworzonej na podstawie Twoich danych o sprzedaży, aby rozumieć intencje klientów, inteligentnie na nie odpowiadać i dostarczać trafnych wyników.

Co utworzysz

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

  1. Tworzenie agenta Kreatora agentów Vertex AI
  2. Integracja narzędzia 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, jak dane przemieszczają się w naszym systemie:

Przetwarzanie:

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

Silnik 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 zasobów: reprezentacje właściwościowe (matematyczne reprezentacje tekstu) są generowane zarówno dla zapytania użytkownika, jak i informacji przechowywanych w AlloyDB.
  3. Wyszukiwanie wektorowe: wyszukiwarka wykonuje wyszukiwanie podobne, porównując wektor zapytania z wektorami w opisach produktów, opiniach i innych odpowiednich danych. W ten sposób wskazujesz 25 najbardziej odpowiednich „najbliższych sąsiadów”.

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:

Walidowane odpowiedzi są strukturyzowane w tablicę JSON, a cały mechanizm jest pakowany w bezserwerową funkcję Cloud Run, która jest wywoływana z narzędzia Agent Builder.

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. Teraz przyjrzyjmy się, jak wykorzystujemy magię narzędzia Agent Builder, aby ożywić ten mechanizm w interfejsie konwersacyjnym. Przed rozpoczęciem części 2 upewnij się, że masz gotowy adres 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 projektu 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, czyli środowiska wiersza poleceń działającego w Google Cloud, które jest wstępnie załadowane w 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. Aby sprawdzić, czy polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
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.

Informacje o poleceniach gcloud i ich użyciu 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 do tworzenia aplikacji konwersacyjnych, które nie wymaga pisania dużych ilości kodu. Ułatwia ono projektowanie przepływów dialogowych, integrację baz wiedzy i łączenie 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.

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 platformę Agent Builder. Jeśli pojawi się prośba o aktywowanie interfejsu API, kliknij DALEJ I AKTYWUJ INTERFEJS API.
  2. Kliknij „UTWÓRZ APLIKACJĘ”. i nadaj agentowi nazwę opisową (np. „Retail Shopping Assistant”).
  3. Kliknij Typ aplikacji „Agent”.

462bb48664e9a14e.png

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

10eceef44b1600d1.png

  1. Wpisz dane agenta:
  2. Zmień nazwę agenta na „Agent ds. zakupów detalicznych”.
  3. Dodaj „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 wskaźnik zastępczy adresu URL (ujęty w nawiasy klamrowe) 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 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 się pojawić sekcja Podgląd wiadomości do agenta, która umożliwia przetestowanie wiadomości.

Jak widać na zrzucie ekranu poniżej, witam się jako użytkownik i rozpoczynam czat z prośbą o białą koszulkę z niebieskim nadrukiem:

63ac3ef6d1f0f614.png

Oto odpowiedź w formacie JSON:

acf3cb0e2be2ed91.png

To jest nieprzetworzony wynik JSON z funkcji w Cloud Functions, która przetwarza wyszukiwanie podobieństw w AlloyDB. Znakomicie. Wszystko jest już ustalone z pracownikiem obsługi klienta.

6. Przykładowy przepływ konwersacji

W tym momencie możesz przetestować i powtórzyć przepływ danych w przypadku agenta dialogowego (rozmówczego):

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, że chcesz zobaczyć wynik w usługach o charakterze konwersacyjnym w określonym formacie graficznym, który zawiera zdjęcia i linki. Zrobimy to, korzystając z przykładów rozmów, czyli promptów typu „few-shot”.

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 koszuli z niebieskim nadrukiem… 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

Powinna wyświetlić się taka odpowiedź:

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. Zapisz rozmowę z nazwą wyświetlaną „Odpowiedź z obrazami” lub podobną 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. U góry kliknij „Zapisz”.

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

Teraz możesz przetestować tę funkcję, podają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 sprzedażowej.

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 wykorzystane 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! Dzięki połączeniu możliwości naszego niestandardowego mechanizmu analitycznego z intuicyjnym interfejsem narzędzia Agent Builder stworzyliśmy inteligentnego asystenta do obsługi zakupów, który zapewnia spersonalizowane wrażenia, udziela dokładnych odpowiedzi na pytania i w efekcie zwiększa zadowolenie klientów oraz 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.