เพิ่มประสิทธิภาพระบบ Agentic ด้วย HTAP ใน AlloyDB

1. ภาพรวม

ใน ส่วนที่ 1 เราได้แปลง PDF ที่ไม่มีโครงสร้างและซับซ้อนให้เป็นตารางที่มีโครงสร้าง ชัดเจน และชาญฉลาดใน BigQuery โดยใช้ Knowledge Catalog และ DataScan ได้สำเร็จ ตอนนี้เรามีคลังข้อมูลที่มีประสิทธิภาพแล้ว ใน ส่วนที่ 2 เราได้ตั้งค่า AlloyDB เป็นแกนหลักในการทำธุรกรรมและรวมตาราง BigQuery เข้ากับ AlloyDB เพื่อสร้างเลเยอร์ข้อมูลแบบรวมโดยไม่ทำซ้ำข้อมูลแม้แต่ไบต์เดียว

วันนี้เราจะสร้างสมอง เรากำลังสร้างแอปพลิเคชันแบบหลาย Agent หรือ "FroyoOS Store Manager" ซึ่งจะทำงานอยู่เหนือเลเยอร์ข้อมูลนี้เพื่อตอบคำถาม ตรวจสอบสารก่อภูมิแพ้ และประมวลผลคำสั่งซื้อแบบเรียลไทม์

ความท้าทาย: แยก AI ออกจาก Agent

เมื่อสร้าง AI Agent ที่ต้องสื่อสารกับฐานข้อมูล รูปแบบที่ไม่แนะนำที่พบบ่อยที่สุดคือการบังคับให้ข้อมูลและตรรกะ AI เข้าไปอยู่ในแอปพลิเคชัน Python โดยตรง ซึ่งจะทำให้แอปของคุณเปราะบาง ไม่ปลอดภัย และดูแลรักษาได้ยากอย่างยิ่งเมื่อสถาปัตยกรรมข้อมูลเติบโตขึ้น

เราจึงใช้ MCP (Model Context Protocol) Toolbox เพื่อแก้ปัญหานี้ โดย MCP Toolbox จะทำหน้าที่เป็นเลเยอร์การแยกข้อมูลแบบรวม เรากำหนดการดำเนินการฐานข้อมูลอย่างชัดเจนในไฟล์ tools.yaml อย่างง่าย และติดตั้งใช้งาน Toolbox นี้เป็นอุปกรณ์ปลายทางแบบ Serverless ที่ปลอดภัยใน Google Cloud Run AI Agent ของเราเพียงแค่เชื่อมต่อกับอุปกรณ์ปลายทางนี้แล้วพูดว่า "เรียกใช้เครื่องมือ 'place_order'"

ศักยภาพของ HTAP

ก่อนที่จะเริ่มสร้าง Agent เรามาพูดถึงเหตุผลที่ชื่อของโพสต์นี้ระบุถึง HTAP (Hybrid Transactional/Analytical Processing) โดยเฉพาะ

ในสถาปัตยกรรมแบบดั้งเดิม หาก AI Agent ต้องการประมวลผลคำสั่งซื้อของผู้ใช้แบบเรียลไทม์ (เวิร์กโหลด OLTP เชิงธุรกรรม) และตรวจสอบเพื่อเปรียบเทียบการจับคู่ส่วนผสมที่ซับซ้อนนับพันรายการ (เวิร์กโหลด OLAP เชิงวิเคราะห์) แอปพลิเคชัน Python ของคุณจะต้องจัดการการเชื่อมต่อกับฐานข้อมูล 2 ฐานที่แตกต่างกันโดยสิ้นเชิง ซึ่งจะทำให้เกิดความหน่วงแฝงสูง ค่าใช้จ่ายด้านความปลอดภัย และการจัดการสถานะที่เปราะบาง

เราได้เปลี่ยน AlloyDB ให้เป็นเครื่องมือ HTAP ที่ทรงพลังด้วยการรวมคลังข้อมูล BigQuery เข้ากับ PostgreSQL โดยตรง สถาปัตยกรรม HTAP นี้ทำให้ AI Agent ของเราในปัจจุบันต้องสื่อสารกับอุปกรณ์ปลายทางฐานข้อมูลเพียงอุปกรณ์เดียว โดยสามารถแทรกธุรกรรมแบบเรียลไทม์ลงในตาราง live_orders และเรียกใช้การสแกนเชิงวิเคราะห์ที่ซับซ้อนกับชุดข้อมูล BigQuery froyo_data ที่รวมไว้ได้ในเวลาเดียวกันโดยไม่ทำซ้ำข้อมูลแม้แต่ไบต์เดียว มาดูกันว่าเราจะเปิดเผยเครื่องมือนี้ให้ AI ใช้งานได้อย่างไร

มาเริ่มสร้างกันเลย

f372e1ecf65501e4.png

สิ่งที่คุณจะได้เรียนรู้

  • วิธีตั้งค่าคลัสเตอร์ อินสแตนซ์ และเครือข่าย AlloyDB เพียงคลิกปุ่ม
  • วิธีตั้งค่าส่วนขยายเพื่อเตรียมพร้อมสำหรับการรวมศูนย์
  • วิธีตั้งค่าการรวมจาก BigQuery ไปยัง AlloyDB
  • ลองใช้

ข้อกำหนด

  • เบราว์เซอร์ เช่น Chrome หรือ Firefox
  • โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • ความคุ้นเคยกับ SQL ในระดับพื้นฐาน

2. ก่อนเริ่มต้น

สร้างโปรเจ็กต์

  1. ใน คอนโซล Google Cloud ให้เลือกหรือสร้าง โปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
  2. ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์แล้ว ดูวิธี ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้ว.
  1. คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud คลิกเปิดใช้งาน Cloud Shell ที่ด้านบนของคอนโซล Google Cloud

รูปภาพปุ่มเปิดใช้งาน Cloud Shell

  1. เมื่อเชื่อมต่อกับ Cloud Shell แล้ว ให้ตรวจสอบว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและโปรเจ็กต์ตั้งค่าเป็นรหัสโปรเจ็กต์ของคุณโดยใช้คำสั่งต่อไปนี้
gcloud auth list
  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
  1. หากต้องการตรวจสอบสิทธิ์
gcloud auth login
  1. หากไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่า
export PROJECT_ID=<YOUR_PROJECT_ID>
gcloud config set project <YOUR_PROJECT_ID>
  1. เปิดใช้ API ที่จำเป็นโดยเรียกใช้คำสั่งนี้เพื่อเปิดใช้ API ที่จำเป็นทั้งหมด
gcloud services enable \
  alloydb.googleapis.com \
  bigquery.googleapis.com \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  artifactregistry.googleapis.com \
  iam.googleapis.com \
  secretmanager.googleapis.com \
  compute.googleapis.com \
  servicenetworking.googleapis.com

ข้อควรระวังและการแก้ปัญหา

อาการ "โปรเจ็กต์ผี"

คุณเรียกใช้ gcloud config set project แต่กำลังดูโปรเจ็กต์อื่นใน UI ของคอนโซล ตรวจสอบรหัสโปรเจ็กต์ในเมนูแบบเลื่อนลงด้านซ้ายบน

อุปสรรคในการเรียกเก็บเงิน

คุณเปิดใช้โปรเจ็กต์แล้ว แต่ลืมบัญชีสำหรับการเรียกเก็บเงิน AlloyDB เป็นเครื่องมือที่มีประสิทธิภาพสูง ซึ่งจะไม่เริ่มทำงานหาก "ถังน้ำมัน" (การเรียกเก็บเงิน) ว่างเปล่า

ความล่าช้าในการเผยแพร่ API

คุณคลิก "เปิดใช้ API" แต่บรรทัดคำสั่งยังคงแสดง Service Not Enabled โปรดรอ 60 วินาที ระบบคลาวด์ต้องใช้เวลาสักครู่ในการเปิดใช้งาน

ข้อจำกัดของโควต้า

หากใช้บัญชีทดลองใช้ใหม่ คุณอาจพบโควต้าของภูมิภาคสำหรับอินสแตนซ์ AlloyDB หาก us-central1 ล้มเหลว ให้ลอง us-east1

3. การเตรียมข้อมูล

ตรวจสอบว่าข้อมูลที่มีโครงสร้างที่เราแยกออกมาจาก PDF ที่ไม่มีโครงสร้างพร้อมใช้งานใน BigQuery และการรวมข้อมูล BigQuery ของ AlloyDB ได้รับการสร้างและทดสอบแล้ว หากยังไม่ได้ทำตามขั้นตอนเหล่านั้น ตอนนี้เป็นเวลาที่เหมาะสมที่จะทำตามขั้นตอนง่ายๆ เหล่านั้นจาก ที่นี่ และ ที่นี่ สำหรับส่วนที่ 1 และ 2 ตามลำดับ

หมายเหตุ

หากคุณกำลังลองใช้ Codelab นี้ คุณไม่ควรเรียกใช้ขั้นตอนการล้างข้อมูลของส่วนที่ 2 (ขั้นตอนการลบคลัสเตอร์และอินสแตนซ์) เนื่องจากเราต้องใช้การจัดระเบียบ AlloyDB สำหรับระบบแบบเป็น Agent ที่แสดงไว้ที่นี่

นอกจากข้อมูลที่เราสร้างไว้แล้วในส่วนที่ 2 เรายังต้องสร้างตารางเพิ่มเติม 1 ตารางในอินสแตนซ์ AlloyDB ไปที่ AlloyDB Studio โดยใช้ลิงก์

https://console.cloud.google.com/alloydb/locations/us-central1/clusters/my-alloydb-cluster/studio

เปลี่ยนชื่อคลัสเตอร์ในลิงก์ด้านบนหากคุณใช้คลัสเตอร์อื่น

ใน AlloyDB Studio ให้เรียกใช้คำสั่งต่อไปนี้ในแท็บ Query Editor ใหม่

CREATE TABLE live_orders (
    order_id SERIAL PRIMARY KEY,
    customer_name VARCHAR(100),
    product_id VARCHAR(100),
    quantity INT,
    order_status VARCHAR(50) DEFAULT 'Pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

คำสั่งนี้จะสร้างตาราง live_orders ในฐานข้อมูล

4. การกำหนดการแยกข้อมูล (tools.yaml)

ก่อนอื่น เราจะลงทะเบียนการดำเนินการฐานข้อมูลอย่างเป็นทางการ โดยสร้างไฟล์ tools.yaml ที่กำหนดวิธีที่ Agent โต้ตอบกับ AlloyDB ซึ่งมีทั้งข้อมูลเชิงธุรกรรมและข้อมูลเชิงวิเคราะห์ (ข้อมูลเชิงวิเคราะห์จากการรวม BigQuery)

  1. ไปที่เทอร์มินัล Cloud Shell เปลี่ยนเป็นโหมด Editor
  2. สร้างโฟลเดอร์ใหม่ในไดเรกทอรีรากชื่อ "froyo-agent"
  3. สร้างไฟล์ tools.yaml ภายในโฟลเดอร์ แล้ววางเนื้อหาต่อไปนี้ (แทนที่ด้วยค่าของคุณเองสำหรับโปรเจ็กต์ คลัสเตอร์ อินสแตนซ์ และรหัสผ่าน)
# tools.yaml
sources:
    alloydb-source:
        kind: "alloydb-postgres"
        project: "*******"
        region: "us-central1"
        cluster: "my-alloydb-cluster"
        instance: "my-primary-inst"
        database: "postgres"
        user: "postgres"
        password: "*******"
        ipType: "private"


tools:
  check_allergens:
    kind: postgres-sql
    source: alloydb-source
    description: Queries the federated BigQuery tables to find allergens for a product.
    statement: |
      SELECT a.allergen_name
      FROM consistsof c
      INNER JOIN product p ON c.product_id = p.product_id
      INNER JOIN ingredient i ON c.ingredient_id = i.ingredient_name
      INNER JOIN containsallergen a ON i.ingredient_id = a.ingredient_id
      WHERE UPPER(p.product_name) LIKE UPPER($1)
    parameters:
      - name: product_name
        type: string
        description: The name of the product to check. (e.g., '%Midnight%')


  place_order:
    kind: postgres-sql
    source: alloydb-source
    description: Inserts a new live transaction into the native AlloyDB orders table.
    statement: |
      INSERT INTO live_orders (customer_name, product_id, quantity)
      VALUES ($1, (SELECT product_id FROM product WHERE product_name ILIKE '%' || $2 || '%' LIMIT 1), $3) RETURNING order_id;
    parameters:
      - name: customer_name
        type: string
        description: The name of the customer placing the order.
      - name: product_name
        type: string
        description: The name of the product being ordered.
      - name: quantity
        type: integer
        description: The quantity of the product being ordered.


toolsets:
  alloydb_tools:
    - check_allergens
    - place_order

เราได้จำกัดความสามารถของ Agent ไว้ที่ 2 เครื่องมือ ได้แก่ ตรวจสอบสารก่อภูมิแพ้และสั่งซื้อ

5. การติดตั้งใช้งาน Toolbox ใน Cloud Run

หากต้องการให้แอปพลิเคชันใช้งานได้ เราจะติดตั้งใช้งาน Toolbox อย่างปลอดภัยโดยใช้ gcloud CLI ซึ่งจะสร้างอุปกรณ์ปลายทางเลเยอร์แอบสแตรกชัน

  1. เปลี่ยนเป็นเทอร์มินัล Cloud Shell แล้วไปที่ไดเรกทอรีการทำงานโดยเรียกใช้คำสั่ง
cd froyo-agent
  1. บันทึก tools.yaml ในข้อมูลลับชื่อ "tools-froyo"
gcloud secrets create tools-froyo --data-file=tools.yaml
  1. ติดตั้งใช้งานคอนเทนเนอร์ MCP Toolbox ใน Cloud Run
export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
gcloud run deploy toolbox-froyo \
    --image $IMAGE \
    --service-account toolbox-identity \
    --region us-central1 \
    --set-secrets "/app/tools.yaml=tools-froyo:latest" \
    --args="--config=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
    --network easy-alloydb-vpc \
    --subnet easy-alloydb-subnet \
    --allow-unauthenticated \
    --vpc-egress private-ranges-only

คุณต้องแทนที่ค่า "network" และ "subnet" หากใช้ค่าที่แตกต่างจากที่เรากำหนดค่าไว้ใน Codelab ส่วนที่ 2

  1. จด URL ของ Cloud Run ที่ได้ (เช่น https://toolbox-froyo-xxx.run.app)

เราจะใช้อุปกรณ์ปลายทาง MCP Toolbox ที่ติดตั้งใช้งานนี้ในขั้นตอนการกำหนดค่า Agent

6. แบ็กเอนด์แบบเป็น Agent (app.py)

เมื่อแยกฐานข้อมูลออกไปแล้ว โค้ด Python ของเราจึงมุ่งเน้นไปที่การจัดระเบียบและการให้เหตุผลได้อย่างเต็มที่

เราใช้ Agent Development Kit (ADK) ร่วมกับ Flask ADK มีหน่วยความจำเซสชันระดับองค์กร (InMemorySessionService) ซึ่งหมายความว่า Agent ของเราจะจดจำบริบทของการสนทนาได้ และผสานรวมกับ ToolboxSyncClient ได้อย่างราบรื่นเพื่อดึงเครื่องมือของเราจาก Cloud Run ได้อย่างง่ายดาย

นี่คือ app.py:

https://github.com/AbiramiSukumaran/froyo-data/blob/main/app.py

แอป Python Flask อย่างง่ายจะเชื่อมต่อ Agent ADK กับเครื่องมือที่เรากำหนดไว้ใน Toolbox ซึ่งจะโต้ตอบกับ AlloyDB (และข้อมูลที่รวมจาก BigQuery ด้วย) และตอบกลับผู้ใช้

หากต้องการรับโปรเจ็กต์นี้ใน Cloud Shell Editor คุณสามารถโคลนที่เก็บสำหรับ Agent ได้โดยเรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัล Cloud Shell

cd

git clone https://github.com/AbiramiSukumaran/froyo-data

คุณควรเห็นโครงสร้างโปรเจ็กต์ต่อไปนี้

43be640b8c935889.png

ขั้นตอนในการสัมผัสกับข้อมูลต่อไปโดยไม่มีบัญชีสำหรับการเรียกเก็บเงิน

  1. เราได้จัดเตรียมไฟล์ข้อมูลต่อไปนี้ไว้ในที่เก็บเพื่อความสะดวก
  2. https://github.com/AbiramiSukumaran/froyo-data/blob/main/froyo_data.allergen.csv
  3. https://github.com/AbiramiSukumaran/froyo-data/blob/main/froyo_data.consistsof.csv
  4. https://github.com/AbiramiSukumaran/froyo-data/blob/main/froyo_data.containsallergen.csv
  5. https://github.com/AbiramiSukumaran/froyo-data/blob/main/froyo_data.froyo_data_materialized.csv
  6. https://github.com/AbiramiSukumaran/froyo-data/blob/main/froyo_data.ingredient.csv
  7. https://github.com/AbiramiSukumaran/froyo-data/blob/main/froyo_data.product.csv
  8. https://github.com/AbiramiSukumaran/froyo-data/blob/main/froyo_data.suppliedby.csv
  9. https://github.com/AbiramiSukumaran/froyo-data/blob/main/froyo_data.supplier.csv

ไฟล์เหล่านี้ควรอยู่ในโฟลเดอร์เดียวกับ app.py

ข. ไฟล์ Python ชื่อ app-nobill.py ในเส้นทางเดียวกัน

  1. ในโฟลเดอร์รากของโปรเจ็กต์จะมีไฟล์ชื่อ app-nobill.py
  2. ไฟล์นี้ออกแบบมาเพื่อสร้างประสบการณ์การใช้งานแอปแบบเดียวกัน แต่ไม่จำเป็นต้องเชื่อมต่อกับแหล่งข้อมูลเหล่านี้อย่างชัดเจน เนื่องจากเราได้จัดเตรียมข้อมูลไว้ในไฟล์แล้ว
  3. ไฟล์อื่นๆ ทั้งหมดตามที่ระบุไว้ใน Lab ควรยังคงอยู่ครบถ้วนในเวอร์ชันนี้ด้วย (เพียงแค่ไม่ต้องเรียกใช้ไฟล์ app.py)

7. UI และการเรียกใช้แอป

เราได้สร้าง UI ที่สวยงามแบบ Glassmorphism (templates/index.html) พร้อมแถบด้านข้างแคตตาล็อกผลิตภัณฑ์แบบเรียลไทม์และอินเทอร์เฟซการแชทแบบโต้ตอบเพื่อให้ผู้จัดการร้านได้รับประสบการณ์การใช้งานที่เหมาะสม

คุณสามารถดูไฟล์ index.html ในไฟล์ที่เก็บได้ที่นี่

https://github.com/AbiramiSukumaran/froyo-data/blob/main/templates/index.html

ก่อนเรียกใช้แอปพลิเคชัน โปรดตรวจสอบว่าคุณมีข้อมูลอ้างอิงในไฟล์ requirements.txt ที่มีเนื้อหาต่อไปนี้

Flask>=3.0.0
google-genai>=0.1.0
mcp>=1.0.0
google-adk
toolbox-core
toolbox-langchain
python-dotenv

และไฟล์ .env ที่มีข้อมูลต่อไปนี้

GOOGLE_API_KEY=***
MCP_TOOLBOX_SERVER_URL=***

วิธีรับ GOOGLE_API_KEY

ทำตามวิธีการในบล็อกนี้เพื่อตั้งค่า Google API Key

วิธีรับ MCP_TOOLBOX_SERVER_URL

เราได้ตั้งค่านี้ไว้ในขั้นตอนก่อนหน้าใน Codelab นี้ และคุณได้คัดลอกอุปกรณ์ปลายทาง MCP Toolbox ที่ติดตั้งใช้งานแล้ว ใช้ลิงก์นั้นสำหรับตัวแปรสภาพแวดล้อม MCP_TOOLBOX_SERVER_URL

เรียกใช้แอปโดยทำดังนี้

จากเทอร์มินัล Cloud Shell ให้เรียกใช้คำสั่งต่อไปนี้ทีละรายการ โดยตรวจสอบว่าคุณอยู่ในโฟลเดอร์โปรเจ็กต์

ไปที่โฟลเดอร์รากของโปรเจ็กต์

cd froyo-data

ติดตั้งข้อมูลอ้างอิง

pip install -r requirements.txt

เรียกใช้ไฟล์ Python

python app.py

คลิกลิงก์ที่ปรากฏในเทอร์มินัลหรือเปิด http://localhost:8080!

84f7f7037d57634a.png

8. การทดสอบขั้นสุดท้าย

มาคลิกผลิตภัณฑ์จากแคตตาล็อกเพื่อถาม Agent กัน

Does Midnight Swirl have any allergens?

คุณควรเห็นการตอบกลับต่อไปนี้

f591a86f763a1652.png

เบื้องหลัง:

  1. Agent ADK ได้รับข้อความแจ้งและตัดสินใจใช้เครื่องมือ check_allergens
  2. โดยจะเรียกใช้ MCP Toolbox ใน Cloud Run อย่างปลอดภัย
  3. Toolbox จะเรียกใช้การค้นหาใน AlloyDB ซึ่งจะรวมเข้ากับ BigQuery ทันทีเพื่อสแกนความสัมพันธ์ที่ซับซ้อนที่เราสร้างไว้ในส่วนที่ 1
  4. ฐานข้อมูลจะแสดงผล "ถั่วเหลือง" ซึ่ง Agent จะสรุปอย่างเรียบร้อยใน UI

จากนั้นเราจะพูดว่า

Order 2 Midnight Swirl for Alice.

d0c37690a1375100.png

Agent จะส่งสตริง "Midnight Swirl" ไปยัง Toolbox SQL ที่อยู่เบื้องหลังจะแปลงสตริงเป็นรหัสจำนวนเต็มแบบไดนามิกผ่าน BigQuery แทรกคำสั่งซื้อแบบเรียลไทม์ลงใน AlloyDB และยืนยันธุรกรรม

ที่เก็บโค้ด

https://github.com/AbiramiSukumaran/froyo-data

9. ล้างข้อมูล

เมื่อทำ Lab นี้เสร็จแล้ว อย่าลืมลบคลัสเตอร์และอินสแตนซ์ AlloyDB

ระบบควรล้างข้อมูลคลัสเตอร์พร้อมกับอินสแตนซ์

10. ขอแสดงความยินดีกับ Agent ของคุณ

ลองพิจารณาสิ่งที่เราเพิ่งทำสำเร็จ

ระบบแบบเป็น Agent ที่มีการจัดระเบียบอย่างดีของเราจะโต้ตอบกับ MCP Toolbox สำหรับฐานข้อมูลเท่านั้น ซึ่งจะจัดการการเรียกใช้เครื่องมือและตรรกะข้อมูลไปยัง AI ของแอปพลิเคชันของเราในเบื้องหลัง ทำให้ขั้นตอนการทำงานง่ายขึ้น ดังนี้

  1. แอปเชิงธุรกรรมของเรา (ที่ทำงานใน AlloyDB) สามารถจัดการเซสชันของผู้ใช้พร้อมกันจำนวนมากได้อย่างรวดเร็ว
  2. เมื่อต้องการข้อมูลเชิงวิเคราะห์จำนวนมากหรือบริบทในอดีต (เช่น รายละเอียดซัพพลายเออร์หรือการจับคู่ส่วนผสมที่ซับซ้อน) แอปจะค้นหา froyo_dataschema ของ BigQuery
  3. ไม่มี ETL ไม่มีไปป์ไลน์ข้อมูลหยุดทำงาน ไม่มีฐานข้อมูลที่ไม่ซิงค์ เราจัดเก็บข้อมูลเพียงครั้งเดียว (ใน BQ) และประมวลผลเมื่อต้องการ

เมื่อ Agent และรากฐานข้อมูลของเราทั้งเชิงวิเคราะห์และเชิงธุรกรรมเสร็จสมบูรณ์แล้ว เราจะไปยังส่วนถัดไป

ขั้นตอนถัดไป

Agent ของเราทำงานได้อย่างสมบูรณ์แบบ... ในกรณีที่ไม่มีปัญหา ในส่วนที่ 4 เราจะสร้างไปป์ไลน์การประเมิน Agent เพื่อทดสอบความถูกต้อง ความน่าเชื่อถือ และประสิทธิภาพของระบบแบบเป็น Agent อย่างเข้มงวด แล้วเจอกัน