สร้างแอปหลายตัวแทนด้วยกล่องเครื่องมือ MCP สำหรับ AlloyDB และ ADK

1. ภาพรวม

เอเจนต์คือโปรแกรมอัตโนมัติที่พูดคุยกับโมเดล AI เพื่อดำเนินการตามเป้าหมายโดยใช้เครื่องมือและบริบทที่มีอยู่ และสามารถตัดสินใจด้วยตนเองโดยอิงตามข้อเท็จจริง

เมื่อแอปพลิเคชันมีเอเจนต์หลายตัวที่ทำงานร่วมกันโดยอัตโนมัติและทำงานร่วมกันตามที่จำเป็นเพื่อตอบสนองวัตถุประสงค์ที่ใหญ่ขึ้น โดยที่เอเจนต์แต่ละตัวมีความรู้และรับผิดชอบในด้านที่เฉพาะเจาะจงแยกกัน แอปพลิเคชันนั้นจะกลายเป็นระบบหลายเอเจนต์

Agent Development Kit (ADK)

Agent Development Kit (ADK) เป็นเฟรมเวิร์กที่ยืดหยุ่นและเป็นโมดูลสำหรับการพัฒนาและติดตั้งใช้งาน AI Agent ADK รองรับการสร้างแอปพลิเคชันที่ซับซ้อนโดยการรวมอินสแตนซ์ของ Agent ที่แตกต่างกันหลายรายการเข้าเป็นระบบ Multi-Agent (MAS)

ใน ADK ระบบ Multi-Agent คือแอปพลิเคชันที่เอเจนต์ต่างๆ ซึ่งมักจะสร้างลำดับชั้น ทำงานร่วมกันหรือประสานงานเพื่อให้บรรลุเป้าหมายที่ใหญ่ขึ้น การจัดโครงสร้างแอปพลิเคชันในลักษณะนี้มีข้อดีที่สำคัญหลายประการ ได้แก่ ความสามารถในการแยกส่วน ความเชี่ยวชาญ ความสามารถในการนำกลับมาใช้ใหม่ ความสามารถในการบำรุงรักษา และความสามารถในการกำหนดโฟลว์การควบคุมที่มีโครงสร้างโดยใช้เอเจนต์เวิร์กโฟลว์เฉพาะ

ข้อควรจำสำหรับระบบแบบหลายเอเจนต์

ก่อนอื่น คุณต้องมีความเข้าใจและการให้เหตุผลที่เหมาะสมเกี่ยวกับความเชี่ยวชาญเฉพาะทางของ Agent แต่ละคน — "คุณรู้ไหมว่าทำไมคุณถึงต้องมี Agent ย่อย ที่เฉพาะเจาะจงสำหรับบางสิ่ง" ให้คิดเรื่องนี้ก่อน

ประการที่ 2 วิธีรวมข้อมูลดังกล่าวกับตัวแทนหลักเพื่อกำหนดเส้นทางและทำความเข้าใจคำตอบแต่ละรายการ

ประการที่ 3 การกำหนดเส้นทางของตัวแทนมีหลายประเภท ซึ่งคุณดูได้ที่นี่ในเอกสารประกอบนี้ ตรวจสอบว่าตัวเลือกใดเหมาะกับขั้นตอนการสมัครของคุณ รวมถึงบริบทและสถานะต่างๆ ที่คุณต้องการสำหรับการควบคุมโฟลว์ของระบบแบบหลายเอเจนต์

สิ่งที่คุณจะสร้าง

มาสร้างระบบ Multi-Agent เพื่อจัดการการปรับปรุงห้องครัวโดยใช้ MCP Toolbox สำหรับ AlloyDB และ ADK กัน

  1. ตัวแทนข้อเสนอการปรับปรุง
  2. ตัวแทนตรวจสอบใบอนุญาตและการปฏิบัติตามข้อกำหนด
  3. ตรวจสอบสถานะการสั่งซื้อ (เครื่องมือที่ใช้ MCP Toolbox สำหรับฐานข้อมูล)

Renovation Proposal Agent เพื่อสร้างเอกสารข้อเสนอการปรับปรุงห้องครัว

ตัวแทนด้านใบอนุญาตและการปฏิบัติตามข้อกำหนดเพื่อดูแลงานที่เกี่ยวข้องกับใบอนุญาตและการปฏิบัติตามข้อกำหนด

Order Status Check Agent เพื่อตรวจสอบสถานะการสั่งซื้อของสื่อโดยการทำงานในฐานข้อมูลการจัดการคำสั่งซื้อที่เราตั้งค่าไว้ใน AlloyDB แต่สำหรับส่วนฐานข้อมูลนี้ เราจะใช้ MCP Toolbox สำหรับ AlloyDB เพื่อใช้ตรรกะการดึงข้อมูลสถานะสำหรับคำสั่งซื้อ

2. MCP

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

  1. โดยใช้รูปแบบไคลเอ็นต์-เซิร์ฟเวอร์ ซึ่งแอปพลิเคชัน AI (โฮสต์) จะเรียกใช้ไคลเอ็นต์ MCP ที่สื่อสารกับเซิร์ฟเวอร์ MCP
  2. เมื่อ AI Agent ต้องการเข้าถึงเครื่องมือหรือข้อมูลที่เฉพาะเจาะจง เอเจนต์จะส่งคำขอที่มีโครงสร้างไปยังไคลเอ็นต์ MCP ซึ่งจะส่งต่อคำขอดังกล่าวไปยังเซิร์ฟเวอร์ MCP ที่เหมาะสม
  3. ช่วยให้โมเดล AI เข้าถึงข้อมูลและเครื่องมือภายนอกได้โดยไม่ต้องใช้โค้ดที่กำหนดเองสำหรับการผสานรวมแต่ละรายการ
  4. ช่วยลดความซับซ้อนของกระบวนการสร้างเอเจนต์และเวิร์กโฟลว์ที่ซับซ้อนบนโมเดลภาษาขนาดใหญ่ (LLM)

MCP Toolbox สำหรับฐานข้อมูล

MCP Toolbox สำหรับฐานข้อมูลของ Google คือเซิร์ฟเวอร์ MCP แบบโอเพนซอร์สสำหรับฐานข้อมูล โดยออกแบบมาเพื่อการใช้งานระดับองค์กรและคุณภาพระดับการผลิต ซึ่งช่วยให้คุณพัฒนาเครื่องมือได้ง่ายขึ้น เร็วขึ้น และปลอดภัยยิ่งขึ้นด้วยการจัดการความซับซ้อนต่างๆ เช่น การจัดกลุ่มการเชื่อมต่อ การตรวจสอบสิทธิ์ และอื่นๆ

อนุญาตให้ตัวแทนเข้าถึงข้อมูลในฐานข้อมูลของคุณ!!! วิธีการ

การพัฒนาที่ง่ายขึ้น: ผสานรวมเครื่องมือกับ Agent ด้วยโค้ดไม่ถึง 10 บรรทัด นำเครื่องมือมาใช้ซ้ำระหว่าง Agent หรือเฟรมเวิร์กหลายรายการ และติดตั้งใช้งานเครื่องมือเวอร์ชันใหม่ได้ง่ายขึ้น

ประสิทธิภาพที่ดียิ่งขึ้น: แนวทางปฏิบัติแนะนำ เช่น การรวมการเชื่อมต่อ การตรวจสอบสิทธิ์ และอื่นๆ

การรักษาความปลอดภัยที่ดียิ่งขึ้น: การตรวจสอบสิทธิ์แบบผสานรวมเพื่อการเข้าถึงข้อมูลที่ปลอดภัยยิ่งขึ้น

ความสามารถในการสังเกตแบบครบวงจร: เมตริกและการติดตามที่พร้อมใช้งานพร้อมการรองรับ OpenTelemetry ในตัว

ต้องพูดถึงข้อเท็จจริงที่ว่าฟีเจอร์นี้มีมาก่อน MCP!!!

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

9a9018b8596bd34e.png

เราจะมี Agent หลักที่ประสานงาน Agent เหล่านี้ตามข้อกำหนด

ข้อกำหนด

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

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

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

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

นอกจากนี้ หากคุณกำลังอ่านข้อความนี้และต้องการรับเครดิตเพื่อช่วยให้คุณเริ่มต้นใช้งาน Google Cloud และใช้ ADK ได้ โปรดใช้ลิงก์นี้เพื่อแลกรับเครดิต โดยทำตามวิธีการที่นี่เพื่อแลกสิทธิ์ โปรดทราบว่าลิงก์นี้จะใช้ได้จนถึงสิ้นเดือนพฤษภาคมสำหรับการแลกสิทธิ์

  1. เปิดใช้งาน Cloud Shell โดยคลิกลิงก์นี้ คุณสลับระหว่างเทอร์มินัล Cloud Shell (สําหรับเรียกใช้คําสั่งคลาวด์) กับ Editor (สําหรับสร้างโปรเจ็กต์) ได้โดยคลิกปุ่มที่เกี่ยวข้องจาก Cloud Shell
  2. เมื่อเชื่อมต่อกับ Cloud Shell แล้ว ให้ตรวจสอบว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและตั้งค่าโปรเจ็กต์เป็นรหัสโปรเจ็กต์โดยใช้คำสั่งต่อไปนี้
gcloud auth list
  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
  1. หากไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่า
gcloud config set project <YOUR_PROJECT_ID>
  1. เปิดใช้ API ต่อไปนี้โดยการเรียกใช้คำสั่งต่อไปนี้
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com \alloydb.googleapis.com
  1. ตรวจสอบว่าคุณมี Python 3.9 ขึ้นไป
  2. โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ

4. การตั้งค่า ADK

  1. สร้างและเปิดใช้งานสภาพแวดล้อมเสมือน (แนะนำ)

สร้างสภาพแวดล้อมเสมือนจากเทอร์มินัล Cloud Shell โดยใช้คำสั่งต่อไปนี้

python -m venv .venv

เปิดใช้งานสภาพแวดล้อมเสมือน

source .venv/bin/activate
  1. ติดตั้ง ADK
pip install google-adk

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

  1. จากเทอร์มินัล Cloud Shell ให้เรียกใช้คำสั่งต่อไปนี้ทีละคำสั่งเพื่อสร้างโฟลเดอร์รูทและโฟลเดอร์โปรเจ็กต์
mkdir agentic-apps
cd agentic-apps
mkdir renovation-agent
  1. ไปที่โปรแกรมแก้ไข Cloud Shell แล้วสร้างโครงสร้างโปรเจ็กต์ต่อไปนี้โดยสร้างไฟล์ (ว่างเปล่าในตอนแรก)
renovation-agent/
        __init__.py
        agent.py
        .env

6. ซอร์สโค้ด

  1. ไปที่ init.py แล้วอัปเดตด้วยเนื้อหาต่อไปนี้
from . import agent
  1. ไปที่ agent.py แล้วอัปเดตไฟล์ด้วยเนื้อหาต่อไปนี้จากเส้นทางต่อไปนี้
https://github.com/AbiramiSukumaran/renovation-agent-adk-mcp-toolbox/blob/main/agent.py

ใน agent.py เราจะนำเข้าทรัพยากร Dependency ที่จำเป็น ดึงพารามิเตอร์การกำหนดค่าจากไฟล์ .env และกำหนด root_agent ซึ่งใช้เครื่องมือ 1 รายการเพื่อเรียกใช้เครื่องมือกล่องเครื่องมือ

  1. ไปที่ requirements.txt แล้วอัปเดตด้วยเนื้อหาจากรายการต่อไปนี้
https://github.com/AbiramiSukumaran/renovation-agent-adk-mcp-toolbox/blob/main/requirements.txt

7. การตั้งค่าฐานข้อมูล

ในเครื่องมืออย่างหนึ่งที่ใช้โดย ordering_agent ซึ่งเรียกว่า "check_status" เราจะเข้าถึงฐานข้อมูลคำสั่งซื้อของ AlloyDB เพื่อดูสถานะของคำสั่งซื้อ ในส่วนนี้ เราจะตั้งค่าคลัสเตอร์และอินสแตนซ์ฐานข้อมูล AlloyDB

สร้างคลัสเตอร์และอินสแตนซ์

  1. ไปที่หน้า AlloyDB ใน Cloud Console วิธีง่ายๆ ในการค้นหาหน้าส่วนใหญ่ใน Cloud Console คือการค้นหาโดยใช้แถบค้นหาของคอนโซล
  2. เลือกสร้างคลัสเตอร์จากหน้านั้น

f76ff480c8c889aa.png

  1. คุณจะเห็นหน้าจอคล้ายกับหน้าจอด้านล่าง สร้างคลัสเตอร์และอินสแตนซ์ด้วยค่าต่อไปนี้ (ตรวจสอบว่าค่าตรงกันในกรณีที่คุณโคลนโค้ดของแอปพลิเคชันจากที่เก็บ)
  • รหัสคลัสเตอร์: "vector-cluster"
  • รหัสผ่าน: "alloydb"
  • รองรับ PostgreSQL 16 / ขอแนะนำให้ใช้เวอร์ชันล่าสุด
  • ภูมิภาค: "us-central1"
  • เครือข่าย: "default"

538dba58908162fb.png

  1. เมื่อเลือกเครือข่ายเริ่มต้น คุณจะเห็นหน้าจอคล้ายกับหน้าจอด้านล่าง

เลือกตั้งค่าการเชื่อมต่อ
7939bbb6802a91bf.png

  1. จากนั้นเลือก "ใช้ช่วง IP ที่มีการจัดสรรโดยอัตโนมัติ" แล้วคลิก "ต่อไป" หลังจากตรวจสอบข้อมูลแล้ว ให้เลือกสร้างการเชื่อมต่อ 768ff5210e79676f.png

6. หมายเหตุสำคัญ: อย่าลืมเปลี่ยนรหัสอินสแตนซ์ (ซึ่งคุณดูได้ในขณะที่กำหนดค่าคลัสเตอร์ / อินสแตนซ์) เป็น

vector-instance หากเปลี่ยนไม่ได้ โปรดใช้รหัสอินสแตนซ์ในการอ้างอิงที่จะเกิดขึ้นทั้งหมด

  1. ในการเตรียมพร้อมสำหรับการตั้งค่ากล่องเครื่องมือ ให้เราเปิดใช้การเชื่อมต่อ IP สาธารณะในอินสแตนซ์ AlloyDB เพื่อให้เครื่องมือใหม่เข้าถึงฐานข้อมูลได้
  2. ไปที่ส่วนการเชื่อมต่อ IP สาธารณะ เลือกช่องทำเครื่องหมายเปิดใช้ IP สาธารณะ แล้วป้อนที่อยู่ IP ของเครื่อง Cloud Shell
  3. หากต้องการดู IP ของเครื่อง Cloud Shell ให้ไปที่เทอร์มินัล Cloud Shell แล้วป้อน ifconfig จากผลลัพธ์ ให้ระบุที่อยู่ inet ของ eth0 แล้วแทนที่ 2 หลักสุดท้ายด้วย 0.0 โดยมีขนาดมาสก์เป็น '/16' เช่น "XX.XX.0.0/16" โดยที่ XX เป็นตัวเลข
  4. วาง IP นี้ในกล่องข้อความ "เครือข่าย" ของเครือข่ายภายนอกที่ได้รับอนุญาตในหน้าแก้ไขอินสแตนซ์

e4d1045e1255e40f.png

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

e06623e55195e16e.png

โปรดทราบว่าการสร้างคลัสเตอร์จะใช้เวลาประมาณ 10 นาที เมื่อดำเนินการสำเร็จแล้ว คุณควรเห็นหน้าจอที่แสดงภาพรวมของคลัสเตอร์ที่เพิ่งสร้าง

การนำเข้าข้อมูล

ตอนนี้ได้เวลาเพิ่มตารางที่มีข้อมูลเกี่ยวกับร้านค้าแล้ว ไปที่ AlloyDB เลือกคลัสเตอร์หลัก แล้วเลือก AlloyDB Studio โดยทำดังนี้

847e35f1bf8a8bd8.png

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

  • ชื่อผู้ใช้ : "postgres"
  • ฐานข้อมูล : "postgres"
  • รหัสผ่าน : "alloydb"

เมื่อตรวจสอบสิทธิ์ใน AlloyDB Studio สำเร็จแล้ว ให้ป้อนคำสั่ง SQL ในเอดิเตอร์ คุณเพิ่มหน้าต่างเอดิเตอร์หลายหน้าต่างได้โดยใช้เครื่องหมายบวกทางด้านขวาของหน้าต่างสุดท้าย

91a86d9469d499c4.png

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

สร้างตาราง

คุณสร้างตารางได้โดยใช้คำสั่ง DDL ด้านล่างใน AlloyDB Studio

-- Table DDL for Procurement Material Order Status

CREATE TABLE material_order_status (
    order_id VARCHAR(50) PRIMARY KEY,
    material_name VARCHAR(100) NOT NULL,
    supplier_name VARCHAR(100) NOT NULL,
    order_date DATE NOT NULL,
    estimated_delivery_date DATE,
    actual_delivery_date DATE,
    quantity_ordered INT NOT NULL,
    quantity_received INT,
    unit_price DECIMAL(10, 2) NOT NULL,
    total_amount DECIMAL(12, 2),
    order_status VARCHAR(50) NOT NULL, -- e.g., "Ordered", "Shipped", "Delivered", "Cancelled"
    delivery_address VARCHAR(255),
    contact_person VARCHAR(100),
    contact_phone VARCHAR(20),
    tracking_number VARCHAR(100),
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    quality_check_passed BOOLEAN,  -- Indicates if the material passed quality control
    quality_check_notes TEXT,        -- Notes from the quality control check
    priority VARCHAR(20),            -- e.g., "High", "Medium", "Low"
    project_id VARCHAR(50),          -- Link to a specific project
    receiver_name VARCHAR(100),        -- Name of the person who received the delivery
    return_reason TEXT,               -- Reason for returning material if applicable
    po_number VARCHAR(50)             -- Purchase order number
);

แทรกระเบียน

คัดลอกinsertคำสั่งค้นหาจากสคริปต์ database_script.sql ที่กล่าวถึงข้างต้นไปยังเครื่องมือแก้ไข

คลิกเรียกใช้

ตอนนี้ชุดข้อมูลพร้อมแล้ว มาตั้งค่า MCP Toolbox สำหรับฐานข้อมูลให้ทำหน้าที่เป็น Control Plane สำหรับการโต้ตอบกับฐานข้อมูลคำสั่งซื้อทั้งหมดใน AlloyDB กัน!!!

8. การตั้งค่า MCP Toolbox สำหรับฐานข้อมูล

Toolbox อยู่ระหว่างเฟรมเวิร์กการจัดระเบียบของแอปพลิเคชันกับฐานข้อมูล โดยมี Control Plane ที่ใช้ในการแก้ไข แจกจ่าย หรือเรียกใช้เครื่องมือ ซึ่งจะช่วยให้การจัดการเครื่องมือของคุณง่ายขึ้นด้วยการจัดหาตำแหน่งส่วนกลางสำหรับจัดเก็บและอัปเดตเครื่องมือ ทำให้คุณแชร์เครื่องมือระหว่างตัวแทนและแอปพลิเคชัน รวมถึงอัปเดตเครื่องมือเหล่านั้นได้โดยไม่ต้องติดตั้งแอปพลิเคชันใหม่

คุณจะเห็นว่าฐานข้อมูลอย่างหนึ่งที่ MCP Toolbox for Databases รองรับคือ AlloyDB และเนื่องจากเราได้จัดสรรฐานข้อมูลดังกล่าวไว้แล้วในส่วนก่อนหน้า เรามาตั้งค่า Toolbox กันเลย

  1. ไปที่เทอร์มินัล Cloud Shell และตรวจสอบว่าได้เลือกโปรเจ็กต์และแสดงในพรอมต์ของเทอร์มินัลแล้ว เรียกใช้คำสั่งด้านล่างจากเทอร์มินัล Cloud Shell เพื่อไปยังไดเรกทอรีโปรเจ็กต์
cd adk-renovation-agent
  1. เรียกใช้คำสั่งด้านล่างเพื่อดาวน์โหลดและติดตั้งกล่องเครื่องมือในโฟลเดอร์ใหม่
# see releases page for other versions
export VERSION=0.7.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox
  1. ไปที่ Cloud Shell Editor (สำหรับโหมดแก้ไขโค้ด) แล้วเพิ่มไฟล์ชื่อ "tools.yaml" ในโฟลเดอร์รูทของโปรเจ็กต์
sources:
    alloydb-orders:
        kind: "alloydb-postgres"
        project: "<<YOUR_PROJECT_ID>>"
        region: "us-central1"
        cluster: "<<YOUR_ALLOYDB_CLUSTER>>"
        instance: "<<YOUR_ALLOYDB_INSTANCE>>"
        database: "<<YOUR_ALLOYDB_DATABASE>>"
        user: "<<YOUR_ALLOYDB_USER>>"
        password: "<<YOUR_ALLOYDB_PASSWORD>>"

tools:
  get-order-data:
    kind: postgres-sql
    source: alloydb-orders
    description: Get the status of an order based on the material description.
    parameters:
      - name: description
        type: string
        description: A description of the material to search for its order status.
    statement: |
      select order_status from material_order_status where lower(material_name) like lower($1) 
      LIMIT 1;

ในส่วนการค้นหา (ดูพารามิเตอร์ "statement" ด้านบน) เราเพียงแค่ดึงค่าของฟิลด์สถานะการสั่งซื้อเมื่อชื่อวัสดุตรงกับข้อความค้นหาของผู้ใช้

มาทำความเข้าใจ tools.yaml กัน

แหล่งข้อมูลแสดงถึงแหล่งข้อมูลต่างๆ ที่เครื่องมือสามารถโต้ตอบด้วย แหล่งที่มาแสดงถึงแหล่งข้อมูลที่เครื่องมือโต้ตอบด้วยได้ คุณกำหนดแหล่งข้อมูลเป็นแผนที่ได้ในส่วนแหล่งข้อมูลของไฟล์ tools.yaml โดยปกติแล้ว การกำหนดค่าแหล่งที่มาจะมีข้อมูลที่จำเป็นต่อการเชื่อมต่อและโต้ตอบกับฐานข้อมูล

เครื่องมือกำหนดการดำเนินการที่ Agent สามารถทำได้ เช่น การอ่านและเขียนไปยังแหล่งที่มา เครื่องมือแสดงถึงการดำเนินการที่เอเจนต์ทำได้ เช่น การเรียกใช้คำสั่ง SQL คุณกำหนดเครื่องมือเป็นแผนที่ได้ในส่วนเครื่องมือของไฟล์ tools.yaml โดยปกติแล้ว เครื่องมือจะต้องมีแหล่งที่มาเพื่อดำเนินการ

ดูรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่า tools.yaml ได้ในเอกสารประกอบนี้

มาเรียกใช้เซิร์ฟเวอร์ MCP Toolbox สำหรับฐานข้อมูลกัน

เรียกใช้คำสั่งต่อไปนี้ (จากโฟลเดอร์ mcp-toolbox) เพื่อเริ่มเซิร์ฟเวอร์

./toolbox --tools-file "tools.yaml"

ตอนนี้หากคุณเปิดเซิร์ฟเวอร์ในโหมดตัวอย่างเว็บในระบบคลาวด์ คุณควรจะเห็นเซิร์ฟเวอร์ Toolbox ทำงานพร้อมเครื่องมือใหม่ชื่อ get-order-data

เซิร์ฟเวอร์ MCP Toolbox จะทำงานในพอร์ต 5000 โดยค่าเริ่มต้น มาใช้ Cloud Shell เพื่อทดสอบกัน

คลิกตัวอย่างเว็บใน Cloud Shell ดังที่แสดงด้านล่าง

f990712162e8e924.png

คลิกเปลี่ยนพอร์ตและตั้งค่าพอร์ตเป็น 5000 ตามที่แสดงด้านล่าง แล้วคลิกเปลี่ยนและแสดงตัวอย่าง

d1b9de0c46ecef8a.png

ซึ่งควรให้ผลลัพธ์ดังนี้

2fdcdac326034d41.png

MCP Toolkit สำหรับฐานข้อมูลอธิบาย Python SDK เพื่อให้คุณตรวจสอบและทดสอบเครื่องมือ ซึ่งมีเอกสารประกอบที่นี่ เราจะข้ามส่วนนั้นไปและไปที่ Agent Development Kit (ADK) โดยตรงในส่วนถัดไปที่จะใช้เครื่องมือเหล่านี้

มาทำให้กล่องเครื่องมือใช้งานได้ใน Cloud Run กัน

ก่อนอื่น เราจะเริ่มต้นด้วยเซิร์ฟเวอร์ MCP Toolbox และโฮสต์ใน Cloud Run จากนั้นเราจะมีปลายทางสาธารณะที่สามารถผสานรวมกับแอปพลิเคชันอื่นๆ และ/หรือแอปพลิเคชันตัวแทนได้ด้วย ดูวิธีการโฮสต์ใน Cloud Run ได้ที่นี่ เราจะไปดูขั้นตอนสำคัญกันเลย

  1. เปิดใช้เทอร์มินัล Cloud Shell ใหม่หรือใช้เทอร์มินัล Cloud Shell ที่มีอยู่ ไปที่โฟลเดอร์โปรเจ็กต์ที่มีไบนารีของกล่องเครื่องมือและ tools.yaml อยู่ ในกรณีนี้คือ adk-renovation-agent
  2. ตั้งค่าตัวแปร PROJECT_ID ให้ชี้ไปยังรหัสโปรเจ็กต์ Google Cloud
export PROJECT_ID="<<YOUR_GOOGLE_CLOUD_PROJECT_ID>>"
  1. เปิดใช้บริการ Google Cloud เหล่านี้
gcloud services enable run.googleapis.com \
                       cloudbuild.googleapis.com \
                       artifactregistry.googleapis.com \
                       iam.googleapis.com \
                       secretmanager.googleapis.com
  1. มาสร้างบัญชีบริการแยกต่างหากที่จะทำหน้าที่เป็นข้อมูลประจำตัวสำหรับบริการกล่องเครื่องมือที่เราจะทำให้ใช้งานได้ใน Google Cloud Run กัน
gcloud iam service-accounts create toolbox-identity
  1. นอกจากนี้ เรายังตรวจสอบว่าบัญชีบริการนี้มีบทบาทที่ถูกต้อง เช่น ความสามารถในการเข้าถึง Secret Manager และสื่อสารกับ AlloyDB
gcloud projects add-iam-policy-binding $PROJECT_ID \
   --member serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com \
   --role roles/secretmanager.secretAccessor

gcloud projects add-iam-policy-binding $PROJECT_ID \
   --member serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com \
   --role roles/alloydb.client

gcloud projects add-iam-policy-binding $PROJECT_ID \
   --member serviceAccount:toolbox-identity@$PROJECT_ID.iam.gserviceaccount.com \
   --role roles/serviceusage.serviceUsageConsumer
  1. เราจะอัปโหลดไฟล์ tools.yaml เป็นข้อมูลลับ
gcloud secrets create tools --data-file=tools.yaml

หากคุณมีข้อมูลลับอยู่แล้วและต้องการอัปเดตเวอร์ชันของข้อมูลลับ ให้ดำเนินการดังนี้

gcloud secrets versions add tools --data-file=tools.yaml

ตั้งค่าตัวแปรสภาพแวดล้อมเป็นอิมเมจคอนเทนเนอร์ที่ต้องการใช้สำหรับ Cloud Run โดยทำดังนี้

export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest
  1. ขั้นตอนสุดท้ายในคำสั่งการติดตั้งใช้งานที่คุ้นเคยไปยัง Cloud Run
gcloud run deploy toolbox \
--image $IMAGE \
--service-account toolbox-identity \
--region us-central1 \
--set-secrets "/app/tools.yaml=tools:latest" \
--args="--tools-file=/app/tools.yaml","--address=0.0.0.0","--port=8080" \
--allow-unauthenticated

ซึ่งจะเริ่มกระบวนการติดตั้งใช้งานเซิร์ฟเวอร์กล่องเครื่องมือด้วยไฟล์ tools.yaml ที่กำหนดค่าไว้ใน Cloud Run เมื่อติดตั้งใช้งานสำเร็จ คุณควรเห็นข้อความที่คล้ายกับข้อความต่อไปนี้

Deploying container to Cloud Run service [toolbox] in project [YOUR_PROJECT_ID] region [us-central1]
OK Deploying new service... Done.                                                                                                                                                                                     
  OK Creating Revision...                                                                                                                                                                                             
  OK Routing traffic...                                                                                                                                                                                               
  OK Setting IAM Policy...                                                                                                                                                                                            
Done.                                                                                                                                                                                                                 
Service [toolbox] revision [toolbox-00001-zsk] has been deployed and is serving 100 percent of traffic.
Service URL: https://toolbox-<SOME_ID>.us-central1.run.app

คุณพร้อมแล้วที่จะใช้เครื่องมือที่เพิ่งทำให้ใช้งานได้ในแอปพลิเคชันที่เป็น Agent ของคุณ!!!

มาเชื่อมต่อเครื่องมือกล่องเครื่องมือกับ Agent กัน!!!

เราได้สร้างแหล่งข้อมูลสำหรับแอปพลิเคชันตัวแทนแล้ว มาอัปเดตให้รวมเครื่องมือ MCP Toolbox สำหรับฐานข้อมูลใหม่ที่เราเพิ่งติดตั้งใช้งานใน Cloud Run กัน

  1. สังเกตไฟล์ requirements.txt ที่มีแหล่งที่มาจากที่เก็บ

เราจะรวมทรัพยากร Dependency สำหรับ MCP Toolbox สำหรับฐานข้อมูลไว้ใน requirements.txt

https://github.com/AbiramiSukumaran/renovation-agent-adk-mcp-toolbox/blob/main/requirements.txt

  1. สังเกตไฟล์ agent.py ด้วยโค้ดจากที่เก็บ

เราจะรวมเครื่องมือที่เรียกใช้ปลายทางของกล่องเครื่องมือเพื่อดึงข้อมูลคำสั่งซื้อสำหรับวัสดุที่สั่งซื้อโดยเฉพาะ

https://github.com/AbiramiSukumaran/renovation-agent-adk-mcp-toolbox/blob/main/agent.py

9. การตั้งค่าโมเดล

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

  1. รับคีย์ API จาก Google AI Studio
  2. ในขั้นตอนถัดไปที่คุณตั้งค่าไฟล์ .env ให้แทนที่ <<your API KEY>> ด้วยค่าคีย์ API จริง

10. การตั้งค่าตัวแปร ENV

  1. ตั้งค่าสำหรับพารามิเตอร์ในไฟล์ .env ของเทมเพลต ในกรณีของฉัน ไฟล์ .env มีตัวแปรต่อไปนี้
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY=<<your API KEY>>
GOOGLE_CLOUD_LOCATION=us-central1 <<or your region>>
GOOGLE_CLOUD_PROJECT=<<your project id>>
PROJECT_ID=<<your project id>>
GOOGLE_CLOUD_REGION=us-central1 <<or your region>>

แทนที่ตัวยึดตำแหน่งด้วยค่าของคุณ

11. เรียกใช้ Agent

  1. ใช้เทอร์มินัลเพื่อไปยังไดเรกทอรีหลักของโปรเจ็กต์ตัวแทน
cd renovation-agent
  1. ติดตั้งการอ้างอิงด้วยคำสั่งต่อไปนี้
pip install -r requirements.txt
  1. คุณเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล Cloud Shell เพื่อเรียกใช้ Agent ได้
adk run .
  1. คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อดำเนินการในเว็บ UI ที่จัดสรร ADK ได้
adk web
  1. ทดสอบด้วยพรอมต์ต่อไปนี้
user>> 

Hello. Check order status for Cement Bags.

12. ผลลัพธ์

3e74f6f757e2db2c.png

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

โปรดทำตามขั้นตอนต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในโพสต์นี้

  1. ในคอนโซล Google Cloud ให้ไปที่หน้าจัดการทรัพยากร
  2. ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
  3. ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเพื่อลบโปรเจ็กต์

14. ขอแสดงความยินดี

ยินดีด้วย คุณสร้างแอปพลิเคชันที่มีระบบ Multi-Agent โดยใช้ ADK และ MCP Toolbox สำหรับฐานข้อมูลเรียบร้อยแล้ว ดูข้อมูลเพิ่มเติมได้ในเอกสารผลิตภัณฑ์ Agent Development Kit และ MCP Toolbox สำหรับฐานข้อมูล