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şturma konusunda 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.
Sorun: Modern perakende müşterileri, anında yanıtlar ve benzersiz tercihlerine uygun ürün önerileri bekliyor. Geleneksel arama yöntemleri genellikle bu düzeyde kişiselleştirme sunamaz.
Çözüm: Bilgiye dayalı sohbet uygulamamız, bu zorluğun doğrudan üstesinden gelmeyi sağlar. 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 tabanından yararlanır.
Ne 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ı temsilciyle entegre etme
Şartlar
2. Mimari
Veri Akışları: Verilerin sistemimizde nasıl hareket ettiğ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ştirme Oluşturma: Hem kullanıcının sorgusu hem de AlloyDB'de depolanan bilgiler için yerleştirmeler (metnin matematiksel temsilleri) oluşturulur.
- Vektör Arama: 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 bilgilerin gerçekten alakalı olup olmadığını ve kullanıcıyla paylaşmanın güvenli olup olmadığını belirler.
Yanıt Oluşturma:
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ızı destekleyen, bilgiye dayalı bir analiz motoru oluşturmanın teknik ayrıntılarını konuştuk. Şimdi, bu motoru etkileşimli bir arayüzde hayata geçirmek için Agent Builder'ın sihrinden nasıl yararlandığımızı inceleyelim. 2. bölüme başlamadan önce uç nokta URL'sini hazırlayın. Sonraki adımda bu laboratuvarda ele alacağımız konular:
Sohbet etkileşimi:
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 projenizde faturalandırmanın etkinleştirildiğinden emin olun. 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ü aramak veya bu bağlantıyı kullanarak konsoldan yararlanmaktır.
Kaçırılan API'ler varsa uygulama sırasında bunları istediğiniz zaman etkinleştirebilirsiniz.
gcloud komutları ve kullanımı için dokümanlara bakın.
Önemli Not: Ayrıca, bu laboratuvarı tamamlamak için laboratuvarın BÖLÜM 1'i tamamladığınızdan emin olun.
4. Temsilci Oluşturma
Agent Builder 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ı").
- "Temsilci" uygulama türünü tıklayın.
- , Temsilcinize "Perakende Alışveriş Asistanı" gibi açıklayıcı bir ad verin ve bölgeyi us-central1 olarak ayarlayın
- Temsilcinin ayrıntılarını girin:
- Temsilci adını "Retail Shopping Agent" 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 ardından OLUŞTUR'u tıklayın.
Araç Adı Gir: 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, aracıyı desteklemek için arka uç uç noktasını kullandığımız bölü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ın ve "Kaydet"i tıklayın.
- "Araç" yapılandırmasını müşteri temsilcisinin "Talimatları"na eklemek istediğimiz için bu noktada müşteri temsilcisine geri dönün. 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. Temsilciyi 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öreceğiniz gibi, kullanıcı olarak selam verdim ve sohbetimi mavi baskılı beyaz gömlek istemesiyle başlattı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, diyalog (sohbet) temsilcinizin 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!
Çok Görevli İstemler
Şimdi, sonucu sohbet aracısında resim ve bağlantılar içeren belirli bir grafik biçiminde görmek istediğinizi varsayalım. Bunu, az sayıda istem 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.
"Müşteri temsilcisini test etme" bölümündeki önceki ekran görüntülerimizden birinde müşteri temsilcisinin "Anladım. Mavi baskılı beyaz bir gömlek arıyorsunuz..." İlgili yanıta gidin veya müşteri temsilcisinin 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.
- Ardından, önizleme bölümünün kenar boşluğundaki müşteri temsilcisi adını (aşağıdaki resimde kırmızı onay işaretiyle vurgulanmıştır) tıklayın. 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 "Anladım. 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>
- Üstteki "Kaydet"i tıklayın.
Sohbetin farklı varyasyonları ve akışlarıyla istediğiniz kadar örnek için bu süreci tekrarlayın.
Şimdi devam edin ve bir kullanıcı girişiyle test edin:
Diğer yanıt türlerinden bazıları:
Bu kadar basit. Perakende uygulamamız için bir Etkileşimli Temsilci'yi başarıyla 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çta 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.