Xây dựng danh mục thương mại điện tử thông minh với khả năng duy trì nhiều cơ sở dữ liệu

1. Giới thiệu

Trong ngành bán lẻ hiện đại, dữ liệu của bạn là một hệ sinh thái đa dạng và rộng lớn. Bạn có dữ liệu giao dịch (giá và khoảng không quảng cáo) cực kỳ đáng tin cậy, danh mục đa hình "lộn xộn" (thông số kỹ thuật của thiết bị điện tử so với kích thước quần áo) và hàng petabyte nhật ký hành vi. Việc buộc những thành phần này vào một khối duy nhất không chỉ tạo ra nợ kỹ thuật mà còn làm giảm trải nghiệm người dùng.

Trong lớp học lập trình này, bạn sẽ thiết kế một Polyglot Powerhouse (Nền tảng đa ngôn ngữ) có thể kết hợp hài hoà:

  • AlloyDB: Nền tảng giao dịch của bạn để đảm bảo tính nhất quán và tính năng nhúng hình ảnh ở tốc độ cao.
  • MongoDB Atlas trên Google Cloud: Lớp danh mục linh hoạt, không phụ thuộc vào lược đồ.
  • Cloud Storage: Bộ não phân tích của bạn để dự đoán xu hướng theo thời gian thực.
  • BigQuery: Kho dữ liệu kỹ thuật số có độ phân giải cao.

"Bí quyết" là gì? Bạn sẽ sử dụng Bộ công cụ MCP cho cơ sở dữ liệu để điều phối và hợp nhất một cách thông minh các nguồn dữ liệu đang chạy trên Cloud Run dưới dạng một cầu nối ngữ nghĩa, sau đó triển khai một ứng dụng trò chuyện đa tác nhân bằng Bộ công cụ phát triển tác nhân (ADK). Bạn không chỉ xây dựng một thanh tìm kiếm mà còn xây dựng một bộ não bán lẻ thông minh, có khả năng hiểu được bối cảnh, tuân thủ các ràng buộc và thu hẹp khoảng cách giữa dữ liệu thô và ý định của con người.

Truy vấn không thể thực hiện của người dùng

Các tác nhân thương mại điện tử tiêu chuẩn không thể thực hiện suy luận đa chiều (kết hợp các ràng buộc tiêu cực, sự tương đồng về hình ảnh và kho hàng theo thời gian thực). Ví dụ: Tôi thường muốn nói chuyện với một trang web bán lẻ như sau:

"Chào bạn, tôi đang lên kế hoạch cho một chuyến đi chụp ảnh ở nơi có độ cao lớn. Hãy cho tôi xem một số ba lô chống chịu thời tiết có kiểu dáng tương tự như "AeroGlow Pro" nhưng không có thành phần nào bằng da. Ngoài ra, hãy cho tôi biết liệu sản phẩm đó có còn hàng hay không và liệu các nhiếp ảnh gia khác có phàn nàn về độ bền của dây đeo trong phần đánh giá hay không."

Lý do cụm từ tìm kiếm này là "Cụm từ tìm kiếm khiến nhân viên hỗ trợ không thể giúp bạn":

  • Mức độ tương đồng về hình ảnh (AlloyDB + Vector Search): "Tương tự về phong cách với AeroGlow Pro" yêu cầu so sánh việc nhúng hình ảnh.
  • Ràng buộc phủ định (MongoDB): "Không có da" yêu cầu lọc thông qua các thuộc tính linh hoạt, lồng nhau mà thường không có trong giản đồ SQL tiêu chuẩn.
  • Kho hàng theo thời gian thực (AlloyDB): "Còn hàng" yêu cầu kiểm tra giao dịch trực tiếp (không phải chỉ mục tìm kiếm cũ).
  • Tổng hợp ngữ nghĩa (BigQuery + Nhiều tác nhân): Để phân tích các bài đánh giá về "độ bền của dây đeo", tác nhân cần tóm tắt ý kiến phản hồi không có cấu trúc từ BigQuery ngay lập tức.

Hầu hết các bot bán lẻ chỉ thấy "Ba lô" và "Da" rồi hiển thị 10 chiếc ba lô da. Làm cách nào để ngăn chặn điều đó?

Vì chúng tôi không chỉ khớp từ khoá. Chúng tôi đang sử dụng MCP Toolbox để cho phép các nhân viên hỗ trợ "lý luận" trên tất cả các nguồn này, thông tin giao dịch đáng tin cậy trong AlloyDB và các thuộc tính linh hoạt trong MongoDB cùng một lúc. Hãy cùng xây dựng.

Bạn sẽ thực hiện

Kiến trúc nhiều cơ sở dữ liệu thương mại điện tử

Điều kiện tiên quyết

2. Trước khi bắt đầu

Tạo một dự án trên Google Cloud

  1. Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
  2. Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên Cloud. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trên một dự án hay không.

Khởi động Cloud Shell

Cloud Shell là một môi trường dòng lệnh chạy trong Google Cloud và được tải sẵn các công cụ cần thiết.

  1. Nhấp vào Kích hoạt Cloud Shell ở đầu bảng điều khiển Cloud.
  2. Sau khi kết nối với Cloud Shell, hãy xác minh thông tin xác thực của bạn:
    gcloud auth list
    
  3. Xác nhận rằng dự án của bạn đã được định cấu hình:
    gcloud config get project
    
  4. Nếu dự án của bạn không được thiết lập như mong đợi, hãy thiết lập dự án:
    export PROJECT_ID=<YOUR_PROJECT_ID>
    gcloud config set project $PROJECT_ID
    

Bật các API bắt buộc

Chạy lệnh này để bật tất cả các API bắt buộc:

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. Thiết lập Cloud Storage

Cloud Storage đóng vai trò là một kho lưu trữ khổng lồ cho các tài sản đa phương tiện không có cấu trúc, chẳng hạn như hình ảnh sản phẩm.

  1. Trong Google Cloud Console, hãy chuyển đến Cloud Storage rồi nhấp vào Tạo vùng chứa.
  2. Đặt cho bộ chứa của bạn một tên duy nhất trên toàn cầu (ví dụ: ecommerce-app-images).
  3. Nhấp vào Tạo.
  4. Để cho phép ứng dụng minh hoạ truy cập vào hình ảnh mà không cần xác thực, hãy bỏ chọn mục Thực thi biện pháp ngăn chặn truy cập công khai trên nhóm này rồi nhấp vào Xác nhận.
  5. Chuyển đến thẻ Quyền.
  6. Trong mục Quyền, hãy nhấp vào Cấp quyền truy cập.
  7. Trong Bên giao đại diện mới, hãy nhập allUsers.
  8. Trong phần Chọn vai trò, hãy chọn Cloud Storage > Storage Object User.
  9. Nhấp vào Lưu, rồi nhấp vào Cho phép truy cập công khai để xác nhận rằng bạn đang công khai tài nguyên.

Tải hình ảnh giữ chỗ lên

BRK2-149-multidb-ecommerce sử dụng hình ảnh giữ chỗ để mang lại trải nghiệm hình ảnh tốt nhất.

  1. Trong Cloud Shell, hãy sao chép kho lưu trữ next-26-sessions:
    git clone https://github.com/GoogleCloudPlatform/next-26-sessions.git
    
  2. Chuyển đến thư mục UploadImages:
    cd next-26-sessions/BRK2-149-multidb-ecommerce/UploadImages
    
  3. Trong Google Cloud Console, hãy chuyển đến Cloud Storage rồi nhấp vào Buckets (Thùng).
  4. Nhấp vào tên của bộ chứa bạn vừa tạo.
  5. Nhấp vào Tải lên > Tải tệp lên, chọn hình ảnh mẫu đã tải xuống rồi nhấp vào Mở.

4. Thiết lập AlloyDB

AlloyDB đóng vai trò là nguồn tin cậy duy nhất cho dữ liệu có cấu trúc, giao dịch và dữ liệu quan trọng như mã nhận dạng sản phẩm, tên, SKU, giá và kho hàng. AlloyDB cũng hỗ trợ tác nhân AI bằng các tính năng tìm kiếm tương tự cho nội dung đề xuất và truy vấn bằng ngôn ngữ tự nhiên.

Cung cấp một Cụm AlloyDB

  1. Trong Google Cloud Console, hãy chuyển đến AlloyDB for PostgreSQL.
  2. Nhấp vào Tạo cụm.
  3. Đối với Mã nhóm, hãy nhập ecommerce-cluster.
  4. Đặt mật khẩu mạnh cho người dùng postgres. Để học tập, bạn có thể sử dụng alloydb.
  5. Đối với Phiên bản cơ sở dữ liệu, hãy giữ nguyên giá trị mặc định.
  6. Đối với Vùng, hãy chọn us-central1 (hoặc vùng bạn muốn).

Định cấu hình Thực thể chính

  1. Đối với Instance ID, hãy nhập ecommerce-cluster-primary.
  2. Trong mục Zonal Availability (Khả năng cung cấp theo vùng), hãy chọn Single zone (Một vùng).
  3. Đối với Loại máy, hãy chọn một loại máy nhỏ (ví dụ: N2, 4 vCPU, RAM 32 GB).
  4. Trong phần Kết nối IP riêng tư, hãy chọn Quyền truy cập dịch vụ riêng tư (PSA) rồi chọn mạng default.Nếu bạn chưa đặt mạng mặc định, hãy nhấp vào Xác nhận thiết lập mạng để tạo một mạng.
  5. Trong phần Kết nối IP công khai, hãy chọn hộp đánh dấu Bật IP công khai để hộp công cụ MCP kết nối đúng cách trong lớp học lập trình này.
  6. Trong phần Mạng bên ngoài được uỷ quyền, hãy nhập 0.0.0.0/0. Chọn hộp đánh dấu Tôi chấp nhận rủi ro rồi nhấp vào Lưu.
  7. Nhấp vào Tạo cụm.

Lưu ý: Hãy đảm bảo bạn ghi lại địa chỉ IP công khai của mình (địa chỉ này có dạng tương tự như 34.124.240.26).

Khởi chạy cơ sở dữ liệu

  1. Nhấp vào AlloyDB Studio trong trình đơn điều hướng bên trái.
  2. Trong trình đơn thả xuống Cơ sở dữ liệu, hãy chọn postgres.
  3. Chọn Xác thực tích hợp để đăng nhập vào cơ sở dữ liệu.
  4. Đối với Tên người dùng, hãy sử dụng người dùng postgres.
  5. Đối với Mật khẩu, hãy nhập mật khẩu mà bạn đã thiết lập trước đó.
  6. Nhấp vào Xác thực.
  7. Trong chế độ xem trình chỉnh sửa, hãy mở một thẻ truy vấn mới không có tiêu đề.
  8. Sao chép DDL sau đây rồi nhấp vào Run (Chạy):
    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
    );
    
  9. Trong Cloud Shell, hãy chuyển đến thư mục BRK2-149-multidb-ecommerce:
    cd next-26-sessions/BRK2-149-multidb-ecommerce
    
  10. Mở tệp alloydb_insert_queries.sql trong Cloud Shell rồi sao chép các truy vấn chèn.
    cat alloydb_insert_queries.sql
    
  11. Trong thẻ truy vấn mới không có tiêu đề, hãy chỉ dán các câu lệnh INSERT rồi nhấp vào Chạy.
  12. Trong thẻ truy vấn mới không có tiêu đề, hãy sao chép DDL sau đây rồi nhấp vào Run (Chạy) để tạo chỉ mục trên bảng products_core_table:
    CREATE INDEX idx_products_core_sku ON products_core_table(sku);
    

Tạo vectơ nhúng hình ảnh để tác nhân AI tìm nạp các sản phẩm tương tự

Việc tích hợp tác nhân AI sử dụng các thành phần nhúng hình ảnh để tìm nạp các sản phẩm tương tự. Các bản nhúng được tạo bằng mô hình multimodalembedding@001 và lưu trữ trong cơ sở dữ liệu AlloyDB. Các vectơ nhúng là vectơ 1408 chiều và được lưu trữ trong cột img_embeddings.

Trước khi có thể tạo các embeddings, chúng ta phải cấp các vai trò bắt buộc cho tài khoản dịch vụ AlloyDB để truy cập vào Cloud Storage.

Cấp vai trò cho tài khoản dịch vụ AlloyDB để truy cập vào Cloud Storage

Chúng tôi cấp vai trò Người dùng đối tượng lưu trữ và Người xem đối tượng lưu trữ cho tài khoản dịch vụ AlloyDB để cho phép tài khoản này đọc các đối tượng từ bộ chứa Cloud Storage.

  1. Chuyển đến phần IAM và quản trị.
  2. Nhấp vào Cấp quyền truy cập.
  3. Trong trường Bên giao đại lý mới, hãy nhập nội dung tìm kiếm cho tài khoản dịch vụ AlloyDB. Tài khoản dịch vụ có dạng như service-991742412753@gcp-sa-alloydb.iam.gserviceaccount.com.
  4. Nhấp vào Chọn vai trò.
  5. Tìm và chọn vai trò Storage Object User (Người dùng đối tượng lưu trữ).
  6. Nhấp vào Thêm một vai trò khác rồi chọn vai trò Storage Object Viewer (Người xem đối tượng lưu trữ).
  7. Nhấp vào Thêm một vai trò khác rồi chọn vai trò Người dùng Vertex AI.
  8. Nhấp vào Lưu.

Bật tiện ích

Để tạo ứng dụng này, chúng ta sẽ sử dụng các tiện ích pgvectorgoogle_ml_integration. Tiện ích pgvector cho phép bạn lưu trữ và tìm kiếm các vectơ nhúng. Tiện ích google_ml_integration cung cấp các hàm mà bạn dùng để truy cập vào các điểm cuối dự đoán của Vertex AI nhằm nhận được các dự đoán trong SQL. Bật các tiện ích này bằng cách chạy các DDL sau:

  1. Trong Google Cloud Console, hãy chuyển đến AlloyDB for PostgreSQL.
  2. Nhấp vào AlloyDB Studio trong trình đơn điều hướng bên trái.
  3. Trong chế độ xem trình chỉnh sửa, hãy mở một thẻ truy vấn mới không có tiêu đề.
  4. Sao chép DDL sau đây rồi nhấp vào Run (Chạy):
    CREATE EXTENSION IF NOT EXISTS vector;
    CREATE EXTENSION IF NOT EXISTS google_ml_integration;
    

Khởi động cơ sở dữ liệu bằng các mục nhúng

  1. Thêm cột img_embeddings vào products_core_table.
    ALTER TABLE products_core_table
    ADD COLUMN img_embeddings vector(1408);
    
  2. Tạo các mục nhúng cho hình ảnh và lưu trữ chúng trong cột img_embeddings.
    UPDATE products_core_table
    SET img_embeddings = google_ml.image_embedding(
        model_id => 'multimodalembedding@001',
        image => 'gs://<STORAGE_BUCKET_NAME>/' || sku || '.jpg',
        mimetype => 'image/jpeg')
    WHERE sku IN (
        SELECT
        sku
        FROM
        products_core_table
        WHERE
        img_embeddings IS NULL
        AND sku IS NOT NULL
        LIMIT 10
    );
    
    Thay thế bằng tên bộ chứa Cloud Storage.
  3. Lặp lại truy vấn trước đó ít nhất 5 lần để tạo các vectơ nhúng hình ảnh cho toàn bộ tập dữ liệu, vì Studio có giới hạn 5 phút. Nếu truy vấn này hết thời gian chờ, hãy thay đổi LIMIT thành 5 rồi chạy lại truy vấn 10 lần. Bước này có thể mất vài phút để hoàn tất.

5. Thiết lập MongoDB Atlas trên Google Cloud

MongoDB lưu trữ thông tin chi tiết về sản phẩm đa dạng, bán cấu trúc và dữ liệu linh hoạt về hành vi của người dùng (chẳng hạn như lượt nhấp và lượt xem).

Tạo cụm MongoDB

  1. Truy cập vào MongoDB Atlas trên Google Cloud, chọn một tài khoản cấp miễn phí.
  2. Chọn cấp cụm Miễn phí rồi nhập tên cho cụm, ví dụ: ecommerce-cluster.
  3. Chọn Google Cloud làm nhà cung cấp và đảm bảo khu vực này phù hợp với khu vực Google Cloud của bạn (ví dụ: us-central1).
  4. Nhấp vào Tạo bản triển khai.
  5. Nhấp vào Close (Đóng).

Định cấu hình quyền truy cập vào mạng

  1. Trong bảng điều khiển Atlas, hãy chuyển đến phần Database & Network Access (Quyền truy cập vào cơ sở dữ liệu và mạng).
  2. Nhấp vào Danh sách truy cập bằng địa chỉ IP.
  3. Nhấp vào Thêm địa chỉ IP.
  4. Thêm 0.0.0.0/0 để cho phép truy cập từ mọi nơi.
  5. Nhấp vào Xác nhận.

Tạo người dùng cơ sở dữ liệu

  1. Trong bảng điều khiển Atlas, hãy chuyển đến phần Database & Network Access (Quyền truy cập vào cơ sở dữ liệu và mạng).
  2. Nhấp vào Người dùng cơ sở dữ liệu.
  3. Nhấp vào Thêm người dùng cơ sở dữ liệu mới.
  4. Chọn Mật khẩu làm phương thức xác thực.
  5. Nhập tên người dùng là store-user và mật khẩu là storeuser.
  6. Nhấp vào Thêm vai trò tích hợp sẵn, chọn Đọc và ghi vào mọi cơ sở dữ liệu.
  7. Nhấp vào Thêm người dùng.

Nhận chuỗi kết nối

  1. Chuyển đến mục Cơ sở dữ liệu > Cụm > Kết nối.
  2. Trong phần Kết nối ứng dụng của bạn, hãy nhấp vào Trình điều khiển.
  3. Sao chép chuỗi kết nối xuất hiện trong phần Thêm chuỗi kết nối vào mã xử lý ứng dụng. Chuỗi này có dạng như sau:
    mongodb+srv://store-user:<db_password>@ecommerce-cluster.g8vaekh.mongodb.net/?appName=ecommerce-cluster
    
    Thay thế db_password bằng mật khẩu MongoDB của bạn. Trong lớp học lập trình này, đó là storeuser.

Lưu chuỗi kết nối này. Bạn sẽ sử dụng biến này sau cho biến môi trường MONGODB_CONNECTION_STRING.

Tạo cơ sở dữ liệu và bộ sưu tập

  1. Trong bảng điều khiển Atlas, hãy chuyển đến Database > Clusters > Browse Collections (Cơ sở dữ liệu > Cụm > Duyệt qua các bộ sưu tập).
  2. Nhấp vào Tạo cơ sở dữ liệu rồi nhập thông tin chi tiết:
    • Tên cơ sở dữ liệu: ecommerce_db
    • Tên bộ sưu tập: product_details_collection
  3. Nhấp vào Tạo cơ sở dữ liệu.
  4. Trong Trình khám phá dữ liệu, hãy chọn Tên bộ sưu tập.
  5. Nhấp vào biểu tượng Thêm dữ liệu (+), rồi nhấp vào Chèn tài liệu.
  6. Sao chép nội dung JSON từ product_details_export.json rồi dán vào hộp thoại trình chỉnh sửa Insert Document (Chèn tài liệu).
  7. Nhấp vào Insert (Chèn) để chèn mảng tài liệu và xác minh rằng 192 tài liệu đã được thêm.
  8. Trong Trình khám phá dữ liệu, hãy nhấp vào Tạo bộ sưu tập (+) bên cạnh cơ sở dữ liệu ecommerce_db.
  9. Nhập user_interactions_collection cho tên bộ sưu tập rồi nhấp vào Tạo bộ sưu tập.
  10. Trong Trình khám phá dữ liệu, hãy chọn tập hợp user_interactions_collection.
  11. Nhấp vào biểu tượng Thêm dữ liệu (+), rồi nhấp vào Chèn tài liệu.
  12. Sao chép nội dung JSON từ user_interactions_export.json rồi dán vào hộp thoại trình chỉnh sửa Insert Document (Chèn tài liệu).
  13. Nhấp vào Chèn tài liệu.

6. Thiết lập BigQuery

BigQuery tổng hợp và phân tích hành vi của người dùng trong quá khứ để tạo báo cáo và đề xuất thông minh.

Tạo tập dữ liệu

  1. Trong Google Cloud Console, hãy chuyển đến BigQuery.
  2. Bên cạnh mã dự án của bạn trong ngăn Explorer, hãy nhấp vào trình đơn có biểu tượng 3 dấu chấm rồi chọn Tạo tập dữ liệu.
  3. Nhập ecommerce_analytics cho Mã tập dữ liệu.
  4. Nhấp vào Tạo tập dữ liệu.

Tạo bảng Analytics

  1. Mở một truy vấn mới trong không gian làm việc BigQuery.
  2. Chạy câu lệnh SQL sau để tạo bảng tóm tắt liên kết người dùng với hoạt động tương tác với sản phẩm:
CREATE TABLE ecommerce_analytics.user_product_interactions (
    user_id STRING DEFAULT 'any user',
    product_id STRING,
    interaction_score INT
);

Cấp vai trò cho tài khoản dịch vụ Compute cho MCP Toolbox

Chúng tôi cấp vai trò cho tài khoản dịch vụ Điện toán dùng cho Hộp công cụ của mình. Việc này được thực hiện để cho phép Bộ công cụ MCP truy cập vào BigQuery, Secret Manager và các dịch vụ đám mây khác.

Để cấp vai trò, hãy hoàn tất các bước sau:

  1. Chuyển đến phần IAM và quản trị.
  2. Nhấp vào Cấp quyền truy cập.
  3. Trong trường Bên giao đại lý mới, hãy nhập tài khoản dịch vụ Compute mặc định có tên là YOUR_PROJECT_NUMBER-compute@developer.gserviceaccount.com. Thay thế YOUR_PROJECT_NUMBER bằng Số dự án trên Google Cloud.
  4. Nhấp vào Chọn vai trò.
  5. Tìm rồi chọn vai trò Người chỉnh sửa dữ liệu BigQuery.
  6. Nhấp vào Thêm vai trò khác rồi chọn vai trò Người dùng công việc BigQuery.
  7. Nhấp vào Thêm một vai trò khác rồi chọn vai trò Secret Manager Secret Accessor.
  8. Nhấp vào Thêm vai trò khác rồi chọn vai trò Người chỉnh sửa.
  9. Nhấp vào Lưu.

7. Tìm hiểu về ứng dụng từ đầu đến cuối

Để tìm hiểu cách từng thành phần hoạt động với nhau, chúng ta sẽ tạo một ứng dụng thương mại điện tử đơn giản sử dụng nhiều cơ sở dữ liệu và dịch vụ. Ứng dụng này được xây dựng bằng một phụ trợ Python (Flask) và tích hợp nhiều dịch vụ cũng như cơ sở dữ liệu của Google Cloud.

Tìm hiểu cấu trúc thư mục

Trong phần tiếp theo, bạn sẽ sao chép kho lưu trữ BRK2-149-multidb-ecommerce và dùng kho lưu trữ đó để chạy ứng dụng cục bộ. Sau khi kiểm thử ứng dụng cục bộ, chúng ta sẽ triển khai cả MCP Toolbox và ứng dụng lên Cloud Run.

Khám phá các tệp đã tải xuống trong thư mục này. Có các thư mục cấp cao sau:

  • UploadImages: lưu trữ các thành phần hình ảnh, chủ yếu dùng cho tài liệu hoặc nội dung trực quan cho danh mục sản phẩm thương mại điện tử.
  • static: lưu trữ các thành phần web tĩnh của ứng dụng, chẳng hạn như tệp CSS và JavaScript, được dùng để tạo kiểu và thêm tính tương tác vào giao diện người dùng ( nguồn).
  • templates: lưu trữ các mẫu HTML (có thể là Jinja2 cho Flask) mà ứng dụng Python dùng để hiển thị động các trang web cho danh mục thương mại điện tử ( nguồn).
  • toolbox-implementation: lưu trữ cấu hình và thông tin chi tiết về việc triển khai cho Bộ công cụ Giao thức ngữ cảnh mô hình (MCP), tạo điều kiện cho các hoạt động tương tác cơ sở dữ liệu multidb bằng cách sử dụng các công cụ được xác định trước.

Các tệp trong kho lưu trữ này hoạt động cùng nhau để tạo, định cấu hình và triển khai một ứng dụng thương mại điện tử multidb. Các tệp trung tâm như app.py điều phối phần phụ trợ bằng cách tích hợp nhiều nguồn dữ liệu được xác định trong các tệp SQL và JSON, trong khi các tệp cấu hình đảm bảo việc triển khai liền mạch vào môi trường đám mây:

  • app.py: điều phối phần phụ trợ Flask và các chế độ tích hợp nhiều cơ sở dữ liệu.
  • agentengine.py: Logic cốt lõi để khởi động và định cấu hình các tác nhân Vertex AI.
  • .env: lưu trữ các khoá bí mật cho các kết nối cơ sở dữ liệu và bộ nhớ.
  • tools.yaml: định cấu hình Bộ công cụ MCP cho các thao tác cơ sở dữ liệu multidb.
  • Dockerfile: xác định hình ảnh vùng chứa và chế độ thiết lập môi trường.
  • requirements.txt: liệt kê các thư viện Python cần thiết cho thời gian chạy ứng dụng.
  • tools.yaml: cấu hình cho MCP Toolbox.
  • Procfile: chỉ định các lệnh thực thi sản xuất để triển khai.
  • alloydb_insert_queries.sql: chứa các truy vấn SQL cho dữ liệu quan hệ.
  • product_details_export.jsonuser_interactions_export.json: cung cấp dữ liệu JSON mẫu cho cơ sở dữ liệu NoSQL.
  • README.md: hướng dẫn thiết lập, triển khai và tìm hiểu dự án.

Quy trình toàn diện của ứng dụng

  • Thiết lập AlloyDB: Cung cấp một cụm có hiệu suất cao và sử dụng các tập lệnh SQL được cung cấp để tạo products_core_table có các cột vectơ cho bản nhúng hình ảnh.
  • Thiết lập MongoDB Atlas: Triển khai một cụm trên Google Cloud để lưu trữ các thuộc tính sản phẩm linh hoạt trong product_details và ghi lại luồng nhấp chuột theo thời gian thực trong user_interactions.
  • BigQuery Analytics: Tạo một tập dữ liệu để tổng hợp nhật ký tương tác, cho phép các truy vấn phân tích phức tạp xác định "5" mặt hàng thịnh hành hàng đầu trong số hàng triệu sự kiện.
  • Kho lưu trữ Cloud Storage: Tạo một bộ chứa công khai để lưu trữ hình ảnh sản phẩm có độ phân giải cao, đảm bảo rằng mỗi thành phần đều có thể truy cập thông qua một URL công khai hoặc có chữ ký cho giao diện người dùng.
  • Triển khai Bộ công cụ MCP: Triển khai Bộ công cụ này vào Cloud Run, thiết lập bộ công cụ này làm cầu nối trung tâm dựa trên REST giúp dịch ý định bằng ngôn ngữ tự nhiên thành các truy vấn trên nhiều cơ sở dữ liệu.
  • Cấu hình Tools.yaml: Xác định "Công cụ" của bạn (chẳng hạn như get_product_core_data hoặc get_top_5_views) bằng cách liên kết các thao tác SQL và NoSQL cụ thể với những tên đơn giản mà tác nhân có thể đọc được.
  • Logic phụ trợ Flask: Triển khai các tuyến app.py giao tiếp với Bộ công cụ MCP, xử lý việc điều phối quá trình truy xuất dữ liệu và đóng vai trò là API cho giao diện người dùng.
  • Điều phối nhiều tác nhân: Định cấu hình các tác nhân ADK trong mã để suy luận về ý định của người dùng, chọn "Công cụ" phù hợp để giải quyết các cụm từ tìm kiếm phức tạp, bán lẻ từ nhiều nguồn.
  • Tích hợp giao diện người dùng: Xây dựng một giao diện index.html có danh mục sản phẩm với tính năng ghi lại lượt tương tác, thẻ Analytics để hiểu rõ thông tin phân tích hiệu suất sản phẩm và một "Thẻ tác nhân" chuyên dụng sử dụng tính năng trò chuyện với nhiều tác nhân của ADK để mang đến trải nghiệm mua sắm đàm thoại liền mạch.

Bây giờ, hãy triển khai việc điều phối và triển khai.

8. Thiết lập MCP Toolbox và triển khai lên Cloud Run

MCP Toolbox trừu tượng hoá nhiều nguồn dữ liệu của chúng tôi, cho phép ứng dụng tìm nạp và ghi dữ liệu một cách đồng nhất.

Cài đặt Hộp công cụ MCP cục bộ

  1. Trong Cloud Shell, hãy chuyển đến thư mục toolbox-implementation:
    cd next-26-sessions/BRK2-149-multidb-ecommerce/toolbox-implementation
    
  2. Tải tệp nhị phân Bộ công cụ MCP xuống và thực thi tệp này:
    export VERSION=0.29.0
    curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
    chmod +x toolbox
    

Định cấu hình tools.yaml

Bạn cần xác định các lớp trừu tượng cho AlloyDB, MongoDB và BigQuery. Tệp tools.yaml cho biết cách hộp công cụ MCP tương tác với nhau.

  1. Tạo và chỉnh sửa tệp tools.yaml bằng trình chỉnh sửa nhúng:
    cloudshell edit tools.yaml
    
    Bạn có thể tìm thấy tệp tools.yaml hoàn chỉnh trong Kho lưu trữ GitHub. Sao chép nội dung của tệp này vào tệp tools.yaml mới.
  2. Cập nhật máy chủ lưu trữ, người dùng, mật khẩu, mã dự án và chuỗi kết nối cho phù hợp với cơ sở hạ tầng mà bạn đã cung cấp trong các bước trước:

    Cơ sở dữ liệu

    Trường

    Giá trị mẫu

    AlloyDB/BigQuery

    project_id

    YOUR_PROJECT_ID

    AlloyDB

    region

    us-central1

    AlloyDB

    cluster

    ecommerce-cluster

    AlloyDB

    instance

    ecommerce-cluster-primary

    AlloyDB

    database

    postgres

    AlloyDB

    password

    alloydb

    MongoDB

    connection_string

    mongodb+srv://store-user:storeuser@ecommerce-cluster.urcxr6q.mongodb.net

Cấp vai trò cho tài khoản dịch vụ Compute cho MCP Toolbox

Chúng tôi cấp vai trò cho tài khoản dịch vụ Điện toán dùng cho Hộp công cụ của mình. Việc này được thực hiện để cho phép Hộp công cụ MCP truy cập vào AlloyDB.

  1. Chuyển đến phần IAM và quản trị.
  2. Nhấp vào Cấp quyền truy cập.
  3. Trong trường Bên giao đại lý mới, hãy nhập tài khoản dịch vụ Compute mặc định có tên là YOUR_PROJECT_NUMBER-compute@developer.gserviceaccount.com. Thay thế YOUR_PROJECT_NUMBER bằng Số dự án trên Google Cloud.
  4. Nhấp vào Chọn vai trò.
  5. Tìm rồi chọn vai trò Người chỉnh sửa dữ liệu BigQuery.
  6. Nhấp vào Thêm một vai trò khác rồi chọn vai trò Ứng dụng AlloyDB.
  7. Nhấp vào Thêm vai trò khác rồi chọn vai trò Người dùng dịch vụ.
  8. Nhấp vào Thêm một vai trò khác rồi chọn vai trò Storage Object Viewer (Người xem đối tượng lưu trữ).
  9. Nhấp vào Lưu.

Kiểm thử giao diện người dùng của công cụ

  1. Trong thiết bị đầu cuối cloudshell, hãy chạy hộp công cụ cục bộ để phân phát giao diện người dùng:
    ./toolbox --ui
    
  2. Mở bản xem trước trên web trong Cloud Shell trên cổng 5000 rồi chuyển đến trang công cụ. Ví dụ: tuỳ thuộc vào URL của phiên, bạn có thể xem URL đó tại: https://5000-cs-71152278760-default.cs-asia-southeast1-cash.cloudshell.dev/ui

Giao diện người dùng hộp công cụ MCP sau đây sẽ xuất hiện:

Giao diện người dùng của Bộ công cụ MCP

Triển khai lên Cloud Run

Triển khai MCP Toolbox vào Cloud Run để cung cấp dưới dạng một dịch vụ được quản lý, bảo mật mà ứng dụng của chúng ta có thể dùng để truy vấn cơ sở dữ liệu. Chúng tôi sẽ lưu trữ cấu hình trong Secret Manager để bảo vệ các thông tin kết nối nhạy cảm.

  1. Mở một phiên Cloud Shell mới.
  2. Chuyển đến thư mục toolbox-implementation:
    cd next-26-sessions/BRK2-149-multidb-ecommerce/toolbox-implementation
    
  3. Tải cấu hình tools.yaml lên Google Secret Manager:
    gcloud secrets create tools --data-file=tools.yaml
    
    Lưu ý: Để thêm một phiên bản mới vào khoá bí mật hiện có, hãy sử dụng lệnh sau:
    gcloud secrets versions add tools --data-file=tools.yaml
    
  4. Triển khai bằng cách sử dụng hình ảnh vùng chứa MCP Toolbox công khai:
    export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:0.29.0
    export PROJECT_ID=$(gcloud config get-value project)
    
    gcloud run deploy toolbox \
        --image $IMAGE \
        --region us-central1 \
        --service-account $(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")-compute@developer.gserviceaccount.com \
        --set-secrets "/app/tools.yaml=tools:latest" \
        --args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080","--ui" \
        --allow-unauthenticated
    
  5. Sau khi triển khai, hãy ghi lại URL dịch vụ Cloud Run được cung cấp. Biểu tượng này sẽ có dạng https://toolbox-*********-uc.a.run.app/ui.

9. Thiết lập ứng dụng thương mại điện tử và triển khai lên Cloud Run

Khi cơ sở dữ liệu của chúng ta đang chạy và đã triển khai lớp trừu tượng Bộ công cụ MCP, chúng ta có thể chạy ứng dụng web Flask!

Để phân phát danh mục sản phẩm, ứng dụng Flask sẽ xử lý dữ liệu bằng cách thực hiện các bước sau:

  1. Tìm nạp dữ liệu cốt lõi: Truy xuất danh sách đầy đủ các sản phẩm từ AlloyDB (list_products_core).
  2. Tìm nạp thông tin chi tiết mở rộng: Truy xuất tất cả thông tin chi tiết về sản phẩm từ MongoDB (list_all_product_details).
  3. Kết hợp danh sách: Nối hai danh sách.
  4. Làm phong phú bằng nội dung nghe nhìn: Thêm URL hình ảnh trên Cloud Storage vào từng mục.

Tạo đường dẫn ứng dụng công cụ suy luận

Để khởi động và đăng ký một tác nhân AI bằng Vertex AI Reasoning Engine của Google Cloud, hãy chạy lệnh sau:

  1. Trong thiết bị đầu cuối cloudshell, hãy chuyển đến thư mục BRK2-149-multidb-ecommerce.
    cd next-26-sessions/BRK2-149-multidb-ecommerce
    
  2. Chạy requirements.txt để cài đặt các phần phụ thuộc
    pip install -r requirements.txt
    
  3. Chạy tập lệnh agentengine.py để tạo đường dẫn ứng dụng của công cụ suy luận:
    python agentengine.py
    

Kết quả sẽ tương tự như sau:

projects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856

Định cấu hình các biến môi trường

  1. Tạo tệp .env rồi chỉnh sửa tệp đó:
    cloudshell edit .env
    
  2. Thay thế các giá trị bằng thông tin kết nối cơ sở dữ liệu cụ thể và URL mới của Cloud Run Toolbox:
    # 1. MongoDB Connection String
    MONGODB_CONNECTION_STRING="mongodb+srv://<db_user>:<db_password>@cluster0.mongodb.net"
    
    # 2. MCP Toolbox Server Location
    # Must match the address where you run the toolbox server
    MCP_TOOLBOX_SERVER_URL="https://toolbox-*********-uc.a.run.app"
    
    # 3. Google Cloud Storage Bucket Name
    GCS_PRODUCT_BUCKET="ecommerce-app-images"
    
    # 4. Fallback image URL
    FALLBACK_IMAGE_URL="https://storage.googleapis.com/ecommerce-media-bold-circuit-492711-n9/fallback.jpg"
    
    # 5. Google Gen AI Vertex AI flag
    GOOGLE_GENAI_USE_VERTEXAI=TRUE
    
    # 6. Project ID
    PROJECT_ID=codelab-project-491117
    
    # 7. Google Cloud Location of AlloyDB, BigQuery databases
    GOOGLE_CLOUD_LOCATION=us-central1
    
    # 8. Reasoning engine application path
    APP_NAME=projects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856
    
    # 9. Model ID
    MODEL=gemini-1.5-flash-lite
    

Triển khai giao diện người dùng lên Cloud Run

  1. Triển khai ứng dụng web lên Cloud Run để hoàn tất cấu trúc:
    gcloud run deploy polyglot --source . --platform managed \
      --region us-central1 \
      --allow-unauthenticated \
      --set-env-vars \
      MONGODB_CONNECTION_STRING="<MONGODB_CONNECTION_STRING>", \
      MCP_TOOLBOX_SERVER_URL="<MCP_TOOLBOX_SERVER_URL>", \
      GCS_PRODUCT_BUCKET="<GCS_PRODUCT_BUCKET>", \
      FALLBACK_IMAGE_URL="<FALLBACK_IMAGE_URL>", \
      GOOGLE_GENAI_USE_VERTEXAI=TRUE, \
      PROJECT_ID="YOUR_PROJECT_ID", \
      GOOGLE_CLOUD_LOCATION=us-central1, \
      APP_NAME="<YOUR_REASONING_ENGINE_APP_PATH>", \
      MODEL="gemini-1.5-flash-lite"
    
    Thay thế các giá trị sau:
    • YOUR_PROJECT_ID: Mã dự án của bạn trên Google Cloud.
    • YOUR_REASONING_ENGINE_APP_PATH: Kết quả của việc chạy python agentengine.py, ví dụ: projects/991742412753/locations/us-central1/reasoningEngines/4933254136889081856.
    • MCP_TOOLBOX_SERVER_URL: URL của máy chủ MCP Toolbox, ví dụ: https://toolbox-*********-uc.a.run.app.
    • GCS_PRODUCT_BUCKET: Tên bộ chứa Google Cloud Storage của bạn, ví dụ: ecommerce-app-images.
    • MONGODB_CONNECTION_STRING: Chuỗi kết nối cho cơ sở dữ liệu MongoDB của bạn, ví dụ: mongodb+srv://store-user:storeuser@ecommerce-cluster.g8vaekh.mongodb.net
    • FALLBACK_IMAGE_URL: URL của hình ảnh dự phòng, ví dụ: https://storage.googleapis.com/ecommerce-app-images/fallback.jpg

Ứng dụng của bạn hiện đã được xuất bản! Mở URL dịch vụ do Cloud Run cung cấp để xem danh mục Thương mại điện tử Multidb. URL sẽ có dạng tương tự như https://polyglot-*********-uc.a.run.app/.

10. Khám phá ứng dụng

  1. Nhấp vào Danh mục sản phẩm để xem tất cả sản phẩm.
    Danh mục sản phẩm
  2. Nhấp vào biểu tượng sản phẩm để xem chi tiết sản phẩm. Bạn sẽ nhận thấy rằng hình ảnh được lấy từ Cloud Storage, chi tiết sản phẩm được tìm nạp từ MongoDB và kho hàng được tìm nạp từ AlloyDB.Chi tiết sản phẩm
  3. Tương tác với danh mục sản phẩm để tạo các lượt xem và lượt ghi mô phỏng được gửi đến MongoDB.
  4. Nhấp vào ETL và Analytics để xem số liệu phân tích về sản phẩm. Bạn sẽ nhận thấy rằng dữ liệu phân tích sản phẩm được tìm nạp từ BigQuery.
    ETL và Analytics cho sản phẩm
  5. Nhấp vào thẻ AI agent (Tác nhân AI) để tương tác với tác nhân AI. Đặt câu hỏi bằng ngôn ngữ tự nhiên, chẳng hạn như:
    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.
    
    Tác nhân AI

Bạn có thể thấy rằng kết quả tìm kiếm trả về chính xác những gì chúng ta yêu cầu – một chiếc ba lô không có thành phần bằng da, còn hàng và không có lời phàn nàn nào về độ bền của dây đeo trong các bài đánh giá.

Tác nhân AI

11. Dọn dẹp

Để tránh các khoản phí phát sinh cho tài khoản Google Cloud của bạn, hãy xoá các tài nguyên đã tạo trong lớp học lập trình này.

Chạy các lệnh sau trong Cloud Shell:

gcloud run services delete toolbox --region us-central1 --quiet
gcloud run services delete multi-db-app --region us-central1 --quiet
bq rm -r -f -d $PROJECT_ID:ecommerce_analytics
gcloud storage rm --recursive gs://ecommerce-app-images
gcloud alloydb clusters delete ecommerce-cluster --region us-central1 --force --quiet

Nếu muốn, bạn có thể chạy lệnh sau để xoá toàn bộ dự án trên Google Cloud và tất cả tài nguyên của dự án đó:

gcloud projects delete $PROJECT_ID

12. Xin chúc mừng

Xin chúc mừng! Bạn đã xây dựng thành công một cấu trúc Multidb trên nhiều đám mây.

Bạn đã minh hoạ cách MCP Toolbox đóng vai trò là chất kết dính kiến trúc cho một ứng dụng hiện đại, chuyên biệt. Bằng cách kết hợp cơ sở dữ liệu phù hợp với công việc phù hợp, bạn đã đạt được:

  • Ghi dữ liệu linh hoạt: MongoDB cho nhật ký sự kiện.
  • Tính nhất quán trong giao dịch: AlloyDB để đảm bảo tính toàn vẹn cốt lõi.
  • Phân tích hiệu suất cao: BigQuery cho thông tin kinh doanh.
  • Phát triển hợp nhất: Một phụ trợ Python duy nhất trừu tượng hoá mọi sự phức tạp bằng Bộ công cụ MCP.

Tài liệu tham khảo

Tìm hiểu thêm về các sản phẩm có liên quan của Google Cloud và khám phá những lớp học lập trình này:

Để biết thêm thông tin về các sản phẩm được dùng trong lớp học lập trình này, hãy xem: