1. Genel Bakış
Günümüzün yüksek tempolu perakende ortamında, kişiselleştirilmiş alışveriş deneyimleri sunarken olağanüstü müşteri hizmetleri sunmak çok önemli. Müşteri sorularını yanıtlamak, ürün keşfine rehberlik etmek ve arama sonuçlarını özelleştirmek için tasarlanmış bilgiye dayalı bir sohbet uygulaması oluşturarak sizi teknik bir yolculuğa çıkaracağız. Bu yenilikçi çözüm, veri depolama için AlloyDB'nin gücünü, bağlamsal anlama için şirket içi bir analiz motorundan, alaka düzeyi doğrulaması için Gemini'ı (Büyük Dil Modeli) ve akıllı bir konuşma asistanını hızlı bir şekilde önyüklemek için Google'ın Agent Builder'ı bir araya getirir.
Zorluk: Modern perakende müşterileri, benzersiz tercihlerine uygun anında yanıtlar ve ürün önerileri bekliyor. Geleneksel arama yöntemleri, çoğu zaman bu düzeyde kişiselleştirme sağlama konusunda yetersiz kalır.
Çözüm: Bilgiye dayalı sohbet uygulamamız, bu zorluğun doğrudan üstesinden gelmeyi sağlar. Müşterilerin 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 tabanından yararlanır.
Neler oluşturacaksınız?
Bu laboratuvarın bir parçası olarak (2. Bölüm) şunları yapacaksınız:
- Vertex AI Agent Builder aracısı oluşturma
- AlloyDB aracını aracı ile entegre etme
Şartlar
2. Mimari
Veri Akışı: Verilerin sistemimizde nasıl ilerlediğini daha yakından inceleyelim:
Besleme:
Perakende verileri (envanter, ürün açıklamaları, müşteri etkileşimleri) AlloyDB'ye sürekli olarak yüklenir.
Analytics Motoru:
Aşağıdaki işlemleri gerçekleştirmek için analiz motoru olarak AlloyDB'yi kullanacağız:
- Bağlam Ayıklama: Motor; ürünler, kategoriler, müşteri davranışı vb. arasındaki uygun ilişkileri anlamak için AlloyDB'de depolanan verileri analiz eder.
- Yerleştirilmiş Oluşturma: Hem kullanıcının sorgusu hem de AlloyDB'de depolanan bilgiler için yerleştirmeler (metnin matematiksel gösterimleri) oluşturulur.
- Vektör Arama: Motor, bir benzerlik araması yaparak yerleştirilmiş sorguyu ürün açıklamalarının, yorumların ve diğer alakalı verilerin yerleştirmeleriyle karşılaştırır. 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, bilgilerin gerçekten alakalı olup olmadığını ve kullanıcıyla güvenli bir şekilde paylaşılıp paylaşılmayacağını belirler.
Yanıt Oluşturma:
Doğrulanan yanıtlar bir JSON dizisi şeklinde yapılandırılır ve motorun tamamı, Aracı Oluşturucu'dan çağrılan sunucusuz bir Cloud Run İşlevi olarak paketlenir.
Yukarıdaki adımlar laboratuvarın 1. bölümünde yer almaktadır.
Akıllı Alışveriş asistanımızı destekleyen, bilgiye dayalı bir analiz motoru oluşturmanın teknik ayrıntılarını konuştuk. Şimdi, bu motoru konuşmaya dayalı bir arayüzde hayata geçirmek için Agent Builder'ın gücünden nasıl yararlandığımızı inceleyelim. 2. bölüme başlamadan önce uç nokta URL'sinin hazır olduğundan emin olun. Sonraki adımda bu laboratuvarda ele alacağımız konular:
Diyal etkileşim:
Agent Builder, yanıtları kullanıcıya doğal dil biçiminde sunarak karşılıklı iletişim kurulmasını kolaylaştırır.
3. Başlamadan önce
Proje oluşturma
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun. Bir projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin .
- Google Cloud'da çalışan ve bq ile önceden yüklenmiş olarak gelen 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'e bağlandıktan sonra aşağıdaki komutu kullanarak kimliğinizin doğrulanıp doğrulanmadığını ve projenin proje kimliğinize ayarlandığından emin olmak için aşağıdaki komutu kullanın:
gcloud auth list
- gcloud komutunun projenizi bildiğini onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın.
gcloud config list project
- Projeniz ayarlanmadıysa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>
- Gerekli API'leri etkinleştirin. gcloud komutunun alternatifi, her ürünü arayarak veya bu bağlantıyı kullanarak konsolda yapılabilir.
Kaçırılan API'ler varsa uygulama sırasında bunları istediğiniz zaman etkinleştirebilirsiniz.
gcloud komutları ve kullanımı için belgelere bakın.
Önemli Not: Ayrıca, bu laboratuvarı tamamlamak için laboratuvarın BÖLÜM 1'i tamamladığınızdan emin olun.
4. Aracı Oluşturma
Aracı Oluşturucu ile Tanışın
Agent Builder, hızlı ve etkili bir şekilde sohbet aracıları oluşturmamızı sağlayan güçlü ve az kod gerektiren bir araçtır. İletişim akışları tasarlama, bilgi tabanlarını entegre etme ve harici API'lere bağlanma sürecini kolaylaştırır. Bizim örneğimizde, 1. Bölüm'de geliştirdiğimiz Cloud Functions işlevi uç noktasına sorunsuz bir şekilde bağlanmak için Agent Builder'ı kullanacağız. Bu sayede, alışveriş asistanımız perakende bilgi tabanımıza erişebilir ve müşteri sorgularına akıllı şekilde yanıt verebilir.
Aracıyı oluşturma
Giyim ürünleriyle ilgili kullanıcı sorularını yanıtlamak için bu yeni temsilciyi oluşturmaya başlayalım.
- Agent Builder platformuna giriş yaparak başlayın. API'yi etkinleştirmeniz istenirse DEVAM ET VE API'Yİ ETKİNLEŞTİR'i tıklayın.
- "UYGULAMA OLUŞTUR"u tıklayın. ve aracınıza açıklayıcı bir ad verin (ör. "Perakende Alışveriş Asistanı").
- Uygulama Türü olarak "Aracı"yı tıklayın.
- , Temsilcinize "Perakende Alışveriş Asistanı" gibi açıklayıcı bir ad verin ve bölgeyi us-central1 olarak ayarlayın
- Temsilciyle ilgili ayrıntıları girin:
- Temsilci Adı'nı "Perakende Alışveriş Temsilcisi" olarak değiştirin.
- 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.
- Bu noktada kaydedin ve talimatları şimdilik boş bırakın.
- Ardından gezinme menüsünden Araçlar'ı ve OLUŞTUR'u tıklayın.
Araç Adı 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.
Şemayı girin - YAML biçiminde OpenAPI'yi girin:
Bu, aracıyı güçlendirmek için arka uç uç noktasını kullandığımız kısımdır. Aşağıdaki OpenAPI spesifikasyonunu kopyalayın ve URL yer tutucusunu (açılı parantez içinde) Cloud Functions işlevi 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ıp "Kaydet"i tıklayın.
- "Araç"ı eklemek istediğimizden bu noktada "Talimatlar" kısmına yapılandırmalısınız. Aşağıdakileri 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.
"Perakende Alışveriş Aracı" aracından emin olun. "Mevcut Araçlar" bölümüne gidip aracıyı tekrar kaydedin.
5. Aracıyı test etme
Sağ bölmede, aracınızı test etmenize olanak tanıyan Önizleme Aracısı bölümünü görürsünüz.
Aşağıdaki ekran görüntüsünde görebileceğiniz gibi, bir kullanıcı olarak selamladım ve sohbetime mavi baskılı beyaz gömlek isteğiyle başladım:
JSON yanıtı şu şekildedir:
Bu, AlloyDB Benzerlik Araması'nı işleyen Cloud Functions işlevinden alınan ham JSON sonucudur. İşte bu kadar. Şu anda temsilciyle ilgili her şey hazır.
6. Örnek İleti Dizisi Akışı
Bu noktada iletişim (ileti dizisi) aracınızın akışını test edebilir ve 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!
Birkaç Çekim İstemi
Şimdi sonucu sohbet aracısında resimler ve bağlantılar da dahil olmak üzere belirli bir grafik biçiminde görmek istediğinizi düşünelim. Bunu, "Az Kare İstem" olarak da bilinen sohbet örneklerini kullanarak yapacağız.
Diğer bir deyişle, tutarlı bir sonuç biçimi elde etmek için aracı oluşturucuya birkaç örnek eklemek istiyoruz.
"Test the Agent" (Aracıyı Test Etme) başlıklı önceki ekran görüntülerimizden birinde bölümünde, temsilcinin yanıtını "Anladım. Mavi baskılı beyaz bir gömlek arıyorsunuz..." Bu yanıta gidin veya aracının sağ bölmesinden yeni bir test görüşmesi oluşturun:
- "Kullanıcı Girişi Girin" alanına aşağıdakileri yazın bölüm:
Şuna benzer bir yanıt görürsünüz:
Ayrıca, API uç noktası tarafından döndürülen JSON Dizisini de görürsünüz.
- Şimdi önizleme bölümünün kenar boşluğundan Aracı Adı'nı (aşağıdaki resimde kırmızı bir onay işaretiyle vurgulanmış olarak) tıklayın. Böylece sohbet önizleme bölümündeki tüm sekmeleriniz vurgulanır. Şimdi "Örneği Kaydet"i tıklayın tıklayın. Bu arayüz şöyle görünür:
- Görüşmeyi Görünen Ad "Resimli yanıt" ile kaydedin veya benzer bir metin yazıp "Oluştur"u tıklayın.
- Şimdi yukarıdaki resimde siyah onay işaretiyle vurgulanan yanıt sekmesine gidin ve "Görüyorum. Sarı sandalet arıyorsunuz. Doğru mu?" şunlar:
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>
- "Kaydet"i tıklayın. üst kısmında yer alır.
Görüşmenin farklı varyasyonları ve akışlarıyla bu işlemi istediğiniz kadar örnek için tekrarlayın.
Şimdi devam edin ve bir kullanıcı girişiyle test edin:
Diğer bazı yanıt türleri:
Bu kadar basit. Perakende uygulamamız için başarılı bir şekilde bir Sohbet Aracısı oluşturup test ettik.
7. Dağıtım ve Entegrasyon
Temsilcinizden memnun kaldığınızda, Agent Builder'ın entegrasyonlarını kullanarak temsilciyi çeşitli kanallara kolayca dağıtabilirsiniz. Uygulamayı web sitenize yerleştirebilir, popüler mesajlaşma platformlarıyla entegre edebilir ve hatta özel bir mobil uygulama oluşturabilirsiniz. Agent Builder API'yi, bu blog'da ele aldığımız web istemcisi uygulamalarımızda da kullanabiliriz.
8. Temizleme
Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:
9. Tebrikler
Tebrikler! Özel olarak oluşturulmuş 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ı geliştirdik. AlloyDB, Vertex AI ve Vektör Arama'nın özelliklerini birleştirerek bağlamsal ve vektörel aramaları erişilebilir, verimli, anlam odaklı ve aracı odaklı hale getirme konusunda büyük bir adım attık.