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

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

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ มิ.ย. 17, 2025
account_circleเขียนโดย Author: Abirami Sukumaran

1 ภาพรวม

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

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

ชุดเครื่องมือสำหรับนักพัฒนาแอปตัวแทน (ADK)

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

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

สิ่งที่ควรทราบสำหรับระบบหลายตัวแทน

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

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

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

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

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

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

ตัวแทนของข้อเสนอการปรับปรุงเพื่อสร้างเอกสารข้อเสนอการปรับปรุงห้องครัว

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

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

2 MCP

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

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

กล่องเครื่องมือ MCP สําหรับฐานข้อมูล

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

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

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

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

การรักษาความปลอดภัยที่ดีขึ้น: การรับรองที่ผสานรวมเพื่อให้เข้าถึงข้อมูลของคุณได้อย่างปลอดภัยยิ่งขึ้น

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

ต้องชี้แจงว่าเรื่องนี้เกิดขึ้นก่อน MCP

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

9a9018b8596bd34e.png

เราจะให้มีตัวแทนรูทที่จัดการตัวแทนเหล่านี้ตามข้อกำหนด

ข้อกำหนด

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

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

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

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

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

  1. เปิดใช้งาน Cloud Shell โดยคลิกลิงก์นี้ คุณสลับระหว่าง Cloud Shell Terminal (สําหรับการเรียกใช้คําสั่งระบบคลาวด์) กับ 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 Terminal ให้เรียกใช้คำสั่งต่อไปนี้ทีละรายการเพื่อสร้างโฟลเดอร์รูทและโฟลเดอร์โปรเจ็กต์
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/adk-renovation-agent/blob/main/agent.py

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

  1. ตรวจสอบว่าคุณมีที่เก็บข้อมูล Cloud Storage

ฟิลด์นี้มีไว้สำหรับจัดเก็บเอกสารข้อเสนอที่ตัวแทนสร้างขึ้น สร้างและมอบสิทธิ์เข้าถึงเพื่อให้ระบบหลายตัวแทนที่สร้างด้วย Vertex AI สามารถเข้าถึงได้ โดยวิธีดำเนินการมีดังนี้

https://cloud.google.com/storage/docs/creating-buckets#console
  1. ตั้งชื่อที่เก็บข้อมูลเป็น "next-demo-store" หรือชื่อใดก็ได้ที่ระบบอนุญาตให้ตั้ง จดค่านี้ไว้เนื่องจากคุณต้องอัปเดตค่า STORAGE_BUCKET ในไฟล์ .env (ในขั้นตอนการตั้งค่าตัวแปร ENV)
  2. สร้างในตำแหน่ง us-central1
  3. หากต้องการตั้งค่าการเข้าถึงที่เก็บข้อมูล ให้ไปที่คอนโซล Cloud Storage และไปที่ที่เก็บข้อมูล Storage (ในกรณีของเรา ชื่อที่เก็บข้อมูลคือ "next-demo-storage": https://console.cloud.google.com/storage/browser/next-demo-storage

ไปที่ "สิทธิ์" -> "ดูผู้ใช้หลัก" -> "ให้สิทธิ์เข้าถึง" เลือกผู้ใช้หลักเป็น "allUsers" และบทบาทเป็น "ผู้ใช้ออบเจ็กต์พื้นที่เก็บข้อมูล"

Make sure to not enable "prevent public access". Since this is a demo/study application we are going with a public bucket. Remember to configure permission settings appropriately when you are building your application.

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

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

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

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

f76ff480c8c889aa.png

  1. คุณจะเห็นหน้าจอดังภาพด้านล่าง สร้างคลัสเตอร์และอินสแตนซ์ด้วยค่าต่อไปนี้ (ตรวจสอบว่าค่าตรงกันในกรณีที่คุณทำโคลนโค้ดแอปพลิเคชันจากรีโป)
  • cluster id: "vector-cluster"
  • password: "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 สำหรับฐานข้อมูลเพื่อใช้เป็นแพลตฟอร์มควบคุมสำหรับการโต้ตอบกับฐานข้อมูลคำสั่งซื้อทั้งหมดใน AlloyDB

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

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

คุณจะเห็นว่าฐานข้อมูลหนึ่งที่ MCP Toolbox สำหรับฐานข้อมูลรองรับคือ 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 (สําหรับโหมดแก้ไขโค้ด) และเพิ่มไฟล์ชื่อ "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" ด้านบน) เราเพียงแค่ดึงค่าสำหรับช่อง order_status เมื่อชื่อสื่อตรงกับข้อความค้นหาของผู้ใช้

มาทําความเข้าใจ tools.yaml

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

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

มาทำให้ Toolbox ใช้งานได้ใน 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. มาสร้างบัญชีบริการแยกต่างหากที่จะทำหน้าที่เป็นข้อมูลประจำตัวสําหรับบริการ Toolbox ที่เราจะนำไปใช้กับ 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

ซึ่งจะเริ่มต้นกระบวนการติดตั้งใช้งานเซิร์ฟเวอร์ Toolbox ด้วย 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

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

มาเชื่อมต่อเครื่องมือกล่องเครื่องมือกับตัวแทนของเรากัน

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

  1. แก้ไขไฟล์ requirements.txt ด้วยแหล่งที่มาจากรีโปดังนี้

เราจะรวมข้อกำหนดของ 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>>
STORAGE_BUCKET=next-demo-store <<or your storage bucket name>>

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

11 เรียกใช้ตัวแทน

  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.

13 ล้างข้อมูล

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

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

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

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