สร้างตัวแทนท่องเที่ยวโดยใช้กล่องเครื่องมือ MCP สำหรับฐานข้อมูลและชุดพัฒนาตัวแทน (ADK)

1. บทนำ

ในโค้ดแล็บนี้ คุณจะสร้างเอเจนต์โดยใช้ Agent Development Kit (ADK) ที่ใช้ MCP Toolbox for Databases

ใน Codelab นี้ คุณจะได้ใช้แนวทางแบบทีละขั้นตอนดังนี้

  1. จัดสรรฐานข้อมูล Cloud SQL สำหรับ PostgreSQL ที่จะมีฐานข้อมูลโรงแรมและข้อมูลตัวอย่าง
  2. ตั้งค่ากล่องเครื่องมือ MCP สำหรับฐานข้อมูล ซึ่งให้สิทธิ์เข้าถึงข้อมูล
  3. ออกแบบและพัฒนา Agent โดยใช้ Agent Development Kit (ADK) ซึ่งจะใช้กล่องเครื่องมือ MCP เพื่อตอบคำค้นหาจากผู้ใช้
  4. ดูตัวเลือกในการทดสอบ Agent และกล่องเครื่องมือ MCP สำหรับฐานข้อมูลในเครื่องและใน Google Cloud ผ่านบริการ Cloud Run

b3768488d144b8f6.png

สิ่งที่คุณต้องทำ

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

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

  • การจัดสรรและป้อนข้อมูลตัวอย่างลงในฐานข้อมูล Cloud SQL for PostgreSQL
  • ตั้งค่า MCP Toolbox สำหรับฐานข้อมูลสำหรับอินสแตนซ์ฐานข้อมูล Cloud SQL สำหรับ PostgreSQL
  • ออกแบบและพัฒนา Agent โดยใช้ Agent Development Kit (ADK) เพื่อตอบคำค้นหาของผู้ใช้
  • ทดสอบกล่องเครื่องมือ Agent และ MCP สำหรับฐานข้อมูลในสภาพแวดล้อมในเครื่อง
  • (ไม่บังคับ) ทำให้ Agent และกล่องเครื่องมือ MCP สำหรับฐานข้อมูลใน Google Cloud ใช้งานได้

สิ่งที่คุณต้องมี

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

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

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

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

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

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

  1. เมื่อเชื่อมต่อกับ 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 cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       run.googleapis.com \
                       cloudbuild.googleapis.com \
                       cloudfunctions.googleapis.com \
                       aiplatform.googleapis.com \
                       sqladmin.googleapis.com \
                       compute.googleapis.com 

เมื่อเรียกใช้คำสั่งสำเร็จ คุณควรเห็นข้อความที่คล้ายกับข้อความที่แสดงด้านล่าง

Operation "operations/..." finished successfully.

คุณสามารถใช้คอนโซลแทนคำสั่ง gcloud ได้โดยค้นหาแต่ละผลิตภัณฑ์หรือใช้ลิงก์นี้

หากพลาด API ใดไป คุณก็เปิดใช้ได้เสมอในระหว่างการติดตั้งใช้งาน

โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ

3. สร้างอินสแตนซ์ Cloud SQL

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

เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อสร้างอินสแตนซ์

gcloud sql instances create hoteldb-instance \
--database-version=POSTGRES_15 \
--tier db-g1-small \
--region=us-central1 \
--edition=ENTERPRISE \
--root-password=postgres

คำสั่งนี้จะใช้เวลาดำเนินการประมาณ 3-5 นาที เมื่อเรียกใช้คำสั่งสำเร็จแล้ว คุณควรเห็นเอาต์พุตที่ระบุว่าคำสั่งเสร็จสมบูรณ์แล้ว พร้อมกับข้อมูลอินสแตนซ์ Cloud SQL เช่น NAME, DATABASE_VERSION, LOCATION เป็นต้น

4. เตรียมฐานข้อมูลโรงแรม

ตอนนี้เราจะสร้างข้อมูลตัวอย่างสำหรับตัวแทนโรงแรม

ไปที่หน้า Cloud SQL ใน Cloud Console คุณควรเห็น hoteldb-instance พร้อมใช้งานและสร้างแล้ว คลิกชื่ออินสแตนซ์ (hoteldb-instance) ดังที่แสดงด้านล่าง

29dbc55e97f6f7b.png

จากเมนูด้านซ้ายของ Cloud SQL ให้ไปที่ตัวเลือกเมนู Cloud SQL Studio ดังที่แสดงด้านล่าง

c11cc134c83ce327.png

ซึ่งจะขอให้คุณลงชื่อเข้าใช้ Cloud SQL Studio ซึ่งเราจะให้คำสั่ง SQL 2-3 คำสั่ง เลือก postgres สำหรับตัวเลือกฐานข้อมูล และสำหรับทั้งผู้ใช้และรหัสผ่าน ค่าที่จะใช้คือ postgres คลิก AUTHENTICATE

ก่อนอื่นเรามาสร้างตารางโรงแรมตามสคีมาที่ระบุไว้ด้านล่างกัน ในบานหน้าต่างเอดิเตอร์บานหน้าต่างใดบานหน้าต่างหนึ่งใน Cloud SQL Studio ให้เรียกใช้ SQL ต่อไปนี้

CREATE TABLE hotels(
 id            INTEGER NOT NULL PRIMARY KEY,
 name          VARCHAR NOT NULL,
 location      VARCHAR NOT NULL,
 price_tier    VARCHAR NOT NULL,
 checkin_date  DATE    NOT NULL,
 checkout_date DATE    NOT NULL,
 booked        BIT     NOT NULL
);

ตอนนี้มาป้อนข้อมูลตัวอย่างลงในตารางโรงแรมกัน เรียกใช้ SQL ต่อไปนี้

INSERT INTO hotels(id, name, location, price_tier, checkin_date, checkout_date, booked)
VALUES
 (1, 'Hilton Basel', 'Basel', 'Luxury', '2024-04-20', '2024-04-22', B'0'),
 (2, 'Marriott Zurich', 'Zurich', 'Upscale', '2024-04-14', '2024-04-21', B'0'),
 (3, 'Hyatt Regency Basel', 'Basel', 'Upper Upscale', '2024-04-02', '2024-04-20', B'0'),
 (4, 'Radisson Blu Lucerne', 'Lucerne', 'Midscale', '2024-04-05', '2024-04-24', B'0'),
 (5, 'Best Western Bern', 'Bern', 'Upper Midscale', '2024-04-01', '2024-04-23', B'0'),
 (6, 'InterContinental Geneva', 'Geneva', 'Luxury', '2024-04-23', '2024-04-28', B'0'),
 (7, 'Sheraton Zurich', 'Zurich', 'Upper Upscale', '2024-04-02', '2024-04-27', B'0'),
 (8, 'Holiday Inn Basel', 'Basel', 'Upper Midscale', '2024-04-09', '2024-04-24', B'0'),
 (9, 'Courtyard Zurich', 'Zurich', 'Upscale', '2024-04-03', '2024-04-13', B'0'),
 (10, 'Comfort Inn Bern', 'Bern', 'Midscale', '2024-04-04', '2024-04-16', B'0');

มาตรวจสอบข้อมูลโดยเรียกใช้ SQL SELECT ดังที่แสดงด้านล่างกัน

SELECT * FROM hotels;

คุณควรเห็นระเบียนจำนวนหนึ่งในตารางโรงแรมดังที่แสดงด้านล่าง

a7dd838f1962d412.png

เราได้ดำเนินการตั้งค่าอินสแตนซ์ Cloud SQL และสร้างข้อมูลตัวอย่างเสร็จเรียบร้อยแล้ว ในส่วนถัดไป เราจะตั้งค่ากล่องเครื่องมือ MCP สำหรับฐานข้อมูล

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

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

กล่องเครื่องมือช่วยคุณสร้างเครื่องมือ Gen AI ที่ช่วยให้ตัวแทนเข้าถึงข้อมูลในฐานข้อมูลได้ กล่องเครื่องมือมีฟีเจอร์ต่อไปนี้

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

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

46a1dc73323fbd2e.png

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

การติดตั้งกล่องเครื่องมือ

เปิดเทอร์มินัล Cloud Shell แล้วสร้างโฟลเดอร์ชื่อ mcp-toolbox

mkdir mcp-toolbox

ไปที่โฟลเดอร์ mcp-toolbox ผ่านคำสั่งที่แสดงด้านล่าง

cd mcp-toolbox

ติดตั้ง MCP Toolbox for Databases เวอร์ชันไบนารีผ่านสคริปต์ที่ระบุไว้ด้านล่าง คำสั่งด้านล่างนี้ใช้สำหรับ Linux แต่หากคุณใช้ Mac หรือ Windows โปรดตรวจสอบว่าคุณดาวน์โหลดไบนารีที่ถูกต้อง ดูหน้าเผยแพร่สำหรับระบบปฏิบัติการและสถาปัตยกรรมของคุณ แล้วดาวน์โหลดไบนารีที่ถูกต้อง

export VERSION=0.15.0
curl -O https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox

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

ป้อนคำสั่งต่อไปนี้เพื่อตรวจสอบเวอร์ชันของกล่องเครื่องมือ

./toolbox -v

ซึ่งควรพิมพ์เอาต์พุตที่คล้ายกับเอาต์พุตต่อไปนี้

toolbox version 0.15.0+binary.linux.amd64.c934d7adfd4d012dab3f1707dc0adbdc7cb328cb

ขั้นตอนถัดไปคือการกำหนดค่ากล่องเครื่องมือด้วยแหล่งข้อมูลและการกำหนดค่าอื่นๆ

การกำหนดค่า tools.yaml

วิธีหลักในการกำหนดค่า Toolbox คือผ่านไฟล์ tools.yaml สร้างไฟล์ชื่อ tools.yaml ในโฟลเดอร์เดียวกัน เช่น mcp-toolbox โดยมีเนื้อหาดังที่แสดงด้านล่าง

คุณสามารถใช้โปรแกรมแก้ไข nano ที่มีอยู่ใน Cloud Shell คำสั่ง nano มีดังนี้ "nano tools.yaml"

อย่าลืมแทนที่ค่า YOUR_PROJECT_ID ด้วยรหัสโปรเจ็กต์ Google Cloud ของคุณ

sources:
  my-cloud-sql-source:
    kind: cloud-sql-postgres
    project: YOUR_PROJECT_ID
    region: us-central1
    instance: hoteldb-instance
    database: postgres
    user: postgres
    password: "postgres"

tools:
  search-hotels-by-name:
    kind: postgres-sql
    source: my-cloud-sql-source
    description: Search for hotels based on name.
    parameters:
      - name: name
        type: string
        description: The name of the hotel.
    statement: SELECT * FROM hotels WHERE name ILIKE '%' || $1 || '%';
  search-hotels-by-location:
    kind: postgres-sql
    source: my-cloud-sql-source
    description: Search for hotels based on location.  Result is sorted by price from least to most expensive.
    parameters:
      - name: location
        type: string
        description: The location of the hotel.
    statement: |
      SELECT *
      FROM hotels
      WHERE location ILIKE '%' || $1 || '%'
      ORDER BY
        CASE price_tier
          WHEN 'Midscale' THEN 1
          WHEN 'Upper Midscale' THEN 2
          WHEN 'Upscale' THEN 3
          WHEN 'Upper Upscale' THEN 4
          WHEN 'Luxury' THEN 5
          ELSE 99 -- Handle any unexpected values, place them at the end
        END;

toolsets:
   my_first_toolset:
     - search-hotels-by-name
     - search-hotels-by-location

มาทำความเข้าใจไฟล์โดยย่อกัน

  1. Sources แสดงถึงแหล่งข้อมูลต่างๆ ที่เครื่องมือสามารถโต้ตอบด้วย แหล่งที่มาแสดงถึงแหล่งข้อมูลที่เครื่องมือโต้ตอบด้วยได้ คุณกำหนด Sources เป็นแผนที่ได้ในส่วนแหล่งที่มาของไฟล์ tools.yaml โดยปกติแล้ว การกำหนดค่าแหล่งที่มาจะมีข้อมูลที่จำเป็นต่อการเชื่อมต่อและโต้ตอบกับฐานข้อมูล ในกรณีของเรา เราได้กำหนดค่าแหล่งข้อมูลเดียวที่ชี้ไปยังอินสแตนซ์ Cloud SQL สำหรับ PostgreSQL พร้อมกับข้อมูลเข้าสู่ระบบ ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงแหล่งที่มา
  2. Tools กำหนดการดำเนินการที่ Agent สามารถทำได้ เช่น การอ่านและเขียนไปยังแหล่งที่มา เครื่องมือแสดงถึงการดำเนินการที่เอเจนต์ทำได้ เช่น การเรียกใช้คำสั่ง SQL คุณกำหนด Tools เป็นแผนที่ในส่วนเครื่องมือของไฟล์ tools.yaml ได้ โดยปกติแล้ว เครื่องมือจะต้องมีแหล่งที่มาเพื่อดำเนินการ ในกรณีของเรา เราจะกําหนดเครื่องมือ 2 อย่าง ได้แก่ search-hotels-by-name และ search-hotels-by-location พร้อมระบุแหล่งที่มาที่เครื่องมือทํางาน รวมถึง SQL และพารามิเตอร์ ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงเครื่องมือ
  3. สุดท้ายคือ Toolset ซึ่งช่วยให้คุณกำหนดกลุ่มเครื่องมือที่ต้องการโหลดพร้อมกันได้ ซึ่งอาจมีประโยชน์ในการกำหนดกลุ่มต่างๆ ตามตัวแทนหรือแอปพลิเคชัน ในกรณีของเรา เรามีชุดเครื่องมือเดียวที่ชื่อ my_first_toolset ซึ่งมีเครื่องมือ 2 อย่างที่เรากำหนดไว้

บันทึกไฟล์ tools.yaml ในโปรแกรมแก้ไข nano โดยทำตามขั้นตอนต่อไปนี้

  • กด Ctrl + O (คำสั่ง "เขียนออก")
  • ระบบจะขอให้คุณยืนยัน "ชื่อไฟล์ที่จะเขียน" เพียงกด Enter
  • ตอนนี้ให้กด Ctrl + X เพื่อออก

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

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

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

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

2025-09-05T12:56:28.490964335Z INFO "Initialized 1 sources." 
2025-09-05T12:56:28.491127294Z INFO "Initialized 0 authServices." 
2025-09-05T12:56:28.491184521Z INFO "Initialized 2 tools." 
2025-09-05T12:56:28.491223782Z INFO "Initialized 2 toolsets." 
2025-09-05T12:56:28.497457533Z INFO "Server ready to serve!" 

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

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

มาใช้ Cloud Shell เพื่อทดสอบกัน

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

f990712162e8e924.png

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

d1b9de0c46ecef8a.png

ซึ่งควรให้ผลลัพธ์ต่อไปนี้

2fdcdac326034d41.png

ใน URL ของเบราว์เซอร์ ให้เพิ่มข้อความต่อไปนี้ต่อท้าย URL

/api/toolset

ซึ่งจะแสดงเครื่องมือที่กำหนดค่าไว้ในปัจจุบัน ตัวอย่างเอาต์พุตแสดงอยู่ด้านล่าง

{
  "serverVersion": "0.15.0+binary.linux.amd64.c934d7adfd4d012dab3f1707dc0adbdc7cb328cb",
  "tools": {
    "search-hotels-by-location": {
      "description": "Search for hotels based on location.  Result is sorted by price from least to most expensive.",
      "parameters": [
        {
          "name": "location",
          "type": "string",
          "required": true,
          "description": "The location of the hotel.",
          "authSources": []
        }
      ],
      "authRequired": []
    },
    "search-hotels-by-name": {
      "description": "Search for hotels based on name.",
      "parameters": [
        {
          "name": "name",
          "type": "string",
          "required": true,
          "description": "The name of the hotel.",
          "authSources": []
        }
      ],
      "authRequired": []
    }
  }
}

ทดสอบเครื่องมือผ่าน UI ของกล่องเครื่องมือ MCP สำหรับฐานข้อมูล

กล่องเครื่องมือมีอินเทอร์เฟซแบบภาพ (UI ของกล่องเครื่องมือ) เพื่อโต้ตอบกับเครื่องมือโดยตรงด้วยการแก้ไขพารามิเตอร์ จัดการส่วนหัว และเรียกใช้ ทั้งหมดนี้อยู่ใน UI เว็บที่เรียบง่าย

หากต้องการทดสอบ ให้เรียกใช้คำสั่งก่อนหน้าที่เราใช้เพื่อเปิดใช้เซิร์ฟเวอร์กล่องเครื่องมือด้วยตัวเลือก --ui

โดยให้ปิดอินสแตนซ์ก่อนหน้าของเซิร์ฟเวอร์ MCP Toolbox for Databases ที่คุณอาจเรียกใช้อยู่ แล้วป้อนคำสั่งต่อไปนี้

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

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

2025-09-08T02:44:11.561572538Z INFO "Initialized 1 sources." 
2025-09-08T02:44:11.561966395Z INFO "Initialized 0 authServices." 
2025-09-08T02:44:11.562060934Z INFO "Initialized 2 tools." 
2025-09-08T02:44:11.562105678Z INFO "Initialized 2 toolsets." 
2025-09-08T02:44:11.568209923Z INFO "Server ready to serve!" 
2025-09-08T02:44:11.568259411Z INFO "Toolbox UI is up and running at: http://localhost:5000/ui" 

คลิก URL ของ UI และตรวจสอบว่าคุณมี

/ui

ที่ส่วนท้ายของ URL (หากคุณเรียกใช้คำสั่งนี้ใน Cloud Shell การเปลี่ยนเส้นทางของเบราว์เซอร์จะทำให้ไม่มี /ui ที่ส่วนท้าย) ซึ่งจะแสดง UI ดังที่แสดงด้านล่าง

f8161552c17f0832.png

คลิกตัวเลือกเครื่องมือทางด้านซ้ายเพื่อดูเครื่องมือที่กำหนดค่าไว้ ในกรณีของเรา ควรมี 2 รายการ ได้แก่ search-hotels-by-name และ search-hotels-by-location ดังที่แสดงด้านล่าง

b28da918b1214e0b.png

เพียงคลิกเครื่องมือใดเครื่องมือหนึ่ง (search-hotels-by-location) ระบบจะแสดงหน้าเว็บให้คุณทดสอบเครื่องมือโดยระบุค่าพารามิเตอร์ที่จำเป็น แล้วคลิกเรียกใช้เครื่องมือเพื่อดูผลลัพธ์ ตัวอย่างการเรียกใช้แสดงอยู่ด้านล่าง

6947e028a3ef1f30.png

นอกจากนี้ ชุดเครื่องมือ MCP สำหรับฐานข้อมูลยังอธิบายวิธีแบบ Pythonic ในการตรวจสอบและทดสอบเครื่องมือ ซึ่งมีการบันทึกไว้ที่นี่

หากย้อนกลับไปดูแผนภาพจากก่อนหน้านี้ (ดังที่แสดงด้านล่าง) ตอนนี้เราได้ตั้งค่าฐานข้อมูลและเซิร์ฟเวอร์ MCP เสร็จแล้ว และมี 2 เส้นทางอยู่ตรงหน้า

c0f0b173ef2cdc70.png

  1. หากต้องการดูวิธีกำหนดค่าเซิร์ฟเวอร์ MCP เป็นเทอร์มินัล / IDE ที่มี AI ช่วย ให้ไปที่ขั้นตอนที่ 6 ซึ่งจะครอบคลุมวิธีที่เราผสานรวมเซิร์ฟเวอร์กล่องเครื่องมือ MCP เข้ากับ Gemini CLI
  2. หากต้องการดูวิธีใช้ Agent Development Kit (ADK) โดยใช้ Python เพื่อเขียนเอเจนต์ของคุณเองที่ใช้ประโยชน์จาก MCP Server Toolbox เป็นเครื่องมือในการตอบคำถามที่เกี่ยวข้องกับชุดข้อมูล ให้ไปที่ขั้นตอนที่ 7 และ 8

6. การผสานรวมกล่องเครื่องมือ MCP ใน Gemini CLI

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

เนื่องจากเรามีเซิร์ฟเวอร์ MCP ที่ใช้งานได้ เป้าหมายในส่วนนี้คือการกำหนดค่ากล่องเครื่องมือ MCP สำหรับเซิร์ฟเวอร์ฐานข้อมูลใน Gemini CLI แล้วใช้ Gemini CLI เพื่อสื่อสารกับข้อมูลของเรา

ขั้นตอนแรกของเราคือการยืนยันว่าคุณมีกล่องเครื่องมือที่พร้อมใช้งานในเทอร์มินัล Cloud Shell อย่างน้อย 1 เทอร์มินัล หากคุณเรียกใช้ในพอร์ตเริ่มต้น 5000 อินเทอร์เฟซเซิร์ฟเวอร์ MCP จะพร้อมใช้งานที่ปลายทาง http://localhost:5000/mcp

เปิดเทอร์มินัลใหม่และสร้างโฟลเดอร์ชื่อ my-gemini-cli-project ดังนี้ ไปที่โฟลเดอร์ my-gemini-cli-project ด้วย

mkdir my-gemini-cli-project
cd my-gemini-cli-project

ป้อนคำสั่งต่อไปนี้เพื่อเพิ่มเซิร์ฟเวอร์ MCP ลงในรายการเซิร์ฟเวอร์ MCP ที่กำหนดค่าใน Gemini CLI

gemini mcp add --scope="project" --transport="http" "MCPToolbox" "http://localhost:5000/mcp"

คุณตรวจสอบรายการเซิร์ฟเวอร์ MCP ปัจจุบันที่กำหนดค่าใน Gemini CLI ได้โดยใช้คำสั่งต่อไปนี้

gemini mcp list

คุณควรเห็น MCPToolbox ที่เรากำหนดค่าไว้พร้อมเครื่องหมายถูกสีเขียวข้างๆ ซึ่งแสดงว่า Gemini CLI เชื่อมต่อกับเซิร์ฟเวอร์ MCP ได้

Configured MCP servers:

✓ MCPToolbox: http://localhost:5000/mcp (http) - Connected

จากเทอร์มินัลเดียวกัน ให้ตรวจสอบว่าคุณอยู่ในโฟลเดอร์ my-gemini-cli-project เปิดใช้ Gemini CLI ผ่านคำสั่ง gemini

ซึ่งจะแสดงอินเทอร์เฟซ CLI ของ Gemini และคุณจะเห็นว่าตอนนี้มีการกำหนดค่าเซิร์ฟเวอร์ MCP 1 เครื่องแล้ว คุณใช้คําสั่ง /mcp list เพื่อดูรายการเซิร์ฟเวอร์ MCP และเครื่องมือได้ เช่น ตัวอย่างเอาต์พุตมีดังนี้

85777a91507a84d3.png

ตอนนี้คุณสามารถป้อนพรอมต์ต่อไปนี้ได้

  1. Which hotels are there in Basel?
  2. Tell me more about the Hyatt Regency?

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

7. การเขียน Agent ด้วย Agent Development Kit (ADK)

ติดตั้ง Agent Development Kit (ADK)

เปิดแท็บเทอร์มินัลใหม่ใน Cloud Shell แล้วสร้างโฟลเดอร์ชื่อ my-agents ดังนี้ ไปที่โฟลเดอร์ my-agents ด้วย

mkdir my-agents
cd my-agents

ตอนนี้มาสร้างสภาพแวดล้อมเสมือนของ Python โดยใช้ venv ดังนี้

python -m venv .venv

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

source .venv/bin/activate

ติดตั้งแพ็กเกจ ADK และ MCP Toolbox for Databases พร้อมกับการอ้างอิง Langchain ดังนี้

pip install google-adk toolbox-core

ตอนนี้คุณจะเรียกใช้ยูทิลิตี adk ได้ดังนี้

adk

โดยจะแสดงรายการคำสั่งให้คุณ

$ adk
Usage: adk [OPTIONS] COMMAND [ARGS]...

  Agent Development Kit CLI tools.

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  api_server  Starts a FastAPI server for agents.
  create      Creates a new app in the current folder with prepopulated agent template.
  deploy      Deploys agent to hosted environments.
  eval        Evaluates an agent given the eval sets.
  run         Runs an interactive CLI for a certain agent.
  web         Starts a FastAPI server with Web UI for agents.

การสร้างแอปพลิเคชันตัวแทนแรก

ตอนนี้เราจะใช้ adk เพื่อสร้างโครงร่างสำหรับแอปพลิเคชันตัวแทนโรงแรมผ่านคำสั่ง adk create โดยมีชื่อแอปเป็น **(hotel-agent-app)**ดังที่ระบุไว้ด้านล่าง

adk create hotel-agent-app

ทำตามขั้นตอนและเลือกตัวเลือกต่อไปนี้

  • โมเดล Gemini สำหรับเลือกโมเดลสำหรับ Agent รูท
  • เลือก Vertex AI สำหรับแบ็กเอนด์
  • ระบบจะแสดงรหัสโปรเจ็กต์ Google และภูมิภาคเริ่มต้น เลือกค่าเริ่มต้น
Choose a model for the root agent:
1. gemini-2.5-flash
2. Other models (fill later)

Choose model (1, 2): 1
1. Google AI
2. Vertex AI
Choose a backend (1, 2): 2

You need an existing Google Cloud account and project, check out this link for details:
https://google.github.io/adk-docs/get-started/quickstart/#gemini---google-cloud-vertex-ai

Enter Google Cloud project ID [YOUR_PROJECT_ID]: 
Enter Google Cloud region [us-central1]: 

Agent created in <YOUR_HOME_FOLDER>/my-agents/hotel-agent-app:
- .env
- __init__.py
- agent.py

สังเกตโฟลเดอร์ที่สร้างเทมเพลตเริ่มต้นและไฟล์ที่จำเป็นสำหรับเอเจนต์

อันดับแรกคือไฟล์ .env โดยมีเนื้อหาดังนี้

GOOGLE_GENAI_USE_VERTEXAI=1
GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_PROJECT_ID
GOOGLE_CLOUD_LOCATION=YOUR_GOOGLE_PROJECT_REGION

ค่าเหล่านี้บ่งบอกว่าเราจะใช้ Gemini ผ่าน Vertex AI พร้อมกับค่าที่เกี่ยวข้องสำหรับรหัสโปรเจ็กต์และตำแหน่ง Google Cloud

จากนั้นเราก็มีไฟล์ __init__.py ซึ่งทำเครื่องหมายโฟลเดอร์เป็นโมดูลและมีคำสั่งเดียวที่นำเข้าเอเจนต์จากไฟล์ agent.py

from . import agent

สุดท้าย มาดูไฟล์ agent.py กัน เนื้อหาจะแสดงด้านล่าง

from google.adk.agents import Agent

root_agent = Agent(
    model='gemini-2.5-flash',
    name='root_agent',
    description='A helpful assistant for user questions.',
    instruction='Answer user questions to the best of your knowledge',
)

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

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

มาแก้ไขโค้ดสำหรับ agent.py ดังนี้

from google.adk.agents import Agent

root_agent = Agent(
    model='gemini-2.5-flash',
    name='hotel_agent',
    description='A helpful assistant that answers questions about a specific city.',
    instruction='Answer user questions about a specific city to the best of your knowledge. Do not answer questions outside of this.',
)

ทดสอบแอป Agent ในเครื่อง

จากหน้าต่างเทอร์มินัลที่มีอยู่ ให้ป้อนคำสั่งต่อไปนี้ ตรวจสอบว่าคุณอยู่ในโฟลเดอร์หลัก (my-agents) ที่มีโฟลเดอร์ hotel-agent-app

adk web

ตัวอย่างการดำเนินการแสดงอยู่ด้านล่าง

INFO:     Started server process [1478]
INFO:     Waiting for application startup.

+-----------------------------------------------------------------------------+
| ADK Web Server started                                                      |
|                                                                             |
| For local testing, access at http://127.0.0.1:8000.                         |
+-----------------------------------------------------------------------------+

INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

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

7a86abae03cc297d.png

โปรดสังเกตว่าระบบได้ระบุ hotel-agent-app ที่ด้านซ้ายบนแล้ว ตอนนี้คุณสามารถเริ่มสนทนากับ Agent ได้แล้ว ป้อนพรอมต์ 2-3 รายการเพื่อสอบถามเกี่ยวกับเมือง ตัวอย่างการสนทนาแสดงอยู่ด้านล่าง

b732feb383668869.png

คุณปิดกระบวนการที่ทำงานในเทอร์มินัล Cloud Shell ได้ (Ctrl-C)

อีกวิธีในการทดสอบ Agent คือใช้คำสั่ง adk run ดังที่ระบุไว้ด้านล่างจากโฟลเดอร์ my-agents

adk run hotel-agent-app

ลองใช้คำสั่งนี้ แล้วคุณจะสนทนากับ Agent ผ่านบรรทัดคำสั่ง (เทอร์มินัล) ได้ พิมพ์ exit เพื่อปิดการสนทนา

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

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

ในกรณีนี้ เราจะติดตั้งเครื่องมือที่กำหนดค่าไว้ในกล่องเครื่องมือ MCP สำหรับฐานข้อมูลให้กับเอเจนต์

แก้ไขไฟล์ agent.py ด้วยโค้ดต่อไปนี้ โปรดทราบว่าเราใช้พอร์ตเริ่มต้น 5000 ในโค้ด แต่หากคุณใช้หมายเลขพอร์ตอื่น โปรดใช้หมายเลขนั้น

from google.adk.agents import Agent
from toolbox_core import ToolboxSyncClient

toolbox = ToolboxSyncClient("http://127.0.0.1:5000")

# Load single tool
# tools = toolbox.load_tool('search-hotels-by-location')

# Load all the tools
tools = toolbox.load_toolset('my_first_toolset')

root_agent = Agent(
    name="hotel_agent",
    model="gemini-2.5-flash",
    description=(
        "Agent to answer questions about hotels in a city or hotels by name."
    ),
    instruction=(
        "You are a helpful agent who can answer user questions about the hotels in a specific city or hotels by name. Use the tools to answer the question"
    ),
    tools=tools,
)

ตอนนี้เราสามารถทดสอบเอเจนต์ที่จะดึงข้อมูลจริงจากฐานข้อมูล PostgreSQL ที่กำหนดค่าด้วย MCP Toolbox for Databases ได้แล้ว

โดยทำตามลำดับต่อไปนี้

ในเทอร์มินัลหนึ่งของ Cloud Shell ให้เปิดใช้กล่องเครื่องมือ MCP สำหรับฐานข้อมูล คุณอาจเรียกใช้ในเครื่องที่พอร์ต 5000 อยู่แล้วเนื่องจากเราได้ทดสอบไปก่อนหน้านี้ หากไม่ได้ใช้ ให้เรียกใช้คำสั่งต่อไปนี้ (จากโฟลเดอร์ mcp-toolbox) เพื่อเริ่มเซิร์ฟเวอร์

./toolbox --tools_file "tools.yaml"

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

2025-09-05T12:56:28.490964335Z INFO "Initialized 1 sources." 
2025-09-05T12:56:28.491127294Z INFO "Initialized 0 authServices." 
2025-09-05T12:56:28.491184521Z INFO "Initialized 2 tools." 
2025-09-05T12:56:28.491223782Z INFO "Initialized 2 toolsets." 
2025-09-05T12:56:28.497457533Z INFO "Server ready to serve!" 

เมื่อเซิร์ฟเวอร์ MCP เริ่มทำงานเรียบร้อยแล้ว ให้เปิดใช้เอเจนต์ในเทอร์มินัลอื่นตามที่เราได้ทำไปก่อนหน้านี้ผ่านคำสั่ง adk run (จากโฟลเดอร์ my-agents) ที่แสดงด้านล่าง คุณยังใช้คำสั่ง adk web ได้ด้วยหากต้องการ

$ adk run hotel-agent-app/

Log setup complete: /tmp/agents_log/agent.20250423_170001.log
To access latest log: tail -F /tmp/agents_log/agent.latest.log
Running agent hotel_agent, type exit to exit.

user: what can you do for me?
[hotel_agent]: I can help you find hotels in a specific city or search for hotels by name.

user: I would like to search for hotels
[hotel_agent]: Great, do you have a specific city or hotel name in mind?

user: Yes a specific city
[hotel_agent]: Great, which city are you interested in?

user: Basel
[hotel_agent]: OK. I found three hotels in Basel: Hilton Basel, Hyatt Regency Basel, and Holiday Inn Basel.

โปรดสังเกตว่าตอนนี้เอเจนต์ใช้เครื่องมือ 2 อย่างที่เรากำหนดค่าไว้ในกล่องเครื่องมือ MCP สำหรับฐานข้อมูล (search-hotels-by-name และ search-hotels-by-location) และให้ตัวเลือกที่ถูกต้องแก่เรา จากนั้นจะดึงข้อมูลจากฐานข้อมูลอินสแตนซ์ PostgreSQL และจัดรูปแบบการตอบกลับได้อย่างราบรื่น

การดำเนินการนี้จะทำให้การพัฒนาและการทดสอบเอเจนต์โรงแรมที่เราสร้างขึ้นโดยใช้ Agent Development Kit (ADK) และขับเคลื่อนด้วยเครื่องมือที่เรากำหนดค่าไว้ใน MCP Toolbox สำหรับฐานข้อมูลเสร็จสมบูรณ์

9. (ไม่บังคับ) การติดตั้งใช้งานกล่องเครื่องมือ MCP สำหรับฐานข้อมูลและ Agent ไปยัง Cloud Run

ในส่วนก่อนหน้า เราใช้เทอร์มินัล Cloud Shell เพื่อเปิดใช้เซิร์ฟเวอร์ MCP Toolbox และทดสอบเครื่องมือกับ Agent ซึ่งทำงานในสภาพแวดล้อม Cloud Shell ในเครื่อง

คุณมีตัวเลือกในการติดตั้งใช้งานทั้งเซิร์ฟเวอร์ MCP Toolbox และ Agent กับบริการของ Google Cloud ที่โฮสต์แอปพลิเคชันเหล่านี้ให้เราได้

การโฮสต์เซิร์ฟเวอร์กล่องเครื่องมือ MCP ใน Cloud Run

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

เปิดใช้เทอร์มินัล Cloud Shell ใหม่หรือใช้เทอร์มินัล Cloud Shell ที่มีอยู่ ไปที่โฟลเดอร์ mcp-toolbox ซึ่งมีไบนารี toolbox และ tools.yaml

เรียกใช้คำสั่งต่อไปนี้ (มีคำอธิบายสำหรับแต่ละคำสั่ง)

ตั้งค่าตัวแปร PROJECT_ID ให้ชี้ไปยังรหัสโปรเจ็กต์ Google Cloud

export PROJECT_ID="YOUR_GOOGLE_CLOUD_PROJECT_ID" 

จากนั้น ตรวจสอบว่าได้เปิดใช้บริการ Google Cloud ต่อไปนี้ในโปรเจ็กต์แล้ว

gcloud services enable run.googleapis.com \
                       cloudbuild.googleapis.com \
                       artifactregistry.googleapis.com \
                       iam.googleapis.com \
                       secretmanager.googleapis.com

มาสร้างบัญชีบริการแยกต่างหากที่จะทำหน้าที่เป็นข้อมูลประจำตัวสำหรับบริการกล่องเครื่องมือที่เราจะทำให้ใช้งานได้ใน Google Cloud Run กัน นอกจากนี้ เรายังตรวจสอบว่าบัญชีบริการนี้มีบทบาทที่ถูกต้อง เช่น ความสามารถในการเข้าถึง Secret Manager และสื่อสารกับ Cloud SQL

gcloud iam service-accounts create toolbox-identity

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/cloudsql.client

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

gcloud secrets create tools --data-file=tools.yaml

export IMAGE=us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:latest

ขั้นตอนสุดท้ายในคำสั่งการติดตั้งใช้งานที่คุ้นเคยไปยัง 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

ตอนนี้คุณไปที่ Service URL ที่ระบุไว้ด้านบนในเบราว์เซอร์ได้แล้ว โดยควรแสดงข้อความ "Hello World" ที่เราเห็นก่อนหน้านี้ นอกจากนี้ คุณยังไปที่ URL ต่อไปนี้เพื่อดูเครื่องมือที่พร้อมใช้งานได้ด้วย

SERVICE URL/api/toolset

นอกจากนี้ คุณยังไปที่ Cloud Run จากคอนโซล Google Cloud ได้ด้วย และจะเห็นบริการกล่องเครื่องมือในรายการบริการใน Cloud Run

หมายเหตุ: หากยังต้องการเรียกใช้ Hotel Agent ในเครื่องและเชื่อมต่อกับบริการ Cloud Run ที่เพิ่งติดตั้งใช้งาน คุณเพียงแค่ต้องทำการเปลี่ยนแปลงอย่างเดียวในไฟล์ my-agents/hotel-agent-app/agent.py

แทนที่จะใช้

toolbox = ToolboxSyncClient("http://127.0.0.1:5000")

เปลี่ยนเป็น URL ของบริการของบริการ Cloud Run ดังที่ระบุไว้ด้านล่าง

toolbox = ToolboxSyncClient("CLOUD_RUN_SERVICE_URL")

ทดสอบแอปพลิเคชันตัวแทนโดยใช้ adk run หรือ adk web ตามที่เราเห็นก่อนหน้านี้

การติดตั้งใช้งานแอปตัวแทนโรงแรมใน Cloud Run

ขั้นตอนแรกคือการตรวจสอบว่าคุณได้ทำการเปลี่ยนแปลงใน my-agents/hotel-agent-app/agent.py ตามที่อธิบายไว้ข้างต้นเพื่อให้ชี้ไปยัง URL ของบริการกล่องเครื่องมือที่ทำงานใน Cloud Run ไม่ใช่โฮสต์ในเครื่อง

ในเทอร์มินัล Cloud Shell ใหม่หรือเซสชันเทอร์มินัลที่มีอยู่ ให้ตรวจสอบว่าคุณอยู่ในสภาพแวดล้อมเสมือนของ Python ที่ถูกต้องซึ่งเราได้ตั้งค่าไว้ก่อนหน้านี้

ก่อนอื่นเรามาสร้างไฟล์ requirements.txt ในโฟลเดอร์ my-agents/hotel-agent-app ดังที่แสดงด้านล่าง

google-adk
toolbox-core

ไปที่โฟลเดอร์ my-agents แล้วตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้ก่อน

export GOOGLE_CLOUD_PROJECT=YOUR_GOOGLE_CLOUD_PROJECT_ID
export GOOGLE_CLOUD_LOCATION=us-central1
export AGENT_PATH="hotel-agent-app/"
export SERVICE_NAME="hotels-service"
export APP_NAME="hotels-app"
export GOOGLE_GENAI_USE_VERTEXAI=True

สุดท้ายนี้ มาทำให้แอปพลิเคชัน Agent ใช้งานได้ใน Cloud Run ผ่านคำสั่ง adk deploy cloud_run ดังที่ระบุไว้ด้านล่าง หากระบบขอให้คุณอนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์ไปยังบริการ โปรดระบุ "y" เป็นค่าในตอนนี้

adk deploy cloud_run \
--project=$GOOGLE_CLOUD_PROJECT \
--region=$GOOGLE_CLOUD_LOCATION \
--service_name=$SERVICE_NAME  \
--app_name=$APP_NAME \
--with_ui \
$AGENT_PATH

ซึ่งจะเริ่มกระบวนการติดตั้งใช้งานแอปพลิเคชันตัวแทนโรงแรมใน Cloud Run โดยจะอัปโหลดแหล่งที่มา จัดแพ็กเกจเป็นคอนเทนเนอร์ Docker พุชไปยัง Artifact Registry แล้วทำให้บริการใช้งานได้ใน Cloud Run การดำเนินการนี้อาจใช้เวลาสักครู่ โปรดอดทนรอ

คุณควรเห็นข้อความที่คล้ายกับข้อความด้านล่าง

Start generating Cloud Run source files in /tmp/cloud_run_deploy_src/20250905_132636
Copying agent source code...
Copying agent source code completed.
Creating Dockerfile...
Creating Dockerfile complete: /tmp/cloud_run_deploy_src/20250905_132636/Dockerfile
Deploying to Cloud Run...
Building using Dockerfile and deploying container to Cloud Run service [hotels-service] in project [YOUR_PROJECT_ID] region [us-central1]
-  Building and deploying... Uploading sources.                                                                                                                          
  -  Uploading sources...                                                                                                                                                
  .  Building Container...                                                                                                                                               
OK Building and deploying... Done.                                                                                                                                       
  OK Uploading sources...                                                                                                                                                
  OK Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds;region=us-central1/d1f7e76b-0587-4bb6-b9c0-bb4360c07aa0?project=415
  458962931].                                                                                                                                                            f
  OK Creating Revision...                                                                                                                                                
  OK Routing traffic...                                                                                                                                                  
Done.                                                                                                                                                                    
Service [hotels-service] revision [hotels-service-00003-hrl] has been deployed and is serving 100 percent of traffic.
Service URL: <YOUR_CLOUDRUN_APP_URL>
INFO: Display format: "none"
Cleaning up the temp folder: /tmp/cloud_run_deploy_src/20250905_132636

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

56bc8b29fa9c9989.png

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

คุณควรลบทรัพยากรที่เราสร้างขึ้นในเวิร์กช็อปนี้เพื่อหลีกเลี่ยงการเรียกเก็บเงินอย่างต่อเนื่องในบัญชี Google Cloud เราจะลบอินสแตนซ์ Cloud SQL และหากคุณทำให้ Toolbox และแอปโรงแรมใช้งานได้ใน Cloud Run เราก็จะลบบริการเหล่านั้นด้วย

ตรวจสอบว่าได้ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้อย่างถูกต้องตามโปรเจ็กต์และภูมิภาคของคุณ

export PROJECT_ID="YOUR_PROJECT_ID"
export REGION="YOUR_REGION"

คำสั่ง 2 รายการต่อไปนี้จะลบบริการ Cloud Run ที่เราได้ติดตั้งใช้งาน

gcloud run services delete toolbox --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet

gcloud run services delete hotels-service --platform=managed --region=${REGION} --project=${PROJECT_ID} --quiet

คำสั่งต่อไปนี้จะลบอินสแตนซ์ Cloud SQL

gcloud sql instances delete hoteldb-instance

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

ขอแสดงความยินดี คุณสร้างเอเจนต์โดยใช้ Agent Development Kit (ADK) ที่ใช้กล่องเครื่องมือ MCP สำหรับฐานข้อมูลได้สำเร็จแล้ว

เอกสารอ้างอิง