1. บทนำ
ในการค้าปลีกสมัยใหม่ ข้อมูลของคุณเป็นระบบนิเวศที่หลากหลายและขยายตัวอย่างรวดเร็ว คุณมีข้อมูลธุรกรรมที่เชื่อถือได้ (ราคาและสินค้าคงคลัง) แคตตาล็อกแบบ Polymorphic ที่ "ยุ่งเหยิง" (ข้อมูลจำเพาะของอุปกรณ์อิเล็กทรอนิกส์เทียบกับขนาดเครื่องแต่งกาย) และบันทึกพฤติกรรมขนาดหลายเพตะไบต์ การบังคับให้รวมสิ่งเหล่านี้ไว้ในสถาปัตยกรรมแบบโมโนลิธเดียวไม่เพียงแต่สร้างหนี้ทางเทคนิคเท่านั้น แต่ยังทำลายประสบการณ์ของผู้ใช้ด้วย
ใน Codelab นี้ คุณจะได้ออกแบบสถาปัตยกรรม Polyglot Powerhouse ที่ผสานรวมสิ่งต่อไปนี้เข้าด้วยกัน
- AlloyDB: แบ็กโบนธุรกรรมเพื่อความสอดคล้องความเร็วสูงและการฝังรูปภาพ
- MongoDB Atlas บน Google Cloud: เลเยอร์แคตตาล็อกที่ไม่ขึ้นอยู่กับสคีมาและมีความยืดหยุ่น
- Cloud Storage: สมองด้านการวิเคราะห์สำหรับการคาดการณ์แนวโน้มแบบเรียลไทม์
- BigQuery: คลังข้อมูลดิจิทัลความละเอียดสูง
"สูตรลับ" คืออะไร คุณจะใช้ MCP Toolbox สำหรับฐานข้อมูลเพื่อจัดการและรวมแหล่งข้อมูลที่ทำงานบน Cloud Run อย่างชาญฉลาดเป็นบริดจ์เชิงความหมาย จากนั้นติดตั้งใช้งานแอปแชทแบบหลาย Agent โดยใช้ Agent Development Kit (ADK) คุณไม่ได้แค่สร้างแถบค้นหา แต่กำลังสร้างสมองอัจฉริยะสำหรับการค้าปลีกที่เข้าใจบริบท เคารพข้อจำกัด และเชื่อมช่องว่างระหว่างข้อมูลดิบกับความตั้งใจของมนุษย์
คำค้นหาของผู้ใช้ที่เป็นไปไม่ได้
ตัวแทนอีคอมเมิร์ซมาตรฐานไม่สามารถให้เหตุผลแบบหลายมิติ (การรวมข้อจำกัดเชิงลบ ความคล้ายคลึงกันของภาพ และสินค้าคงคลังแบบเรียลไทม์) ตัวอย่างเช่น โดยปกติแล้วฉันต้องการพูดคุยกับเว็บไซต์ค้าปลีกในลักษณะนี้
"สวัสดี ฉันกำลังวางแผนทริปถ่ายภาพบนที่สูง ขอดูเป้สะพายหลังที่ทนต่อสภาพอากาศซึ่งมีสไตล์คล้ายกับ "AeroGlow Pro" แต่ไม่มีส่วนประกอบที่เป็นหนัง แล้วก็บอกฉันด้วยว่ามีสินค้าพร้อมจำหน่ายไหม และมีช่างภาพคนอื่นบ่นเรื่องความทนทานของสายสะพายในรีวิวหรือเปล่า
เหตุใดคำค้นหานี้จึงเป็น "The Agent Killer"
- ความคล้ายคลึงกันของภาพ (AlloyDB + Vector Search): "สไตล์คล้ายกับ AeroGlow Pro" ต้องมีการเปรียบเทียบการฝังรูปภาพ
- ข้อจำกัดเชิงลบ (MongoDB): "ไม่มีหนัง" ต้องกรองผ่านแอตทริบิวต์ที่ซ้อนกันและยืดหยุ่นซึ่งโดยปกติจะไม่อยู่ในสคีมา SQL มาตรฐาน
- สินค้าคงคลังแบบเรียลไทม์ (AlloyDB): "มีสินค้าพร้อมจำหน่ายจริง" ต้องมีการตรวจสอบธุรกรรมแบบเรียลไทม์ (ไม่ใช่ดัชนีของ Search ที่ล้าสมัย)
- การสังเคราะห์เชิงความหมาย (BigQuery + Multi-Agent): การวิเคราะห์รีวิวเกี่ยวกับ "ความทนทานของสายรัด" กำหนดให้ Agent ต้องสรุปความคิดเห็นที่ไม่มีโครงสร้างจาก BigQuery ได้ทันที
บ็อตค้าปลีกส่วนใหญ่จะเห็นแค่ "เป้สะพายหลัง" และ "หนัง" แล้วแสดงเป้สะพายหลังหนัง 10 ใบ เราจะหยุดยั้งเรื่องนี้ได้อย่างไร
เนื่องจากเราไม่ได้จับคู่คีย์เวิร์ดเท่านั้น เราใช้ MCP Toolbox เพื่อให้ตัวแทน "ให้เหตุผล" ในแหล่งข้อมูลทั้งหมดเหล่านี้ ไม่ว่าจะเป็นข้อมูลความจริงเกี่ยวกับธุรกรรมใน AlloyDB และแอตทริบิวต์ที่ยืดหยุ่นใน MongoDB พร้อมกัน มาสร้างกันเลย
สิ่งที่คุณต้องทำ
- จัดสรรคลัสเตอร์ AlloyDB สำหรับข้อมูลผลิตภัณฑ์หลัก
- กำหนดค่า MongoDB Atlas บน Google Cloud เพื่อจัดเก็บรายละเอียดสินค้าแบบกึ่งมีโครงสร้าง
- สร้างที่เก็บข้อมูล Cloud Storage เพื่อแสดงรูปภาพสินค้า
- ติดตั้งใช้งาน MCP Toolbox สำหรับฐานข้อมูลใน Cloud Run เพื่อให้เข้าถึงข้อมูลได้อย่างสม่ำเสมอ
- เรียกใช้กระบวนการ ETL เพื่อพุชข้อมูลไปยัง BigQuery เพื่อการวิเคราะห์
- สนทนากับ AI Agent ด้วยภาษาธรรมชาติ

ข้อกำหนดเบื้องต้น
- เว็บเบราว์เซอร์ เช่น Chrome
- โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
- บัญชี MongoDB Atlas บน Google Cloud ฟรี
2. ก่อนเริ่มต้น
สร้างโปรเจ็กต์ Google Cloud
- ในคอนโซล Google Cloud ในหน้าตัวเลือกโปรเจ็กต์ ให้เลือกหรือสร้างโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google Cloud
- ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์แล้ว ดูวิธีตรวจสอบว่ามีการเปิดใช้การเรียกเก็บเงินในโปรเจ็กต์หรือไม่
เริ่มต้น Cloud Shell
Cloud Shell เป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud ซึ่งมาพร้อมกับเครื่องมือที่จำเป็นที่โหลดไว้ล่วงหน้า
- คลิกเปิดใช้งาน Cloud Shell ที่ด้านบนของคอนโซล Google Cloud
- เมื่อเชื่อมต่อกับ Cloud Shell แล้ว ให้ยืนยันการตรวจสอบสิทธิ์โดยทำดังนี้
gcloud auth list - ยืนยันว่าได้กำหนดค่าโปรเจ็กต์แล้ว โดยทำดังนี้
gcloud config get project - หากโปรเจ็กต์ไม่ได้ตั้งค่าตามที่คาดไว้ ให้ตั้งค่าโดยทำดังนี้
export PROJECT_ID=<YOUR_PROJECT_ID> gcloud config set project $PROJECT_ID
ตั้งค่าตัวแปร
ใน Cloud Shell ให้ตั้งค่าตัวแปรสภาพแวดล้อมสำหรับรหัสโปรเจ็กต์และหมายเลขโปรเจ็กต์ ดังนี้
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
เปิดใช้ API ที่จำเป็น
เรียกใช้คำสั่งนี้เพื่อเปิดใช้ API ที่จำเป็นทั้งหมด
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
Cloud Storage ทำหน้าที่เป็นพื้นที่เก็บข้อมูลขนาดใหญ่สำหรับชิ้นงานสื่อที่ไม่มีโครงสร้าง เช่น รูปภาพผลิตภัณฑ์
- ในคอนโซล Google Cloud ให้ไปที่ Cloud Storage แล้วคลิกสร้างที่เก็บข้อมูล
- ตั้งชื่อที่ไม่ซ้ำกันทั่วโลกให้กับที่เก็บข้อมูล เช่น
-ecommerce-images - คลิกสร้าง
- หากต้องการอนุญาตให้แอปพลิเคชันเดโมเข้าถึงรูปภาพโดยไม่ต้องตรวจสอบสิทธิ์ ให้ล้างตัวเลือกบังคับใช้การป้องกันการเข้าถึงแบบสาธารณะในที่เก็บข้อมูลนี้ แล้วคลิกยืนยัน
- ไปที่แท็บสิทธิ์
- ในส่วนสิทธิ์ ให้คลิกให้สิทธิ์เข้าถึง
- ในส่วนผู้ใช้หลักรายใหม่ ให้ป้อน
allUsers - ในส่วนเลือกบทบาท ให้เลือก Cloud Storage > Storage Object Viewer
- คลิกบันทึก แล้วคลิกอนุญาตการเข้าถึงแบบสาธารณะเพื่อยืนยันว่าคุณกำลังทำให้ทรัพยากรเป็นแบบสาธารณะ
- ใน Cloud Shell ให้บันทึกชื่อที่เก็บข้อมูลในตัวแปร โดยทำดังนี้
แทนที่export BUCKET=<your-bucket-name>ด้วยชื่อที่เก็บข้อมูลที่คุณสร้าง
อัปโหลดรูปภาพตัวยึดตำแหน่ง
โปรเจ็กต์ใช้รูปภาพตัวยึดตำแหน่งเพื่อให้ได้ประสบการณ์การรับชมที่ดีที่สุด
- โคลนที่เก็บใน Cloud Shell โดยทำดังนี้
git clone https://github.com/AbiramiSukumaran/polyglot-persist-ecommerce.git - ไปที่โฟลเดอร์
UploadImagesดังนี้cd polyglot-persist-ecommerce/UploadImages - อัปโหลดรูปภาพตัวอย่างไปยังที่เก็บข้อมูลโดยทำดังนี้
gcloud storage cp *.jpg gs://$BUCKET/
4. ตั้งค่า AlloyDB
AlloyDB ทำหน้าที่เป็นแหล่งข้อมูลที่เชื่อถือได้เพียงแหล่งเดียว (SSOT) สำหรับข้อมูลที่มีโครงสร้าง ข้อมูลธุรกรรม และข้อมูลสำคัญ เช่น รหัสสินค้า ชื่อ SKU ราคา และสินค้าคงคลัง นอกจากนี้ AlloyDB ยังขับเคลื่อน AI Agent ด้วยความสามารถในการค้นหาความคล้ายคลึงกันสำหรับคำแนะนำและการค้นหาด้วยภาษาธรรมชาติ
จัดสรรคลัสเตอร์ AlloyDB
- ในคอนโซล Google Cloud ให้ไปที่ AlloyDB for PostgreSQL
- คลิกสร้างคลัสเตอร์
- ในส่วนรหัสคลัสเตอร์ ให้ป้อน
ecommerce-cluster - ตั้งรหัสผ่านที่รัดกุมสำหรับผู้ใช้
postgresคุณใช้alloydbเพื่อวัตถุประสงค์ในการเรียนรู้ได้ - สำหรับเวอร์ชันฐานข้อมูล ให้ใช้ค่าเริ่มต้น
- ในส่วนภูมิภาค ให้เลือก
us-central1(หรือภูมิภาคที่ต้องการ)
กำหนดค่าอินสแตนซ์หลัก
- ในส่วน Instance ID ให้ป้อน
ecommerce-cluster-primary - ในความพร้อมใช้งานของโซน ให้เลือกโซนเดียว
- ในส่วนชุดเครื่อง ให้เลือก
N2และในส่วนประเภทเครื่อง ให้เลือก4 vCPU, 32 GB - ในการเชื่อมต่อ IP ส่วนตัว ให้เลือกการเข้าถึงบริการแบบส่วนตัว (PSA) แล้วเลือกเครือข่าย
defaultหากยังไม่ได้ตั้งค่าเครือข่ายเริ่มต้น ให้คลิกยืนยันการตั้งค่าเครือข่ายเพื่อสร้างเครือข่าย - ในการเชื่อมต่อ IP สาธารณะ ให้เลือกช่องทำเครื่องหมายเปิดใช้ IP สาธารณะเพื่อให้กล่องเครื่องมือ MCP เชื่อมต่อได้อย่างถูกต้องใน Codelab นี้ คอนโซลจะเปิดใช้แฟล็ก
password.enforce_complexityโดยอัตโนมัติ ซึ่ง AlloyDB ต้องใช้สำหรับ IP สาธารณะ - ในเครือข่ายภายนอกที่ได้รับอนุญาต ให้ป้อน
0.0.0.0/0เลือกช่องทำเครื่องหมายฉันรับทราบความเสี่ยง แล้วคลิกบันทึก - คลิกสร้างคลัสเตอร์
เริ่มต้นฐานข้อมูล
- คลิก AlloyDB Studio จากเมนูการนำทางด้านซ้าย
- ในเมนูแบบเลื่อนลงฐานข้อมูล ให้เลือก
postgres - เลือกการตรวจสอบสิทธิ์ในตัวเพื่อลงชื่อเข้าใช้ฐานข้อมูล
- ในส่วนชื่อผู้ใช้ ให้ใช้ผู้ใช้
postgres - ในส่วน Password ให้ป้อนรหัสผ่านที่คุณตั้งไว้ก่อนหน้านี้
- คลิกตรวจสอบสิทธิ์
- ในมุมมองเครื่องมือแก้ไข ให้เปิดแท็บการค้นหาใหม่ที่ไม่มีชื่อ
- คัดลอก DDL ต่อไปนี้แล้วคลิกเรียกใช้
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 ให้ไปที่โฟลเดอร์รูทของโปรเจ็กต์โดยทำดังนี้
cd ~/polyglot-persist-ecommerce - เปิดไฟล์
alloydb_insert_queries.sqlใน Cloud Shell แล้วคัดลอกคำค้นหาการแทรกcat alloydb_insert_queries.sql - ในแท็บการค้นหาใหม่ที่ไม่มีชื่อ ให้วางเฉพาะคำสั่ง
INSERTแล้วคลิกเรียกใช้ - ในแท็บการค้นหาใหม่ที่ไม่มีชื่อ ให้คัดลอก DDL ต่อไปนี้ แล้วคลิกเรียกใช้เพื่อสร้างดัชนีในตาราง
products_core_tableCREATE INDEX idx_products_core_sku ON products_core_table(sku);
สร้างการฝังรูปภาพสำหรับ AI Agent เพื่อดึงข้อมูลผลิตภัณฑ์ที่คล้ายกัน
การผสานรวม AI Agent ใช้การฝังรูปภาพเพื่อดึงข้อมูลผลิตภัณฑ์ที่คล้ายกัน ระบบจะสร้างการฝังโดยใช้โมเดล multimodalembedding@001 และจัดเก็บไว้ในฐานข้อมูล AlloyDB การฝังเป็นเวกเตอร์ 1408 มิติและจัดเก็บไว้ในคอลัมน์ img_embeddings
ก่อนที่จะสร้างการฝังได้ เราต้องให้บทบาทที่จำเป็นแก่บัญชีบริการ AlloyDB เพื่อเข้าถึง Cloud Storage
มอบบทบาทให้กับบัญชีบริการ AlloyDB เพื่อเข้าถึง Cloud Storage
มอบบทบาทที่จำเป็นแก่บัญชีบริการ AlloyDB เพื่ออ่านรูปภาพจาก Cloud Storage และสร้างการฝัง Vertex AI ดังนี้
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
เปิดใช้ส่วนขยาย
ในการสร้างแอปนี้ เราจะใช้ส่วนขยาย pgvector และ google_ml_integration ส่วนขยาย pgvector ช่วยให้คุณจัดเก็บและค้นหาการฝังเวกเตอร์ได้ ส่วนขยาย google_ml_integration มีฟังก์ชันที่คุณใช้เพื่อเข้าถึงปลายทางการคาดการณ์ของ Vertex AI เพื่อรับการคาดการณ์ใน SQL เปิดใช้ส่วนขยายเหล่านี้โดยเรียกใช้ DDL ต่อไปนี้
- ในคอนโซล Google Cloud ให้ไปที่ AlloyDB for PostgreSQL
- คลิก AlloyDB Studio จากเมนูการนำทางด้านซ้าย
- ในมุมมองเครื่องมือแก้ไข ให้เปิดแท็บการค้นหาใหม่ที่ไม่มีชื่อ
- คัดลอก DDL ต่อไปนี้แล้วคลิกเรียกใช้
CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS google_ml_integration;
เริ่มต้นฐานข้อมูลด้วยการฝัง
- เพิ่มคอลัมน์ img_embeddings ลงใน
products_core_tableALTER TABLE products_core_table ADD COLUMN img_embeddings vector(1408); - พิมพ์การค้นหาการฝังโดยกรอกชื่อที่เก็บข้อมูลของคุณ
cd ~/polyglot-persist-ecommerce sed "s/<STORAGE_BUCKET_NAME>/$BUCKET/g" alloydb_generate_embeddings.sql - คัดลอกเอาต์พุต วางลงในแท็บการค้นหา AlloyDB Studio ใหม่ แล้วคลิกเรียกใช้ การดำเนินการนี้จะใช้เวลาประมาณ 1 นาที หากหมดเวลา ให้เรียกใช้สคริปต์อีกครั้ง ระบบจะข้ามผลิตภัณฑ์ที่มีการฝังอยู่แล้ว
5. ตั้งค่า MongoDB Atlas บน Google Cloud
MongoDB จัดเก็บรายละเอียดสินค้าแบบกึ่งมีโครงสร้างที่สมบูรณ์และข้อมูลเชิงพฤติกรรมของผู้ใช้ที่ยืดหยุ่น (เช่น การคลิกและการดู)
สร้างคลัสเตอร์ MongoDB
- ลงชื่อเข้าใช้ MongoDB Atlas (สร้างบัญชีฟรีหากจำเป็น)
- ในส่วนติดตั้งใช้งานคลัสเตอร์ ให้เลือกฟรี (Atlas จะเลือกแพ็กเกจแบบชำระเงินไว้ล่วงหน้า โปรดตรวจสอบว่าได้เลือก "ฟรี" แล้ว)
- ในส่วน Provider ให้เลือก Google Cloud และในส่วน Region ให้เลือก Iowa (us-central1)
- ในส่วน Name ให้ป้อน
ecommerce-clusterและล้าง Preload sample dataset - คลิกสร้างการติดตั้งใช้งาน
อนุญาตให้เข้าถึงและสร้างผู้ใช้ฐานข้อมูล
Atlas จะเปิดกล่องโต้ตอบเชื่อมต่อกับคลัสเตอร์อีคอมเมิร์ซ
- คลิกเพิ่มที่อยู่ IP อื่น ป้อน
0.0.0.0/0แล้วเพิ่ม - ป้อน
store-userสำหรับชื่อผู้ใช้ และstoreuserสำหรับรหัสผ่าน แล้วคลิกสร้างผู้ใช้ฐานข้อมูล - คลิกเลือกวิธีการเชื่อมต่อ แล้วคลิกไดรเวอร์และไลบรารีของไคลเอ็นต์
- ในส่วนใช้สตริงการเชื่อมต่อนี้ในแอปพลิเคชัน ให้คัดลอกสตริงการเชื่อมต่อ ดูเหมือนว่าจะเป็น
mongodb+srv://store-user:แทนที่@ecommerce-cluster.xxxxx.mongodb.net/ ด้วยstoreuserแล้วบันทึกสตริง คุณจะใช้สตริงนี้ในtools.yaml
สร้างฐานข้อมูลและคอลเล็กชัน
- ในการนำทางด้านซ้าย ให้คลิก Data Explorer แล้วคลิกสร้างฐานข้อมูล แล้วป้อนรายละเอียดต่อไปนี้
- ชื่อฐานข้อมูล:
ecommerce_db - ชื่อคอลเล็กชัน:
product_details_collection
- ชื่อฐานข้อมูล:
- คลิก Create Database
- ใน Data Explorer ให้เลือกชื่อคอลเล็กชัน
- คลิกไอคอนเพิ่มข้อมูล (+) แล้วคลิกแทรกเอกสาร
- คัดลอกเนื้อหา JSON จาก product_details_export.json แล้ววางลงในกล่องโต้ตอบเครื่องมือแก้ไขแทรกเอกสาร
- Atlas จะแสดงแบนเนอร์ที่เสนอให้แปลงข้อความเป็นไวยากรณ์ Shell คลิกแปลง แล้วคลิกแทรก ยืนยันว่าเพิ่มเอกสาร 192 รายการแล้ว
- ใน Data Explorer ให้คลิกสร้างคอลเล็กชัน (+) ข้างฐานข้อมูล
ecommerce_db - ป้อน
user_interactions_collectionเป็นชื่อคอลเล็กชัน แล้วคลิกสร้างคอลเล็กชัน - ใน Data Explorer ให้เลือกคอลเล็กชัน
user_interactions_collection - คลิกไอคอนเพิ่มข้อมูล (+) แล้วคลิกแทรกเอกสาร
- คัดลอกเนื้อหา JSON จาก user_interactions_export.json แล้ววางลงในกล่องโต้ตอบเครื่องมือแก้ไขแทรกเอกสาร
- Atlas จะแสดงแบนเนอร์ที่เสนอให้แปลงข้อความเป็นไวยากรณ์ Shell คลิกแปลง แล้วคลิกแทรก ยืนยันว่าเพิ่มเอกสาร 211 รายการแล้ว
6. ตั้งค่า BigQuery
BigQuery จะรวบรวมและวิเคราะห์พฤติกรรมที่ผ่านมาของผู้ใช้เพื่อสร้างการรายงานและวิดีโอแนะนำอัจฉริยะ
สร้างชุดข้อมูล
- ในคอนโซล Google Cloud ให้ไปที่ BigQuery
- ข้างรหัสโปรเจ็กต์ในแผง Explorer ให้คลิกเมนู 3 จุด แล้วเลือกสร้างชุดข้อมูล
- ป้อน
ecommerce_analyticsสำหรับรหัสชุดข้อมูล - เลือก
US (multiple regions)ในส่วนตำแหน่งข้อมูล (การกำหนดค่าtools.yamlคาดหวังตำแหน่งUS) - คลิกสร้างชุดข้อมูล
สร้างตาราง Analytics
- เปิดการค้นหาใหม่ในพื้นที่ทำงาน BigQuery
- เรียกใช้คำสั่ง SQL ต่อไปนี้เพื่อสร้างตารางสรุปที่ลิงก์ผู้ใช้กับการโต้ตอบกับผลิตภัณฑ์
CREATE TABLE ecommerce_analytics.user_product_interactions (
user_id STRING DEFAULT 'any user',
product_id STRING,
interaction_score INT
);
ให้สิทธิ์บทบาทแก่บัญชีบริการ Compute
มอบบทบาทที่ MCP Toolbox และแอปต้องการให้แก่บัญชีบริการ Compute เริ่มต้น ดังนี้
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
หรือในคอนโซล ให้ไปที่ IAM และผู้ดูแลระบบ > IAM คลิกให้สิทธิ์เข้าถึง ป้อนบัญชีบริการ แล้วเพิ่มบทบาทเดียวกัน
7. ทำความเข้าใจแอปพลิเคชันตั้งแต่ต้นจนจบ
เราจะสร้างแอปพลิเคชันอีคอมเมิร์ซที่ใช้ฐานข้อมูลและบริการหลายรายการเพื่อดูว่าแต่ละคอมโพเนนต์ทำงานร่วมกันอย่างไร แอปพลิเคชันนี้สร้างขึ้นด้วยแบ็กเอนด์ Python (Flask) และผสานรวมบริการและฐานข้อมูล Google Cloud หลายรายการ
ทำความเข้าใจโครงสร้างไดเรกทอรี
ในส่วนถัดไป คุณจะโคลนที่เก็บ polyglot-persist-ecommerce และใช้เพื่อเรียกใช้แอปพลิเคชันในเครื่อง เมื่อทดสอบแอปพลิเคชันในเครื่องแล้ว เราจะติดตั้งใช้งานทั้ง MCP Toolbox และแอปพลิเคชันไปยัง Cloud Run
สำรวจไฟล์ที่ดาวน์โหลดในไดเรกทอรีนี้ ไดเรกทอรีระดับสูงต่อไปนี้จะปรากฏขึ้น
UploadImages: จัดเก็บชิ้นงานรูปภาพ ซึ่งส่วนใหญ่ใช้สำหรับเอกสารประกอบหรือเนื้อหาภาพสำหรับแคตตาล็อกสินค้าอีคอมเมิร์ซstatic: จัดเก็บเนื้อหาเว็บแบบคงที่ของแอปพลิเคชัน เช่น ไฟล์ CSS และ JavaScript ที่ใช้ในการจัดรูปแบบและเพิ่มความสามารถในการโต้ตอบให้กับอินเทอร์เฟซผู้ใช้ ( แหล่งที่มา)templates: จัดเก็บเทมเพลต HTML (น่าจะเป็น Jinja2 สำหรับ Flask) ที่แอปพลิเคชัน Python ใช้เพื่อแสดงผลหน้าเว็บแบบไดนามิกสำหรับแคตตาล็อกอีคอมเมิร์ซ ( แหล่งที่มา)
ไฟล์ในที่เก็บนี้จะทำงานร่วมกันเพื่อสร้าง กำหนดค่า และทำให้แอปพลิเคชันอีคอมเมิร์ซแบบหลายฐานข้อมูลใช้งานได้ ไฟล์ส่วนกลางอย่าง app.py จะจัดระเบียบแบ็กเอนด์โดยผสานรวมแหล่งข้อมูลที่หลากหลายซึ่งกำหนดไว้ในไฟล์ SQL และ JSON ส่วนไฟล์การกำหนดค่าจะช่วยให้การติดตั้งใช้งานในสภาพแวดล้อมระบบคลาวด์เป็นไปอย่างราบรื่น
app.py: จัดระเบียบแบ็กเอนด์ Flask และการผสานรวมหลายฐานข้อมูลagentengine.py: ตรรกะหลักสำหรับการเริ่มต้นและกำหนดค่า Vertex AI Agent.env: จัดเก็บข้อมูลลับสำหรับการเชื่อมต่อฐานข้อมูลและพื้นที่เก็บข้อมูลtools.yaml: กำหนดค่า MCP Toolbox สำหรับการดำเนินการฐานข้อมูล multidbDockerfile: กำหนดอิมเมจคอนเทนเนอร์และการตั้งค่าสภาพแวดล้อมrequirements.txt: แสดงรายการไลบรารี Python ที่จำเป็นสำหรับรันไทม์ของแอปพลิเคชันtools.yaml: การกำหนดค่าสำหรับกล่องเครื่องมือ MCPProcfile: ระบุคำสั่งการดำเนินการเวอร์ชันที่ใช้งานจริงสำหรับการทำให้ใช้งานได้alloydb_insert_queries.sql: มีการค้นหา SQL สำหรับข้อมูลเชิงสัมพันธ์product_details_export.jsonและuser_interactions_export.json: ให้ข้อมูล JSON ตัวอย่างสำหรับฐานข้อมูล NoSQLREADME.md: แนะนำการตั้งค่า การติดตั้งใช้งาน และความเข้าใจเกี่ยวกับโปรเจ็กต์
ขั้นตอนการสมัครแบบครบวงจร
- การตั้งค่า AlloyDB: จัดสรรคลัสเตอร์ประสิทธิภาพสูงและใช้สคริปต์ SQL ที่ให้มาเพื่อสร้าง products_core_table ที่มีคอลัมน์เวกเตอร์สำหรับการฝังรูปภาพ
- การตั้งค่า MongoDB Atlas: ติดตั้งใช้งานคลัสเตอร์ใน Google Cloud เพื่อจัดเก็บคุณสมบัติของสินค้าที่เปลี่ยนแปลงได้ใน product_details และบันทึก Clickstream แบบเรียลไทม์ใน user_interactions
- BigQuery Analytics: สร้างชุดข้อมูลเพื่อรวบรวมบันทึกการโต้ตอบ ซึ่งช่วยให้สามารถทำการค้นหาเชิงวิเคราะห์ที่ซับซ้อนเพื่อระบุรายการที่มาแรง "5 อันดับแรก" จากเหตุการณ์หลายล้านรายการ
- ที่เก็บข้อมูล Cloud Storage: สร้างที่เก็บข้อมูลสาธารณะเพื่อจัดเก็บรูปภาพผลิตภัณฑ์ความละเอียดสูง โดยตรวจสอบว่าแต่ละชิ้นงานเข้าถึงได้โดยใช้ URL ที่ลงชื่อหรือ URL สาธารณะสำหรับฟรอนท์เอนด์
- การทำให้ใช้งานได้ของ MCP Toolbox: ทำให้ใช้งานได้ Toolbox ใน Cloud Run โดยสร้างเป็นบริดจ์ RESTful ส่วนกลางที่แปลความตั้งใจของภาษาธรรมชาติเป็นการค้นหาหลายฐานข้อมูล
- การกำหนดค่า Tools.yaml: กำหนด "เครื่องมือ" เช่น get_product_core_data หรือ get_top_5_views โดยแมปการดำเนินการ SQL และ NoSQL ที่เฉพาะเจาะจงกับชื่อที่เข้าใจง่ายและ Agent อ่านได้
- ตรรกะแบ็กเอนด์ของ Flask: ใช้เส้นทาง app.py ที่เชื่อมต่อกับ MCP Toolbox เพื่อจัดการการประสานงานการดึงข้อมูลและทำหน้าที่เป็น API สำหรับ UI
- การจัดการหลาย Agent: กำหนดค่า Agent ของ ADK ภายในโค้ดเพื่อหาเหตุผลผ่านความตั้งใจของผู้ใช้ โดยเลือก "เครื่องมือ" ที่เหมาะสมเพื่อแก้คำค้นหาด้านการค้าปลีกที่ซับซ้อนและมาจากหลายแหล่งที่มา
- การผสานรวมฟรอนท์เอนด์: สร้างอินเทอร์เฟซ index.html ที่มีแคตตาล็อกสินค้าพร้อมฟีเจอร์บันทึกการโต้ตอบ แท็บ Analytics เพื่อทำความเข้าใจข้อมูลวิเคราะห์ประสิทธิภาพของสินค้า และ "แท็บ Agent" โดยเฉพาะที่ใช้แชท Multi-Agent ของ ADK เพื่อมอบประสบการณ์การช็อปปิ้งแบบสนทนาที่ราบรื่น
ตอนนี้เรามาติดตั้งใช้งานการจัดการและการทำให้ใช้งานได้กัน
8. ตั้งค่า MCP Toolbox และติดตั้งใช้งานใน Cloud Run
MCP Toolbox จะแยกแหล่งข้อมูลหลายแหล่งของเราออกจากกัน เพื่อให้แอปพลิเคชันดึงข้อมูลและเขียนข้อมูลได้อย่างสม่ำเสมอ
ติดตั้ง MCP Toolbox ในเครื่อง
ดาวน์โหลดไบนารี MCP Toolbox ลงในไดเรกทอรีหลักและทำให้เรียกใช้ได้ โดยทำดังนี้
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
คุณต้องกำหนดนามธรรมสำหรับ AlloyDB, MongoDB และ BigQuery ไฟล์ tools.yaml จะบอก MCP Toolbox ว่าจะโต้ตอบกันอย่างไร
- ที่เก็บมี
tools.yamlอยู่แล้ว เปิดแอปโดยทำดังนี้cd ~/polyglot-persist-ecommerce cloudshell edit tools.yaml - แทนที่ตัวยึดตำแหน่ง
*****ด้วยค่าของคุณ ดังนี้ฐานข้อมูล
ช่อง
ค่าตัวอย่าง
AlloyDB/BigQuery
projectYOUR_PROJECT_IDAlloyDB
regionus-central1AlloyDB
clusterecommerce-clusterAlloyDB
instanceecommerce-cluster-primaryAlloyDB
databasepostgresAlloyDB
passwordalloydbAlloyDB
ipTypepublic(เพิ่มบรรทัดนี้ใต้alloydb-sourceหากไม่มี)MongoDB
uriสตริงการเชื่อมต่อที่คุณบันทึกไว้ก่อนหน้านี้
- ชี้ตัวอย่างรูปภาพไปที่ที่เก็บข้อมูลของคุณโดยทำดังนี้
sed -i "s/ecommerce-app-images/$BUCKET/g" tools.yaml
ทดสอบ UI ของเครื่องมือ
- ในเทอร์มินัล Cloud Shell ให้เรียกใช้ Toolbox ในเครื่องเพื่อแสดง UI ดังนี้
~/toolbox --config tools.yaml --ui --enable-api - ใน Cloud Shell ให้คลิก Web Preview > Change port ป้อน
5000แล้วเพิ่ม/uiต่อท้าย URL ที่เปิดขึ้น
คุณจะเห็น UI ของ MCP Toolbox ต่อไปนี้

เมื่อเสร็จแล้ว ให้กด Ctrl+C เพื่อหยุดกล่องเครื่องมือในเครื่อง
ทำให้ใช้งานได้กับ Cloud Run
ติดตั้งใช้งาน MCP Toolbox ใน Cloud Run เพื่อให้พร้อมใช้งานเป็นบริการที่มีการจัดการและปลอดภัยซึ่งแอปพลิเคชันของเราสามารถใช้เพื่อค้นหาฐานข้อมูลได้ เราจะจัดเก็บการกำหนดค่าไว้ใน Secret Manager เพื่อปกป้องรายละเอียดการเชื่อมต่อที่ละเอียดอ่อน
- อัปโหลดการกำหนดค่า
tools.yamlไปยัง Google Secret Manager โดยทำดังนี้ หากคุณเปลี่ยนgcloud secrets create tools --data-file=tools.yamltools.yamlในภายหลัง ให้อัปโหลดเวอร์ชันใหม่ที่มีข้อมูลต่อไปนี้gcloud secrets versions add tools --data-file=tools.yaml - ติดตั้งใช้งานโดยใช้อิมเมจคอนเทนเนอร์ MCP Toolbox สาธารณะ
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จะเปิด REST API ที่เว็บแอปใช้ - บันทึก URL ของกล่องเครื่องมือ:
คุณสามารถเปิดexport TOOLBOX_URL=$(gcloud run services describe toolbox --region us-central1 --format='value(status.url)') echo $TOOLBOX_URL$TOOLBOX_URL/uiในเบราว์เซอร์เพื่อดูเครื่องมือได้
9. ตั้งค่าแอปพลิเคชันอีคอมเมิร์ซและทำให้ใช้งานได้กับ Cloud Run
เมื่อฐานข้อมูลทำงานและติดตั้งใช้งาน MCP Toolbox Abstraction แล้ว เราก็เรียกใช้เว็บแอปพลิเคชัน Flask ได้
แอปพลิเคชัน Flask จะประมวลผลข้อมูลโดยทำตามขั้นตอนต่อไปนี้เพื่อแสดงแคตตาล็อกสินค้า
- ดึงข้อมูลหลัก: ดึงข้อมูลรายการผลิตภัณฑ์ทั้งหมดจาก AlloyDB (
list_products_core) - ดึงรายละเอียดเพิ่มเติม: ดึงรายละเอียดสินค้าทั้งหมดจาก MongoDB (
list_all_product_details) - รวมรายการ: เชื่อมโยง 2 รายการเข้าด้วยกัน
- เพิ่มสื่อ: เพิ่ม URL รูปภาพใน Cloud Storage ลงในทุกรายการ
สร้าง Agent Engine
- ติดตั้งการอ้างอิง:
หมายเหตุ: ขั้นตอนนี้อาจใช้เวลาหลายนาทีในการแก้ไขและติดตั้งแพ็กเกจcd ~/polyglot-persist-ecommerce pip install -r requirements.txt - เริ่มต้นและลงทะเบียน AI Agent โดยใช้ Vertex AI Reasoning Engine ดังนี้
เอาต์พุตจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้export REASONING_ENGINE_LOCATION=us-central1 export APP_NAME=$(python agentengine.py) echo $APP_NAMEprojects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856
แอปจะอ่านการตั้งค่าจากตัวแปรสภาพแวดล้อม ซึ่งคุณส่งในคำสั่ง deploy ด้านล่าง คุณจึงไม่จำเป็นต้องแก้ไข .env
ติดตั้งใช้งานฟรอนท์เอนด์ใน Cloud Run
- ทำให้เว็บแอปพลิเคชันใช้งานได้ใน Cloud Run เพื่อให้สถาปัตยกรรมสมบูรณ์
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"
แอปพลิเคชันของคุณพร้อมใช้งานแล้ว เปิด URL ของบริการที่ Cloud Run ให้ไว้เพื่อดูแคตตาล็อกอีคอมเมิร์ซ Multidb URL จะคล้ายกับ https://polyglot-*********-uc.a.run.app/
10. สำรวจแอปพลิเคชัน
- คลิกแคตตาล็อกสินค้าเพื่อดูสินค้าทั้งหมด

- คลิกไอคอนผลิตภัณฑ์เพื่อดูรายละเอียดสินค้า คุณจะสังเกตเห็นว่ารูปภาพมาจาก Cloud Storage, รายละเอียดสินค้าดึงมาจาก MongoDB และสินค้าคงคลังดึงมาจาก AlloyDB

- โต้ตอบกับแคตตาล็อกสินค้าเพื่อสร้างมุมมองจำลองและการเขียนที่ส่งไปยัง MongoDB
- คลิก ETL และ Analytics เพื่อดูข้อมูลวิเคราะห์ผลิตภัณฑ์ คุณจะเห็นว่าระบบดึงข้อมูลวิเคราะห์ผลิตภัณฑ์มาจาก BigQuery

- คลิกแท็บ AI Agent เพื่อโต้ตอบกับ AI Agent ถามคำถามด้วยภาษาธรรมชาติ เช่น
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.
คุณจะเห็นว่าการค้นหาแสดงผลลัพธ์ตรงตามที่เราขอ นั่นคือเป้สะพายหลังที่ไม่มีส่วนประกอบของหนัง มีสินค้าพร้อมจำหน่าย และไม่มีการร้องเรียนเกี่ยวกับความทนทานของสายสะพายในรีวิว

11. ล้างข้อมูล
โปรดลบทรัพยากรที่สร้างขึ้นระหว่างทำ Codelab นี้เพื่อหลีกเลี่ยงการเรียกเก็บเงินอย่างต่อเนื่องในบัญชี Google Cloud
เรียกใช้คำสั่ง Cloud Shell ต่อไปนี้
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
ลบอินสแตนซ์ Agent Engine (ไม่บังคับ) โดยทำดังนี้
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://us-central1-aiplatform.googleapis.com/v1/$APP_NAME?force=true"
หรือในคอนโซล Google Cloud ให้ไปที่ Vertex AI > Agent Engine แล้วลบอินสแตนซ์
หากต้องการลบโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google ทั้งโปรเจ็กต์และทรัพยากรทั้งหมด ให้เรียกใช้คำสั่งต่อไปนี้ (ไม่บังคับ)
gcloud projects delete $PROJECT_ID
12. ขอแสดงความยินดี
ยินดีด้วย คุณสร้างสถาปัตยกรรม Multidb แบบข้ามระบบคลาวด์เรียบร้อยแล้ว
คุณได้แสดงให้เห็นว่า MCP Toolbox ทำหน้าที่เป็นตัวเชื่อมทางสถาปัตยกรรมสำหรับแอปพลิเคชันสมัยใหม่ที่เฉพาะทางได้อย่างไร การจับคู่ฐานข้อมูลที่เหมาะสมกับงานที่เหมาะสมจะช่วยให้คุณบรรลุเป้าหมายต่อไปนี้
- การเขียนข้อมูลที่ยืดหยุ่น: MongoDB สำหรับบันทึกเหตุการณ์
- ความสอดคล้องของธุรกรรม: AlloyDB เพื่อความสมบูรณ์ของข้อมูลหลัก
- การวิเคราะห์ประสิทธิภาพสูง: BigQuery สำหรับระบบธุรกิจอัจฉริยะ
- การพัฒนาแบบรวมศูนย์: แบ็กเอนด์ Python เดียวที่แยกความซับซ้อนทั้งหมดโดยใช้ MCP Toolbox
เอกสารอ้างอิง
ดูข้อมูลเพิ่มเติมเกี่ยวกับผลิตภัณฑ์ Google Cloud ที่เกี่ยวข้องและสำรวจ Codelab ต่อไปนี้
- AlloyDB AI: เริ่มต้นใช้การฝังเวกเตอร์ด้วย AlloyDB AI
- AlloyDB AI: การฝังแบบหลายรูปแบบใน AlloyDB
- MCP Toolbox: การติดตั้งและตั้งค่า MCP Toolbox สำหรับฐานข้อมูลใน AlloyDB
ดูข้อมูลเพิ่มเติมเกี่ยวกับผลิตภัณฑ์ที่ใช้ใน Codelab นี้ได้ที่