AlloyDB ve Vertex AI Agent Builder ile Akıllı Alışveriş Asistanı Oluşturma - 2. Bölüm

1. Genel Bakış

Günümüzün hızlı tempolu perakende ortamında, kişiselleştirilmiş alışveriş deneyimlerini mümkün kılarken olağanüstü müşteri hizmetleri sunmak çok önemlidir. Müşteri sorularını yanıtlamak, ürün keşfine rehberlik etmek ve arama sonuçlarını özelleştirmek için tasarlanmış bilgi odaklı bir sohbet uygulamasının oluşturulmasıyla ilgili teknik bir yolculuğa çıkacağız. Bu yenilikçi çözüm; veri depolama için AlloyDB'nin gücünü, bağlamsal anlayış için şirket içi bir analiz motorunu, alaka düzeyi doğrulaması için Gemini'ı (Büyük Dil Modeli) ve akıllı bir sohbet asistanını hızlıca başlatmak için Google'ın Agent Builder'ını bir araya getirir.

Zorluk: Günümüzün perakende müşterileri anında yanıtlar ve benzersiz tercihlerine uygun ürün önerileri bekliyor. Geleneksel arama yöntemleri genellikle bu düzeyde bir kişiselleştirme sunamaz.

Çözüm: Bilgiye dayalı sohbet uygulamamız bu zorluğun üstesinden geliyor. Müşteri amacını anlamak, akıllıca yanıt vermek ve son derece alakalı sonuçlar sunmak için perakende verilerinizden elde edilen zengin bir bilgi bankasından yararlanır.

Ne oluşturacaksınız?

Bu laboratuvarın (2. Bölüm) bir parçası olarak şunları yapacaksınız:

  1. Vertex AI Oluşturucu temsilcisi oluşturma
  2. AlloyDB aracını aracıyla entegre edin

Şartlar

  • Chrome veya Firefox gibi bir tarayıcı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi.

2. Mimari

Veri akışı: Verilerin sistemimizde nasıl hareket ettiğine daha yakından bakalım:

Besleme:

Perakende verileri (envanter, ürün açıklamaları, müşteri etkileşimleri) AlloyDB'ye sürekli olarak yüklenir.

Analytics Engine:

Aşağıdaki işlemleri gerçekleştirmek için analiz motoru olarak AlloyDB'yi kullanacağız:

  1. Bağlam Çıkarma: Motor, ürünler, kategoriler, müşteri davranışı vb. arasındaki ilişkileri anlamak için AlloyDB'de depolanan verileri analiz eder.
  2. Yerleştirme Oluşturma: Hem kullanıcının sorgusu hem de AlloyDB'de depolanan bilgiler için yerleştirmeler (metnin matematiksel temsilleri) oluşturulur.
  3. Vector Search: Motor, sorgu yerleştirmesini ürün açıklamalarının, yorumların ve diğer alakalı verilerin yerleştirmeleriyle karşılaştırarak benzerlik araması yapar. Bu, en alakalı 25 "en yakın komşuyu" tanımlar.

Gemini Doğrulaması:

Bu olası yanıtlar değerlendirilmek üzere Gemini'a gönderilir. Gemini, bu yanıtların kullanıcıyla paylaşılmaya uygun ve güvenli olup olmadığını belirler.

Yanıt Üretme:

Doğrulanmış yanıtlar bir JSON dizisi olarak yapılandırılır ve motorun tamamı, Agent Builder'dan çağrılan sunucusuz bir Cloud Run işlevi olarak paketlenir.

Yukarıdaki adımlar, laboratuvarın 1. bölümünde ele alınmıştır.

Akıllı alışveriş asistanımıza güç veren bilgiye dayalı bir analiz motoru oluşturmanın teknik ayrıntılarını ele aldık. Şimdi de bu motoru bir sohbet arayüzünde hayata geçirmek için Agent Builder'ın sihrinden nasıl yararlandığımıza bakalım. 2. bölüme başlamadan önce uç nokta URL'sinin hazır olduğundan emin olun. Bu laboratuvarda ele alacağımız sonraki adım şudur:

Etkileşimli Sohbet:

Agent Builder, yanıtları kullanıcıya doğal dil biçiminde sunarak karşılıklı diyaloğu kolaylaştırır.

3. Başlamadan önce

Proje oluşturma

  1. Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
  2. Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını kontrol etmeyi öğrenin .
  3. bq'nun önceden yüklendiği, Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız. Google Cloud Console'un üst kısmından Cloud Shell'i etkinleştir'i tıklayın.

Cloud Shell'i etkinleştir düğmesinin resmi

  1. Cloud Shell'e bağlandıktan sonra aşağıdaki komutu kullanarak kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını kontrol edin:
gcloud auth list
  1. gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın.
gcloud config list project
  1. Projeniz ayarlanmamışsa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>
  1. Gerekli API'leri etkinleştirin. Gcloud komutuna alternatif olarak, her ürünü arayarak veya bu bağlantıyı kullanarak konsolu kullanabilirsiniz.

Herhangi bir API atlanırsa uygulama sırasında istediğiniz zaman etkinleştirebilirsiniz.

gcloud komutları ve kullanımı için belgelere bakın.

Önemli Not: Bu bölümü tamamlamak için laboratuvarın 1. BÖLÜMÜ'nü de tamamladığınızdan emin olun.

4. Aracı Oluşturma

Agent Builder ile tanışın

Agent Builder, etkileşimli ajanları hızlı ve verimli bir şekilde oluşturmamızı sağlayan güçlü ve az kodlu bir araçtır. Diyalog akışları tasarlama, bilgi tabanlarını entegre etme ve harici API'lere bağlanma sürecini kolaylaştırır. Bu örnekte, 1. bölümde oluşturduğumuz Cloud Functions işlevi uç noktasına sorunsuz şekilde bağlanmak için Agent Builder'ı kullanacağız. Böylece alışveriş asistanımız, perakende bilgi bankamıza erişip müşteri sorgularını akıllıca yanıtlayabilecek.

Aracıyı oluşturma

Kullanıcıların giyim ürünleriyle ilgili sorularını yanıtlamak için bu yeni temsilciyi oluşturmaya başlayalım.

  1. Agent Builder platformunda oturum açarak başlayın. API'yi etkinleştirmeniz istenirse DEVAM ET VE API'Yİ ETKİNLEŞTİR'i tıklayın.
  2. "CREATE APP" (UYGULAMA OLUŞTUR) seçeneğini tıklayın ve aracınıza açıklayıcı bir ad verin (ör. "Perakende Alışveriş Asistanı").
  3. Uygulama Türü "Aracı"yı tıklayın.

462bb48664e9a14e.png

  1. . Temsilcinize "Perakende Alışveriş Asistanı" gibi açıklayıcı bir ad verin ve bölgeyi us-central1 olarak ayarlayın.

10eceef44b1600d1.png

  1. Temsilciyle ilgili ayrıntıları girin:
  2. Temsilci adını "Perakende Alışveriş Temsilcisi" olarak değiştirin.
  3. Aşağıdaki "Hedef"i ekleyin:
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. Bu noktada kaydedin ve talimatları şimdilik boş bırakın.
  2. Ardından, gezinme menüsünden Araçlar'ı ve Oluştur'u tıklayın.

2ffae953bbad38e5.png

Araç Adını Girin: Perakende Alışveriş Aracı

Araç Açıklaması Girin:

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.

Şema girin: YAML biçiminde OpenAPI:

Bu bölümde, aracıyı desteklemek için arka uç uç noktasını kullanıyoruz. Aşağıdaki OpenAPI spesifikasyonunu kopyalayın ve URL yer tutucusunu (köşeli parantez içinde) Cloud Functions uç noktanızla değiştirin:

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.

Diğer yapılandırmaları varsayılan değerlerinde bırakın ve "Kaydet"i tıklayın.

  1. "Araç" yapılandırmasını temsilcinin "Talimatlar"ına eklemek istediğimiz için bu noktada temsilciye geri dönün. Aşağıdaki bilgileri talimat yer tutucusuna ekleyin (Girintilerin akışı tanımlamada önemli olduğunu unutmayın):
- 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.

"Kullanılabilir Araçlar" bölümünde "Perakende Alışveriş Aracı"nın seçili olduğundan emin olun ve ardından temsilciyi tekrar kaydedin.

5. Aracıyı test etme

Sağ bölmede, temsilcinizi test etmenize olanak tanıyan Temsilciyi Önizle bölümünü görürsünüz.

Aşağıdaki ekran görüntüsünde görebileceğiniz gibi, kullanıcı olarak selam verdim ve mavi desenli beyaz gömlek isteğiyle sohbetimi başlattım:

63ac3ef6d1f0f614.png

JSON yanıtı:

acf3cb0e2be2ed91.png

Bu, AlloyDB Similarity Search'ü işleyen Cloud Functions işlevinden alınan ham JSON sonucudur. İşte bu kadar. Müşteri temsilcisiyle ilgili işlemlerimiz tamamlandı.

6. Örnek İleti Dizisi Akışı

Bu noktada, diyalog (konuşma) aracınızın akışını test edip yineleyebilirsiniz:

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!

Az örnekli istemler

Şimdi de sonucu, resimler ve bağlantılar da dahil olmak üzere belirli bir grafik biçiminde etkileşimli temsilcide görmek istediğinizi varsayalım. Bunu, Few Shot Prompting olarak da bilinen ileti dizisi örneklerini kullanarak yapacağız.

Bu, tutarlı bir sonuç biçimi elde etmek için aracı oluşturucuya birkaç örnek eklemek istediğimiz anlamına gelir.

"Test the Agent" (Aracı Test Etme) bölümündeki önceki ekran görüntülerimizden birinde, aracının yanıtını "Anlıyorum. Mavi desenli beyaz bir gömlek arıyorum." İlgili yanıta gidin veya aracının sağ bölmesinden yeni bir test görüşmesi oluşturun:

  1. "Kullanıcı Girişi Girin" bölümüne aşağıdakileri yazın:

dc8c010c36400e64.png

Şuna benzer bir yanıt görürsünüz:

e31d9f53bf5564c8.png

Ayrıca API uç noktası tarafından döndürülen JSON dizisini de görürsünüz.

  1. Şimdi önizleme bölümünün kenar boşluğundan Temsilci Adı'nı (aşağıdaki resimde kırmızı onay işaretiyle vurgulanmış olarak gösterilmiştir) tıkladığınızda sohbet önizleme bölümündeki tüm sekmeleriniz vurgulanır. Şimdi önizleme bölümünün sağ üst köşesindeki "Save Example" (Örneği Kaydet) seçeneğini tıklayın. Bu arayüz şöyle görünür:

1e0a9f6815f63bf9.png

  1. Yazışmayı "Resimlerle yanıt" gibi bir görünen adla kaydedip "Oluştur"u tıklayın.
  2. Şimdi yukarıdaki resimde siyah onay işaretiyle vurgulanan yanıt sekmesine gidin ve "Anlıyorum. Sarı sandalet arıyorsunuz. Bu doğru mu?" ile değiştirin.
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. Üst kısımdaki "Kaydet"i tıklayın.

Farklı varyasyonlar ve sohbet akışlarıyla istediğiniz kadar örnek için bu işlemi tekrarlayın.

Şimdi bir kullanıcı girişiyle test edin:

450166a929645353.png

Diğer bazı yanıt türleri:

be8908c99cd33730.png

Bu kadar basit. Perakende uygulamamız için başarıyla bir Sohbet Temsilcisi oluşturup test ettik.

7. Dağıtım ve Entegrasyon

Temsilcinizden memnun kaldığınızda, Temsilci Oluşturucu'nun entegrasyonlarını kullanarak temsilcinizi çeşitli kanallara kolayca dağıtabilirsiniz. Bu API'yi web sitenize yerleştirebilir, popüler mesajlaşma platformlarıyla entegre edebilir ve hatta özel bir mobil uygulama oluşturabilirsiniz. Ayrıca, Agent Builder API'yi doğrudan web istemci uygulamalarımızda da kullanabiliriz. Bu konuyu blogumuzda ele aldık.

8. Temizleme

Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:

  1. Google Cloud Console'da Yönet 'e gidin.
  2. kaynaklar sayfasını ziyaret edin.
  3. Proje listesinde silmek istediğiniz projeyi seçin ve Sil'i tıklayın.
  4. İletişim kutusunda proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.

9. Tebrikler

Tebrikler! Özel olarak geliştirilmiş analiz motorumuzun gücünü Agent Builder'ın sezgisel arayüzüyle entegre ederek kişiselleştirilmiş deneyimler sunan, soruları doğru şekilde yanıtlayan ve sonuç olarak müşteri memnuniyetini ve satışları artıran akıllı bir perakende alışveriş asistanı oluşturduk. AlloyDB, Vertex AI ve Vector Search'ün özelliklerini birleştirerek bağlamsal ve vektör aramalarını erişilebilir, verimli, gerçekten anlam odaklı ve ajan tabanlı hale getirme konusunda büyük bir adım attık.