1. Giriş
Modern perakendede verileriniz, çeşitli ve geniş bir ekosistemdir. Elinizde sağlam işlem verileri (fiyatlandırma ve envanter), "karmaşık" polimorfik kataloglar (elektronik özellikleri ve giysi bedenleri) ve petabaytlarca davranış günlüğü var. Bunları tek bir monolitik yapıya zorlamak yalnızca teknik borç yaratmakla kalmaz, aynı zamanda kullanıcı deneyimini de mahveder.
Bu codelab'de, aşağıdakileri uyumlu hale getiren bir Polyglot Powerhouse tasarlayacaksınız:
- AlloyDB: Yüksek hızlı tutarlılık ve görüntü yerleştirmeleri için işlem omurganız.
- Google Cloud'da MongoDB Atlas: Esnek, şemadan bağımsız katalog katmanınız.
- Cloud Storage: Gerçek zamanlı trend tahmini için analitik beyniniz.
- BigQuery: Yüksek çözünürlüklü dijital deponuz.
"Gizli formül" mü? Cloud Run'da çalışan veri kaynaklarını anlamsal bir köprü olarak akıllıca düzenlemek ve birleştirmek için MCP Toolbox for Databases'i kullanacak, ardından Agent Development Kit (ADK)'i kullanarak birden fazla temsilci içeren bir sohbet uygulaması dağıtacaksınız. Yalnızca bir arama çubuğu değil, bağlamı anlayan, kısıtlamalara uyan ve ham veriler ile insan niyeti arasındaki boşluğu dolduran akıllı bir perakende beyni oluşturuyorsunuz.
İmkansız Kullanıcı Sorgusu
Standart e-ticaret temsilcileri, çok boyutlu akıl yürütme (olumsuz kısıtlamaları, görsel benzerliği ve gerçek zamanlı envanteri birleştirme) konusunda başarısız olur. Örneğin, bir perakende sitesiyle genellikle şu şekilde konuşmak isterim:
"Merhaba, yüksek irtifada fotoğraf çekimi yapacağım bir gezi planlıyorum. "AeroGlow Pro"ya benzer tarzda ancak deri bileşenleri olmayan, hava koşullarına dayanıklı sırt çantaları göster. Ayrıca, ürünün stokta olup olmadığını ve diğer fotoğrafçıların yorumlarda kayışın dayanıklılığıyla ilgili şikayette bulunup bulunmadığını da öğrenmek istiyorum."
Bu sorgu neden "Temsilci Katili" olarak adlandırılıyor?
- Görsel benzerlik (AlloyDB + Vektör Arama): "AeroGlow Pro'ya benzer tarzda" ifadesi, resim yerleştirme karşılaştırması gerektirir.
- Olumsuz kısıtlama (MongoDB): "Deri içermeyen" ifadesi, genellikle standart SQL şemasında bulunmayan esnek, iç içe yerleştirilmiş özelliklerin filtrelenmesini gerektirir.
- Gerçek zamanlı envanter (AlloyDB): "Gerçekten stokta" ifadesi, eski bir arama dizini yerine canlı bir işlem kontrolü gerektirir.
- Semantik Sentez (BigQuery + Çoklu Temsilci): "Kayış dayanıklılığı" ile ilgili yorumları analiz etmek için temsilcinin BigQuery'den gelen yapılandırılmamış geri bildirimleri anında özetlemesi gerekir.
Çoğu perakende botu yalnızca "Sırt çantası" ve "Deri" kelimelerini görür ve 10 deri sırt çantası gösterir. Bunu nasıl önlüyoruz?
Çünkü yalnızca anahtar kelimeleri eşleştirmiyoruz. Temsilcilerimizin AlloyDB'deki işlem verileri ve MongoDB'deki esnek özellikler gibi tüm bu kaynaklarda aynı anda "akıl yürütmesini" sağlamak için MCP Toolbox'ı kullanıyoruz. Haydi inşa edelim.
Yapacaklarınız
- Temel ürün verileri için bir AlloyDB kümesi sağlayın.
- Yarı yapılandırılmış ürün ayrıntılarını depolamak için Google Cloud'da MongoDB Atlas'ı yapılandırma
- Ürün resimlerini sunmak için bir Cloud Storage paketi oluşturun.
- Verilere tek tip erişim için Veritabanları için MCP Araç Kutusu'nu Cloud Run'a dağıtma
- Analiz için verileri BigQuery'ye aktarmak üzere ETL süreçlerini çalıştırma
- Yapay zeka ajanıyla doğal dilde sohbet etme

Ön koşullar
- Chrome gibi bir web tarayıcısı
- Faturalandırmanın etkin olduğu bir Google Cloud projesi
- Ücretsiz bir Google Cloud'da MongoDB Atlas hesabı
2. Başlamadan önce
Google Cloud projesi oluşturma
- Google Cloud Console'da, 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.
Cloud Shell'i Başlatma
Cloud Shell, Google Cloud'da çalışan ve gerekli araçların önceden yüklendiği bir komut satırı ortamıdır.
- Google Cloud konsolunun üst kısmından Activate Cloud Shell'i (Cloud Shell'i etkinleştir) tıklayın.
- Cloud Shell'e bağlandıktan sonra kimlik doğrulamanızı doğrulayın:
gcloud auth list - Projenizin yapılandırıldığını doğrulayın:
gcloud config get project - Projeniz beklendiği gibi ayarlanmamışsa ayarlayın:
export PROJECT_ID=<YOUR_PROJECT_ID> gcloud config set project $PROJECT_ID
Değişkenleri ayarlama
Cloud Shell'de proje kimliğiniz ve proje numaranız için ortam değişkenlerini ayarlayın:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
Gerekli API'leri etkinleştirme
Gerekli tüm API'leri etkinleştirmek için şu komutu çalıştırın:
gcloud services enable \
alloydb.googleapis.com \
bigquery.googleapis.com \
storage.googleapis.com \
run.googleapis.com \
cloudbuild.googleapis.com \
artifactregistry.googleapis.com \
iam.googleapis.com \
secretmanager.googleapis.com \
compute.googleapis.com \
servicenetworking.googleapis.com \
aiplatform.googleapis.com
3. Cloud Storage'ı ayarlama
Cloud Storage, ürün resimleri gibi yapılandırılmamış medya öğeleri için devasa bir depolama alanı görevi görür.
- Google Cloud Console'da Cloud Storage'a gidin ve Paket oluştur'u tıklayın.
- Paketinize global olarak benzersiz bir ad verin (ör.
).-ecommerce-images - Oluştur'u tıklayın.
- Demo uygulamasının kimlik doğrulama olmadan resimlere erişmesine izin vermek için Enforce public access prevention on this bucket (Bu pakette genel erişim engeli uygula) seçeneğinin işaretini kaldırın ve Confirm'ü (Onayla) tıklayın.
- İzinler sekmesine gidin.
- İzinler'de Erişim izni ver'i tıklayın.
- Yeni ana hesaplar bölümüne
allUsersyazın. - Select a role (Rol seçin) bölümünde Cloud Storage > Storage Object Viewer'ı (Depolama Alanı Nesne Görüntüleyici) seçin.
- Save'i (Kaydet) tıklayın, ardından kaynağı herkese açık hâle getirdiğinizi onaylamak için Allow Public Access'i (Genel Erişime İzin Ver) tıklayın.
- Cloud Shell'de paket adını bir değişkene kaydedin:
export BUCKET=<your-bucket-name>ifadesini, oluşturduğunuz paketin adıyla değiştirin.
Yer tutucu resimler yükleme
Proje, en iyi görsel deneyim için yer tutucu görseller kullanır.
- Cloud Shell'de depoyu klonlayın:
git clone https://github.com/AbiramiSukumaran/polyglot-persist-ecommerce.git UploadImagesklasörüne gidin:cd polyglot-persist-ecommerce/UploadImages- Örnek resimleri paketinize yükleyin:
gcloud storage cp *.jpg gs://$BUCKET/
4. AlloyDB'yi ayarlama
AlloyDB; ürün kimlikleri, adlar, SKU'lar, fiyatlar ve envanter gibi yapılandırılmış, işlemsel ve kritik veriler için tek doğruluk kaynağı olarak kullanılır. AlloyDB, öneriler ve doğal dil sorguları için benzerlik arama özellikleriyle yapay zeka temsilcisini de destekler.
AlloyDB kümesi temel hazırlığı yapma
- Google Cloud Console'da AlloyDB for PostgreSQL'e gidin.
- Küme Oluştur'u tıklayın.
- Cluster ID (Küme kimliği) için
ecommerce-clusterdeğerini girin. postgreskullanıcısı için güçlü bir şifre belirleyin. Öğrenme amacıylaalloydbkullanabilirsiniz.- Database Version (Veritabanı Sürümü) için varsayılan değeri değiştirmeyin.
- Region (Bölge) olarak
us-central1(veya tercih ettiğiniz bölgeyi) seçin.
Birincil örneği yapılandırma
- Instance ID (Örnek kimliği) alanına
ecommerce-cluster-primaryyazın. - Zonal availability (Alt bölge kullanılabilirliği) bölümünde Single zone'u (Tek alt bölge) seçin.
- Machine series (Makine serisi) için
N2, Machine type (Makine türü) için4 vCPU, 32 GBdeğerini seçin. - Özel IP Bağlantısı bölümünde Private Services Access (PSA)'yı ve
defaultağını seçin.Varsayılan ağ henüz ayarlanmadıysa Ağ kurulumunu onayla'yı tıklayarak bir ağ oluşturun. - Genel IP Bağlantısı bölümünde, MCP araç kutusunun bu codelab'de düzgün şekilde bağlanması için Genel IP'yi etkinleştir onay kutusunu işaretleyin. Konsol, AlloyDB'nin herkese açık IP için gerektirdiği
password.enforce_complexityişaretini otomatik olarak etkinleştirir. - Yetkili harici ağlar bölümüne
0.0.0.0/0değerini girin. Riskleri kabul ediyorum onay kutusunu işaretleyin ve Kaydet'i tıklayın. - Küme Oluştur'u tıklayın.
Veritabanını başlatma
- Soldaki gezinme menüsünden AlloyDB Studio'yu tıklayın.
- Veritabanı açılır menüsünde
postgresseçeneğini belirleyin. - Veritabanında oturum açmak için Yerleşik kimlik doğrulama'yı seçin.
- Kullanıcı adı için
postgreskullanıcısını kullanın. - Password (Şifre) alanına daha önce belirlediğiniz şifreyi girin.
- Kimlik doğrula'yı tıklayın.
- Düzenleyici görünümünde, yeni bir adsız sorgu sekmesi açın.
- Aşağıdaki DDL'yi kopyalayıp Run'ı (Çalıştır) tıklayın:
CREATE TABLE products_core_table ( product_id UUID PRIMARY KEY, name VARCHAR(255) NOT NULL, sku VARCHAR(50) UNIQUE NOT NULL, price NUMERIC(10, 2) NOT NULL, stock INT NOT NULL ); - Cloud Shell'inizde projenin kök klasörüne gidin:
cd ~/polyglot-persist-ecommerce - Cloud Shell'inizde
alloydb_insert_queries.sqldosyasını açın ve ekleme sorgularını kopyalayın.cat alloydb_insert_queries.sql - Yeni bir adsız sorgu sekmesine yalnızca
INSERTifadelerini yapıştırın ve Çalıştır'ı tıklayın. - Yeni bir adsız sorgu sekmesinde aşağıdaki DDL'yi kopyalayın ve
products_core_tabletablosunda dizin oluşturmak için Run'ı (Çalıştır) tıklayın:CREATE INDEX idx_products_core_sku ON products_core_table(sku);
Yapay zeka ajanının benzer ürünleri getirmesi için resim yerleştirmeleri oluşturma
Yapay zeka ajanı entegrasyonu, benzer ürünleri getirmek için görsel yerleştirmelerini kullanır. Yerleştirmeler, multimodalembedding@001 modeli kullanılarak oluşturulur ve AlloyDB veritabanında depolanır. Yerleştirmeler 1408 boyutlu vektörlerdir ve img_embeddings sütununda depolanır.
Yerleştirme oluşturabilmemiz için AlloyDB hizmet hesabına Cloud Storage'a erişmek üzere gerekli rolleri vermemiz gerekir.
Cloud Storage'a erişmek için AlloyDB hizmet hesabına rol verme
AlloyDB hizmet hesabına, Cloud Storage'dan resim okumak ve Vertex AI yerleştirmeleri oluşturmak için gereken rolleri verin:
for role in roles/storage.objectUser roles/storage.objectViewer roles/aiplatform.user; do
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-alloydb.iam.gserviceaccount.com" \
--role=$role --condition=None
done
Uzantıları etkinleştirme
Bu uygulamayı oluşturmak için pgvector ve google_ml_integration uzantılarını kullanacağız. pgvector uzantısı, vektör yerleştirmeleri depolamanıza ve aramanıza olanak tanır. google_ml_integration uzantısı, SQL'de tahmin almak için Vertex AI tahmin uç noktalarına erişmek üzere kullanacağınız işlevleri sağlar. Aşağıdaki DDL'leri çalıştırarak bu uzantıları etkinleştirin:
- Google Cloud Console'da AlloyDB for PostgreSQL'e gidin.
- Soldaki gezinme menüsünden AlloyDB Studio'yu tıklayın.
- Düzenleyici görünümünde, yeni bir adsız sorgu sekmesi açın.
- Aşağıdaki DDL'yi kopyalayıp Run'ı (Çalıştır) tıklayın:
CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS google_ml_integration;
Veritabanını yerleştirmelerle başlatma
- img_embeddings sütununu
products_core_tabletablosuna ekleyin.ALTER TABLE products_core_table ADD COLUMN img_embeddings vector(1408); - Yerleştirme sorgusunu, paket adınız doldurulmuş şekilde yazdırın:
cd ~/polyglot-persist-ecommerce sed "s/<STORAGE_BUCKET_NAME>/$BUCKET/g" alloydb_generate_embeddings.sql - Çıkışı kopyalayıp yeni bir AlloyDB Studio sorgu sekmesine yapıştırın ve Run'ı (Çalıştır) tıklayın. Bu işlem yaklaşık bir dakika sürer. Zaman aşımına uğrarsa tekrar çalıştırın. Yerleştirilmiş ürünler atlanır.
5. Google Cloud'da MongoDB Atlas'ı kurma
MongoDB, zengin ve yarı yapılandırılmış ürün ayrıntılarını ve esnek kullanıcı davranışı verilerini (tıklamalar ve görüntülemeler gibi) depolar.
MongoDB kümesi oluşturma
- MongoDB Atlas'ta oturum açın (gerekirse ücretsiz bir hesap oluşturun).
- Deploy your cluster (Kümenizi dağıtın) bölümünde Free'yi (Ücretsiz) seçin. (Atlas, ücretli bir katmanı önceden seçer. Ücretsiz'in seçili olduğundan emin olun.)
- Provider (Sağlayıcı) için Google Cloud'u, Region (Bölge) için Iowa (us-central1)'ı seçin.
- Name (Ad) alanına
ecommerce-clusteryazın ve Preload sample dataset (Örnek veri kümesini önceden yükle) seçeneğinin işaretini kaldırın. - Create Deployment'ı (Dağıtım Oluştur) tıklayın.
Erişime izin verme ve veritabanı kullanıcısı oluşturma
Atlas, Connect to ecommerce-cluster (ecommerce-cluster'a bağlan) iletişim kutusunu açar.
- Farklı bir IP adresi ekle'yi tıklayın,
0.0.0.0/0adresini girin ve ekleyin. - Username (Kullanıcı adı) için
store-user, Password (Şifre) içinstoreuserdeğerini girip Create Database User'ı (Veritabanı Kullanıcısı Oluştur) tıklayın. - Choose a connection method'ı (Bağlantı yöntemi seçin), ardından Drivers and Client Libraries'i (Sürücüler ve İstemci Kitaplıkları) tıklayın.
- Bu bağlantı dizesini uygulamanızda kullanın bölümünde bağlantı dizesini kopyalayın.
mongodb+srv://store-user:gibi görünüyor.@ecommerce-cluster.xxxxx.mongodb.net/ değerinistoreuserile değiştirip dizeyi kaydedin. Bu dizeyitools.yamliçinde kullanacaksınız.
Veritabanı ve koleksiyon oluşturma
- Soldaki gezinme menüsünde Veri Gezgini'ni, ardından Veritabanı oluştur'u tıklayın ve ayrıntıları girin:
- Veritabanı Adı:
ecommerce_db - Koleksiyon Adı:
product_details_collection
- Veritabanı Adı:
- Veritabanı oluştur'u tıklayın.
- Veri Gezgini'nde koleksiyon adını seçin.
- Veri ekle (+) simgesini, ardından Doküman ekle'yi tıklayın.
- product_details_export.json dosyasındaki JSON içeriğini kopyalayıp Insert Document (Doküman Ekle) düzenleyici iletişim kutusuna yapıştırın.
- Atlas, metni kabuk söz dizimine dönüştürmeyi öneren bir banner gösterir. DÖNÜŞTÜR'ü ve ardından Ekle'yi tıklayın. 192 dokümanın eklendiğini doğrulayın.
- Veri Gezgini'nde,
ecommerce_dbveritabanının yanındaki Koleksiyon oluştur (+) seçeneğini tıklayın. - Koleksiyon adı olarak
user_interactions_collectiongirin ve Create Collection'ı (Koleksiyon Oluştur) tıklayın. - Veri Gezgini'nde
user_interactions_collectionkoleksiyonunu seçin. - Veri ekle (+) simgesini, ardından Doküman ekle'yi tıklayın.
- user_interactions_export.json dosyasındaki JSON içeriğini kopyalayıp Insert Document (Doküman Ekle) düzenleyici iletişim kutusuna yapıştırın.
- Atlas, metni kabuk söz dizimine dönüştürmeyi öneren bir banner gösterir. DÖNÜŞTÜR'ü ve ardından Ekle'yi tıklayın. 211 belgenin eklendiğini doğrulayın.
6. BigQuery ayarlarını yapma
BigQuery, akıllı raporlar ve öneriler oluşturmak için geçmiş kullanıcı davranışlarını birleştirir ve analiz eder.
Veri kümesini oluşturma
- Google Cloud Console'da BigQuery'ye gidin.
- Gezgin bölmesinde proje kimliğinizin yanındaki üç nokta menüsünü tıklayın ve Veri kümesi oluştur'u seçin.
- Veri Kümesi Kimliği için
ecommerce_analyticsdeğerini girin. - Veri konumu olarak
US (multiple regions)seçeneğini belirleyin (tools.yamlyapılandırmasıUSkonumunu bekler). - Veri kümesi oluştur'u tıklayın.
Analytics tablosunu oluşturma
- BigQuery çalışma alanında yeni bir sorgu açın.
- Kullanıcıları ürün etkileşimlerine bağlayan özet tabloyu oluşturmak için aşağıdaki SQL ifadesini çalıştırın:
CREATE TABLE ecommerce_analytics.user_product_interactions (
user_id STRING DEFAULT 'any user',
product_id STRING,
interaction_score INT
);
Compute hizmet hesabına rol verme
Varsayılan Compute hizmet hesabına, MCP Toolbox ve uygulamanın ihtiyaç duyduğu rolleri verin:
for role in \
roles/bigquery.dataEditor \
roles/bigquery.jobUser \
roles/secretmanager.secretAccessor \
roles/alloydb.client \
roles/serviceusage.serviceUsageConsumer \
roles/storage.objectViewer \
roles/aiplatform.user \
roles/artifactregistry.writer; do
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="$role" \
--condition=None
done
Alternatif olarak, konsolda IAM & Admin > IAM'e (IAM ve Yönetici > IAM) gidin, Grant access'i (Erişim izni ver) tıklayın, hizmet hesabını girin ve aynı rolleri ekleyin.
7. Uygulamayı uçtan uca anlama
Her bileşenin birbiriyle nasıl çalıştığını öğrenmek için birden fazla veritabanı ve hizmet kullanan bir e-ticaret uygulaması oluşturacağız. Uygulama, Python (Flask) arka ucuyla oluşturulmuştur ve birden fazla Google Cloud hizmeti ile veritabanını entegre eder.
Dizin yapısını anlama
Sonraki bölümde, polyglot-persist-ecommerce deposunu klonlayacak ve uygulamayı yerel olarak çalıştırmak için kullanacaksınız. Uygulamayı yerel olarak test ettikten sonra hem MCP Toolbox'ı hem de uygulamayı Cloud Run'a dağıtırız.
Bu dizindeki indirilen dosyaları inceleyin. Aşağıdaki üst düzey dizinler mevcuttur:
UploadImages: Resim öğelerini depolar. Genellikle e-ticaret ürün kataloğu için doküman veya görsel içerik amacıyla kullanılır.static: Kullanıcı arayüzünü biçimlendirmek ve etkileşimli hale getirmek için kullanılan CSS ve JavaScript dosyaları gibi uygulamanın statik web öğelerini depolar ( kaynak).templates: Python uygulamasının e-ticaret kataloğu için web sayfalarını dinamik olarak oluşturmak amacıyla kullandığı HTML şablonlarını (büyük olasılıkla Flask için Jinja2) depolar ( kaynak).
Bu depodaki dosyalar, çoklu veritabanı e-ticaret uygulaması oluşturmak, yapılandırmak ve dağıtmak için birlikte çalışır. app.py gibi merkezi dosyalar, SQL ve JSON dosyalarında tanımlanan çeşitli veri kaynaklarını entegre ederek arka ucu yönetir. Yapılandırma dosyaları ise bulut ortamlarına sorunsuz dağıtım sağlar:
app.py: Flask arka ucu ve çoklu veritabanı entegrasyonlarını yönetir.agentengine.py: Vertex AI yapay zeka ajanlarını başlatmak ve yapılandırmak için temel mantık..env: Veritabanı ve depolama alanı bağlantıları için gizli anahtarları depolar.tools.yaml: Multidb veritabanı işlemleri için MCP Araç Kutusu'nu yapılandırır.Dockerfile: Container görüntüsünü ve ortam kurulumunu tanımlar.requirements.txt: Uygulama çalışma zamanı için gereken Python kitaplıklarını listeler.tools.yaml: MCP Araç Kutusu için yapılandırmalar.Procfile: Dağıtım için üretim yürütme komutlarını belirtir.alloydb_insert_queries.sql: İlişkisel veriler için SQL sorguları içerir.product_details_export.jsonveuser_interactions_export.json: NoSQL veritabanı için örnek JSON verileri sağlar.README.md: Kurulum, dağıtım ve proje anlayışına rehberlik eder.
Uygulamanın Uçtan Uca Akışı
- AlloyDB Kurulumu: Yüksek performanslı bir küme sağlayın ve sağlanan SQL komut dosyalarını kullanarak resim yerleştirmeleri için vektör sütunları içeren products_core_table tablosunu oluşturun.
- MongoDB Atlas Kurulumu: Değişken ürün özelliklerini product_details'te depolamak ve gerçek zamanlı tıklama akışlarını user_interactions'ta günlüğe kaydetmek için Google Cloud'da bir küme dağıtın.
- BigQuery Analytics: Etkileşim günlüklerini birleştirmek için bir veri kümesi oluşturun. Böylece milyonlarca etkinlikte "En Popüler 5" öğeyi belirleyen karmaşık analiz sorguları çalıştırabilirsiniz.
- Cloud Storage deposu: Yüksek çözünürlüklü ürün resimlerini barındırmak için herkese açık bir paket oluşturun. Her öğeye, ön uç için imzalı veya herkese açık bir URL kullanarak erişilebildiğinden emin olun.
- MCP Toolbox dağıtımı: Toolbox'ı Cloud Run'a dağıtarak doğal dil niyetini çoklu veritabanı sorgularına çeviren merkezi RESTful köprüsü olarak oluşturun.
- Tools.yaml yapılandırması: "Araçlarınızı" (ör. get_product_core_data veya get_top_5_views) tanımlayın. Belirli SQL ve NoSQL işlemlerini, temsilci tarafından okunabilen basit adlarla eşleyin.
- Flask arka uç mantığı: MCP Araç Kutusu ile arayüz oluşturan, veri alma koordinasyonunu yöneten ve kullanıcı arayüzü için API görevi gören app.py rotalarını uygulayın.
- Çoklu Temsilci Düzenleme: Kod içindeki ADK temsilcilerini, kullanıcı niyetini anlamak ve karmaşık, çok kaynaklı perakende sorgularını çözmek için doğru "Aracı" seçmek üzere yapılandırın.
- Ön uç entegrasyonu: Etkileşimleri kaydetme özelliğine sahip ürün kataloğunu içeren bir index.html arayüzü, ürün performansı analizlerini anlamak için Analytics sekmesi ve sorunsuz bir sohbet tabanlı alışveriş deneyimi sunmak için ADK çoklu temsilci sohbetini kullanan özel bir "Temsilci sekmesi" oluşturun.
Şimdi de orkestrasyonu ve dağıtımları uygulayalım.
8. MCP Toolbox'ı kurma ve Cloud Run'a dağıtma
MCP Toolbox, birden fazla veri kaynağımızı soyutlayarak uygulamamızın verileri tek tip olarak alıp yazmasına olanak tanır.
MCP Toolbox'ı yerel olarak yükleme
MCP Araç Kutusu ikili programını ana dizininize indirin ve yürütülebilir hale getirin:
export VERSION=1.15.0
curl -L -o ~/toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/linux/amd64/toolbox
chmod +x ~/toolbox
tools.yaml dosyasını yapılandırma
AlloyDB, MongoDB ve BigQuery için soyutlamaları tanımlamanız gerekir. tools.yaml dosyası, MCP araç kutusuna birbirleriyle nasıl etkileşim kuracağını bildirir.
- Depoda zaten
tools.yamlvar. Açın:cd ~/polyglot-persist-ecommerce cloudshell edit tools.yaml *****yer tutucularını kendi değerlerinizle değiştirin:Veritabanı
Alan
Örnek Değer
AlloyDB/BigQuery
projectYOUR_PROJECT_IDAlloyDB
regionus-central1AlloyDB
clusterecommerce-clusterAlloyDB
instanceecommerce-cluster-primaryAlloyDB
databasepostgresAlloyDB
passwordalloydbAlloyDB
ipTypepublic(yoksa bu satırıalloydb-sourcealtına ekleyin)MongoDB
uriDaha önce kaydettiğiniz bağlantı dizesi
- Resim önizlemelerini paketinize yönlendirin:
sed -i "s/ecommerce-app-images/$BUCKET/g" tools.yaml
Aracınızın kullanıcı arayüzünü test etme
- Cloud Shell terminalinizde, kullanıcı arayüzünü sunmak için araç kutusunu yerel olarak çalıştırın:
~/toolbox --config tools.yaml --ui --enable-api - Cloud Shell'de Web Önizlemesi > Bağlantı noktasını değiştir'i tıklayın,
5000değerini girin ve açılan URL'nin sonuna/uiifadesini ekleyin.
Aşağıdaki MCP Toolbox kullanıcı arayüzü gösterilir:

İşiniz bittiğinde yerel araç kutusunu durdurmak için Ctrl+C tuşuna basın.
Cloud Run'a dağıt
MCP Toolbox'ı Cloud Run'a dağıtarak uygulamanızın veritabanlarını sorgulamak için kullanabileceği güvenli ve yönetilen bir hizmet olarak kullanılabilir hale getirin. Hassas bağlantı ayrıntılarını korumak için yapılandırmayı Secret Manager'da saklayacağız.
tools.yamlyapılandırmasını Google Secret Manager'a yükleyin:gcloud secrets create tools --data-file=tools.yamltools.yamldeğerini daha sonra değiştirirseniz yeni bir sürüm yükleyin:gcloud secrets versions add tools --data-file=tools.yaml- Herkese açık MCP Araç Kutusu container görüntüsünü kullanarak dağıtma:
gcloud run deploy toolbox \ --image us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION \ --region us-central1 \ --service-account ${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \ --set-secrets "/app/tools.yaml=tools:latest" \ --args="--config=/app/tools.yaml","--address=0.0.0.0","--port=8080","--ui","--enable-api" \ --allow-unauthenticated--enable-api, web uygulamasının kullandığı REST API'yi etkinleştirir. - Araç kutusu URL'sini kaydedin:
Araçları görmek için tarayıcınızdaexport TOOLBOX_URL=$(gcloud run services describe toolbox --region us-central1 --format='value(status.url)') echo $TOOLBOX_URL$TOOLBOX_URL/uiadresini açabilirsiniz.
9. E-ticaret uygulamasını ayarlama ve Cloud Run'a dağıtma
Veritabanlarımız çalışır durumda ve MCP Toolbox soyutlaması dağıtılmış olduğuna göre Flask web uygulamasını çalıştırabiliriz.
Flask uygulaması, ürün kataloğunu sunmak için aşağıdaki adımları uygulayarak verileri işler:
- Fetch core data: AlloyDB'den (
list_products_core) ürünlerin tam listesini alır. - Fetch extended details: MongoDB'den (
list_all_product_details) tüm ürün ayrıntılarını alır. - Listeleri birleştir: İki listeyi birleştirir.
- Medyayla zenginleştirme: Cloud Storage resim URL'sini her öğeye ekler.
Temsilci motorunu oluşturma
- Bağımlılıkları yükleyin:
Not: Bu adımda paketlerin çözümlenmesi ve yüklenmesi birkaç dakika sürebilir.cd ~/polyglot-persist-ecommerce pip install -r requirements.txt - Vertex AI Akıl Yürütme Motoru'nu kullanarak yapay zeka temsilcisini başlatma ve kaydetme:
Çıkış aşağıdakine benzer olacaktır:export REASONING_ENGINE_LOCATION=us-central1 export APP_NAME=$(python agentengine.py) echo $APP_NAMEprojects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856
Uygulama, ayarlarını aşağıdaki dağıtım komutunda ilettiğiniz ortam değişkenlerinden okur. Bu nedenle .env dosyasını düzenlemeniz gerekmez.
Ön ucu Cloud Run'a dağıtma
- Mimarinin tamamlanması için web uygulamasını Cloud Run'a dağıtın:
gcloud run deploy polyglot --source . \ --region us-central1 \ --allow-unauthenticated \ --set-env-vars="MCP_TOOLBOX_SERVER_URL=$TOOLBOX_URL,GCS_PRODUCT_BUCKET=$BUCKET,FALLBACK_IMAGE_URL=https://storage.googleapis.com/$BUCKET/fallback.jpg,GOOGLE_GENAI_USE_VERTEXAI=TRUE,PROJECT_ID=$PROJECT_ID,GOOGLE_CLOUD_LOCATION=global,REASONING_ENGINE_LOCATION=$REASONING_ENGINE_LOCATION,APP_NAME=$APP_NAME,MODEL=gemini-3.5-flash"
Uygulamanız artık yayında. Multidb Ecommerce kataloğunu görmek için Cloud Run tarafından sağlanan hizmet URL'sini açın. URL, https://polyglot-*********-uc.a.run.app/ adresine benzer olacaktır.
10. Uygulamayı keşfetme
- Tüm ürünleri görüntülemek için Ürün Kataloğu'nu tıklayın.

- Ürün ayrıntılarını görüntülemek için bir ürün simgesini tıklayın. Resimlerin Cloud Storage'dan, ürün ayrıntılarının MongoDB'den ve ürün envanterinin AlloyDB'den alındığını göreceksiniz.

- MongoDB'ye gönderilen sahte görünümler ve yazma işlemleri oluşturmak için ürün kataloğuyla etkileşim kurun.
- Ürün analizlerini görüntülemek için ETL ve Analytics'i tıklayın. Ürün analizlerinin BigQuery'den alındığını göreceksiniz.

- Yapay zeka ajanıyla etkileşim kurmak için Yapay zeka ajanı sekmesini tıklayın. Doğal dilde sorular sorun. Örneğin:
I'm planning a high-altitude photography trip. Show me some weather-resistant backpacks similar in style to aero glow pro but without any leather components. Also, let me know if they are actually in stock and if other photographers have complained about the strap durability in the reviews.
Aramanın tam olarak istediğimiz sonucu verdiğini görebilirsiniz: deri bileşenleri olmayan, stokta bulunan ve yorumlarda askı dayanıklılığıyla ilgili şikayet olmayan bir sırt çantası.

11. Temizleme
Google Cloud hesabınızdan ücret alınmaya devam etmemesi için bu codelab'de oluşturulan kaynakları silin.
Şu Cloud Shell komutlarını çalıştırın:
gcloud run services delete toolbox --region us-central1 --quiet
gcloud run services delete polyglot --region us-central1 --quiet
gcloud secrets delete tools --quiet
bq rm -r -f -d $PROJECT_ID:ecommerce_analytics
gcloud storage rm --recursive gs://$BUCKET
gcloud alloydb clusters delete ecommerce-cluster --region us-central1 --force --quiet
İsteğe bağlı olarak Agent Engine örneğini silebilirsiniz:
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://us-central1-aiplatform.googleapis.com/v1/$APP_NAME?force=true"
Alternatif olarak, Google Cloud Console'da Vertex AI > Agent Engine'a gidip örneği silebilirsiniz.
İsteğe bağlı olarak, Google Cloud projesinin tamamını ve tüm kaynaklarını silmek için aşağıdaki komutu çalıştırın:
gcloud projects delete $PROJECT_ID
12. Tebrikler
Tebrikler! Bulutlar arası bir Multidb mimarisini başarıyla oluşturdunuz.
MCP Toolbox'ın modern ve özel bir uygulama için mimari birleştirici olarak nasıl kullanıldığını gösterdiniz. Doğru veritabanını doğru işe eşleştirerek şunları başardınız:
- Esnek Veri Yazma İşlemleri: Olay günlükleri için MongoDB.
- İşlem tutarlılığı: Temel bütünlük için AlloyDB.
- Yüksek performanslı analiz: İş zekası için BigQuery.
- Birleştirilmiş geliştirme: MCP Araç Kutusu'nu kullanarak tüm karmaşıklığı soyutlayan tek bir Python arka ucu.
Referans belgeler
İlgili Google Cloud ürünleri hakkında daha fazla bilgi edinin ve şu codelab'leri inceleyin:
- AlloyDB AI: AlloyDB AI ile vektör yerleştirmelerini kullanmaya başlama
- AlloyDB AI: AlloyDB'de Çok Formatlı Yerleştirmeler
- MCP Toolbox: AlloyDB'de MCP Toolbox for Databases'i yükleme ve kurma
Bu codelab'de kullanılan ürünler hakkında daha fazla bilgi için aşağıdaki kaynaklara göz atın: