แอปหลาย Agent ที่มี ADK, Agent Engine และ AlloyDB

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 เพื่อจัดการการปรับปรุงห้องครัวกัน เราจะสร้างระบบที่มี Agent 3 ตัว

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

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

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

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

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

ข้อกำหนด

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

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

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

  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. ตรวจสอบว่าคุณมี Python 3.9 ขึ้นไป
  2. เปิดใช้ API ต่อไปนี้โดยการเรียกใช้คำสั่งต่อไปนี้
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com
  1. โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ

3. ต้นแบบ

คุณข้ามขั้นตอนนี้ได้หากตัดสินใจใช้โมเดล "Gemini 2.5 Pro" สำหรับโปรเจ็กต์

ไปที่ Google AI Studio เริ่มพิมพ์พรอมต์ พรอมต์ของฉันมีดังนี้

I want to renovate my kitchen, basically just remodel it. I don't know where to start. So I want to use Gemini to generate a plan. For that I need a good prompt. Give me a short yet detailed prompt that I can use.

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

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

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

ดูข้อมูลโค้ดของคำตอบด้านล่าง

a80d4bad4b3864f7.png

AI Studio วิเคราะห์ข้อมูลของฉันและสร้างสิ่งต่างๆ เหล่านี้ เช่น ตู้ เคาน์เตอร์ แผ่นกันน้ำกระเด็น พื้น อ่างล้างหน้า ความสอดคล้อง ชุดสี และการเลือกวัสดุ Gemini ยังอ้างอิงแหล่งที่มาด้วย

ทำซ้ำโดยเลือกโมเดลอื่นๆ จนกว่าคุณจะพอใจกับผลลัพธ์ แต่ฉันจะบอกว่าทำไมต้องทำทั้งหมดนั้นในเมื่อคุณมี Gemini 2.5 :)

อย่างไรก็ตาม ตอนนี้ลองดูไอเดียที่กลายเป็นจริงด้วยพรอมต์อื่นกัน

Add flat and circular light accessories above the island area for my current kitchen in the attached image.

แนบลิงก์ไปยังรูปภาพของห้องครัวปัจจุบัน (หรือรูปภาพตัวอย่างห้องครัว) เปลี่ยนโมเดลเป็น "Gemini 2.0 Flash Preview Image Generation" เพื่อให้คุณมีสิทธิ์สร้างรูปภาพ

ฉันได้รับเอาต์พุตนี้

b5b1e83fcada28f5.png

นี่แหละคือพลังของ Gemini

ตั้งแต่การทำความเข้าใจวิดีโอไปจนถึงการสร้างรูปภาพโดยตรงและการเชื่อมต่อแหล่งข้อมูลจริงด้วย Google Search มีหลายสิ่งหลายอย่างที่สร้างขึ้นด้วย Gemini เท่านั้น

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

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
        requirements.txt

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 sub-agent ที่เราตั้งใจจะสร้างในแอปพลิเคชันนี้ มีเครื่องมือหลายอย่างที่จะช่วยในฟังก์ชันหลักและฟังก์ชันสนับสนุนของตัวแทนย่อยเหล่านี้

  1. ตรวจสอบว่าคุณมี Bucket ของ Cloud Storage

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

https://cloud.google.com/storage/docs/creating-buckets#console

ตั้งชื่อ Bucket เป็น "next-demo-store" หากตั้งชื่อเป็นอย่างอื่น อย่าลืมอัปเดตค่าของ STORAGE_BUCKET ในไฟล์ .env (ในขั้นตอนการตั้งค่าตัวแปร ENV)

  1. หากต้องการตั้งค่าการเข้าถึง Bucket ให้ไปที่คอนโซลของ Cloud Storage และไปที่ Storage Bucket (ในกรณีนี้ ชื่อ Bucket คือ "next-demo-storage": https://console.cloud.google.com/storage/browser/next-demo-storage

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

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.
  1. สร้างรายการทรัพยากร Dependency

แสดงรายการทรัพยากร Dependency ทั้งหมดใน requirements.txt คุณคัดลอกข้อมูลนี้ได้จาก repo

คำอธิบายซอร์สโค้ดของระบบแบบหลาย Agent

ไฟล์ agent.py จะกำหนดโครงสร้างและลักษณะการทำงานของระบบ Multi-Agent สำหรับการปรับปรุงห้องครัวโดยใช้ Agent Development Kit (ADK) มาดูองค์ประกอบหลักกัน

คำจำกัดความของ Agent

RenovationProposalAgent

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

PermitsAndComplianceCheckAgent

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

OrderingAgent

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

Agent รูท (Orchestrator)

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

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

การไหลเวียนของข้อมูลและแนวคิดหลัก

ผู้ใช้เริ่มคำขอผ่านอินเทอร์เฟซ ADK (ทั้งเทอร์มินัลหรือ UI บนเว็บ)

  1. root_agent ได้รับคำขอแล้ว
  2. root_agent จะวิเคราะห์คำขอและกำหนดเส้นทางไปยังตัวแทนย่อยที่เหมาะสม
  3. เอเจนต์ย่อยจะใช้ LLM, ฐานความรู้, API และฐานข้อมูลเพื่อประมวลผลคำขอและสร้างคำตอบ
  4. เอเจนต์ย่อยจะส่งคำตอบกลับไปยัง root_agent
  5. root_agent จะรวมคำตอบและแสดงเอาต์พุตสุดท้ายต่อผู้ใช้

LLM (โมเดลภาษาขนาดใหญ่)

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

Google Cloud Storage

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

Cloud Run (ไม่บังคับ)

OrderingAgent ใช้ฟังก์ชัน Cloud Run เพื่อเชื่อมต่อกับ AlloyDB Cloud Run มีสภาพแวดล้อมแบบ Serverless สำหรับเรียกใช้โค้ดเพื่อตอบสนองต่อคำขอ HTTP

AlloyDB

หากใช้ OrderingAgent คุณจะต้องตั้งค่าฐานข้อมูล AlloyDB เพื่อจัดเก็บข้อมูลคำสั่งซื้อ เราจะพูดถึงรายละเอียดในส่วนถัดไปซึ่งก็คือ "การตั้งค่าฐานข้อมูล"

ไฟล์.env

ไฟล์ .env จะจัดเก็บข้อมูลที่ละเอียดอ่อน เช่น คีย์ API, ข้อมูลเข้าสู่ระบบฐานข้อมูล และชื่อ Bucket คุณต้องเก็บไฟล์นี้ไว้อย่างปลอดภัยและไม่ส่งไปยังที่เก็บ นอกจากนี้ยังจัดเก็บการตั้งค่ากำหนดค่าสำหรับ Agent และโปรเจ็กต์ที่อยู่ในระบบคลาวด์ Google Cloud ด้วย โดยปกติแล้ว ฟังก์ชัน root_agent หรือฟังก์ชันสนับสนุนจะอ่านค่าจากไฟล์นี้ ตรวจสอบว่าได้ตั้งค่าตัวแปรที่จำเป็นทั้งหมดอย่างถูกต้องในไฟล์ .env ซึ่งรวมถึงชื่อ Bucket ของ Cloud Storage

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

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

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

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

f76ff480c8c889aa.png

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

538dba58908162fb.png

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

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

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

e06623e55195e16e.png

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

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

โปรดทราบว่าการสร้างคลัสเตอร์จะใช้เวลาประมาณ 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 ที่กล่าวถึงข้างต้นไปยังเครื่องมือแก้ไข

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

เมื่อชุดข้อมูลพร้อมแล้ว มาสร้างแอปพลิเคชันฟังก์ชัน Java Cloud Run เพื่อดึงข้อมูลสถานะกัน

สร้างฟังก์ชัน Cloud Run ใน Java เพื่อดึงข้อมูลสถานะการสั่งซื้อ

  1. สร้างฟังก์ชัน Cloud Run จากที่นี่: https://console.cloud.google.com/run/create?deploymentType=function
  2. ตั้งชื่อฟังก์ชันเป็น "check-status" และเลือก "Java 17" เป็นรันไทม์
  3. คุณตั้งค่าการตรวจสอบสิทธิ์เป็น "อนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์" ได้เนื่องจากเป็นแอปพลิเคชันสาธิต
  4. เลือก Java 17 เป็นรันไทม์และ Inline Editor สำหรับซอร์สโค้ด
  5. ตอนนี้ระบบจะโหลดโค้ดตัวยึดตำแหน่งในเอดิเตอร์

แทนที่โค้ดตัวยึดตำแหน่ง

  1. เปลี่ยนชื่อไฟล์ Java เป็น "ProposalOrdersTool.java" และชื่อคลาสเป็น "ProposalOrdersTool"
  2. แทนที่โค้ดตัวยึดตำแหน่งใน ProposalOrdersTool.java และ pom.xml ด้วยโค้ดจากไฟล์ที่เกี่ยวข้องในโฟลเดอร์ "Cloud Run Function" ในที่เก็บนี้
  3. ใน ProposalOrdersTool.java ให้ค้นหาบรรทัดโค้ดต่อไปนี้ แล้วแทนที่ค่าตัวยึดตำแหน่งด้วยค่าจากการกำหนดค่าของคุณ
String ALLOYDB_INSTANCE_NAME = "projects/<<YOUR_PROJECT_ID>>/locations/us-central1/clusters/<<YOUR_CLUSTER>>/instances/<<YOUR_INSTANCE>>";
  1. คลิกสร้าง
  2. ระบบจะสร้างและติดตั้งใช้งานฟังก์ชัน Cloud Run

ขั้นตอนสำคัญ:

เมื่อติดตั้งใช้งานแล้ว เราจะสร้างเครื่องมือเชื่อมต่อ VPC เพื่ออนุญาตให้ Cloud Function เข้าถึงอินสแตนซ์ฐานข้อมูล AlloyDB

เมื่อพร้อมที่จะทําการติดตั้งใช้งานแล้ว คุณควรจะเห็นฟังก์ชันในคอนโซลฟังก์ชันของ Google Cloud Run ค้นหาฟังก์ชันที่สร้างขึ้นใหม่ (check-status) คลิกฟังก์ชันนั้น แล้วคลิกแก้ไขและติดตั้งใช้งานรีวิชันใหม่ (ระบุโดยไอคอนแก้ไข (ปากกา) ที่ด้านบนของคอนโซลฟังก์ชัน Cloud Run) แล้วเปลี่ยนข้อมูลต่อไปนี้

  1. ไปที่แท็บการสร้างเครือข่าย

828cd861864d99ea.png

  1. เลือก "เชื่อมต่อกับ VPC สำหรับการรับส่งข้อมูลขาออก" แล้วเลือก "ใช้เครื่องมือเชื่อมต่อการเข้าถึง VPC แบบ Serverless"
  2. ในการตั้งค่าเมนูแบบเลื่อนลงของเครือข่าย ให้คลิกเมนูแบบเลื่อนลงของเครือข่าย แล้วเลือกตัวเลือก "เพิ่มตัวเชื่อมต่อ VPC ใหม่" (หากยังไม่ได้กำหนดค่าตัวเชื่อมต่อ default) แล้วทำตามวิธีการที่แสดงในกล่องโต้ตอบที่ปรากฏขึ้น

6559ccfd10e597f2.png

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

199b0ccd80215004.png

  1. คลิกสร้าง แล้วตัวเชื่อมต่อนี้ควรแสดงในการตั้งค่าขาออกแล้ว
  2. เลือกเครื่องมือเชื่อมต่อที่สร้างขึ้นใหม่
  3. เลือกให้กำหนดเส้นทางการรับส่งข้อมูลทั้งหมดผ่านเครื่องมือเชื่อมต่อ VPC นี้
  4. คลิกถัดไป แล้วคลิกติดตั้งใช้งาน
  5. เมื่อติดตั้งใช้งาน Cloud Function ที่อัปเดตแล้ว คุณจะเห็นปลายทางที่สร้างขึ้น
  6. คุณควรทดสอบได้โดยคลิกปุ่มทดสอบที่ด้านบนของคอนโซล Cloud Run Functions และโดยการเรียกใช้คำสั่งที่ได้ในเทอร์มินัล Cloud Shell
  7. ปลายทางที่ติดตั้งใช้งานคือ URL ที่คุณต้องอัปเดตในตัวแปร .env CHECK_ORDER_STATUS_ENDPOINT

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

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

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

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

  1. ตั้งค่าสำหรับพารามิเตอร์ในไฟล์ .env ของเทมเพลตใน repo นี้ ในกรณีของฉัน ไฟล์ .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>>
CHECK_ORDER_STATUS_ENDPOINT=<<YOUR_ENDPOINT_TO_CLOUD FUNCTION_TO_READ_ORDER_DATA_FROM_ALLOYDB>>

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

10. เรียกใช้ 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. Generate Proposal Document for the kitchen remodel requirement. I have no other specification.

11. ผลลัพธ์

@ ระบบหลายเอเจนต์สำหรับงานปรับปรุงห้องครัว

623fa35fce53b51b.png

12. การทําให้ใช้งานได้กับ Agent Engine

ตอนนี้คุณได้ทดสอบระบบหลาย Agent ให้ทำงานได้ดีแล้ว มาทำให้ระบบนี้เป็นแบบ Serverless และพร้อมใช้งานในระบบคลาวด์เพื่อให้ทุกคน / แอปพลิเคชันใดๆ ใช้ได้กัน ยกเลิกการแสดงความคิดเห็นในข้อมูลโค้ดด้านล่างใน agent.py จากที่เก็บ แล้วคุณก็พร้อมที่จะทำให้ระบบแบบหลายเอเจนต์ใช้งานได้

# Agent Engine Deployment:
# Create a remote app for our multiagent with agent Engine.
# This may take 1-2 minutes to finish.
# Uncomment the below segment when you're ready to deploy.

app = AdkApp(
    agent=root_agent,
    enable_tracing=True,
)

vertexai.init(
    project=PROJECT_ID,
    location=GOOGLE_CLOUD_LOCATION,
    staging_bucket=STAGING_BUCKET,
)

remote_app = agent_engines.create(
    app,
    requirements=[
        "google-cloud-aiplatform[agent_engines,adk]>=1.88",
        "google-adk",
        "pysqlite3-binary",
        "toolbox-langchain==0.1.0",
        "pdfplumber",
        "google-cloud-aiplatform",
        "cloudpickle==3.1.1",
        "pydantic==2.10.6",
        "pytest",
        "overrides",
        "scikit-learn",
        "reportlab",
        "google-auth",
        "google-cloud-storage",
    ],
)
# Deployment to Agent Engine related code ends

เรียกใช้ agent.py จากภายในโฟลเดอร์โปรเจ็กต์อีกครั้งด้วยคำสั่งต่อไปนี้

>> cd adk-renovation-agent

>> python agent.py

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

'projects/123456789/locations/us-central1/reasoningEngines/123456'

คุณทดสอบเอเจนต์ที่ใช้งานจริงได้ด้วยโค้ดต่อไปนี้โดยการเพิ่มไฟล์ใหม่ชื่อ "test.py"

import vertexai
from vertexai.preview import reasoning_engines
from vertexai import agent_engines
import os
import warnings
from dotenv import load_dotenv
load_dotenv() 


GOOGLE_CLOUD_PROJECT = os.environ["GOOGLE_CLOUD_PROJECT"]
GOOGLE_CLOUD_LOCATION = os.environ["GOOGLE_CLOUD_LOCATION"]
GOOGLE_API_KEY = os.environ["GOOGLE_API_KEY"]
GOOGLE_GENAI_USE_VERTEXAI=os.environ["GOOGLE_GENAI_USE_VERTEXAI"]
AGENT_NAME = "adk_renovation_agent"
MODEL_NAME = "gemini-2.5-pro-preview-03-25" 
warnings.filterwarnings("ignore")
PROJECT_ID = GOOGLE_CLOUD_PROJECT

reasoning_engine_id = "<<YOUR_DEPLOYED_ENGINE_ID>>"

vertexai.init(project=PROJECT_ID, location="us-central1")
agent = agent_engines.get(reasoning_engine_id)
print("**********************")
print(agent)
print("**********************")


for event in agent.stream_query(
    user_id="test_user",
    message="I want you to check order status.",
):
    print(event)

ในโค้ดด้านบน ให้แทนที่ค่าสำหรับตัวยึดตำแหน่ง "<<YOUR_DEPLOYED_ENGINE_ID>>" แล้วเรียกใช้คำสั่ง "python test.py" จากนั้นคุณก็พร้อมที่จะดำเนินการนี้เพื่อโต้ตอบกับระบบหลายเอเจนต์ที่ใช้ Agent Engine และพร้อมที่จะปรับปรุงห้องครัวแล้ว!!!

13. ตัวเลือกการติดตั้งใช้งานแบบบรรทัดเดียว

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

  1. ไปยัง Cloud Run:

ไวยากรณ์:

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=<<YOUR_SERVICE_NAME>> \
--app_name=<<YOUR_APP_NAME>> \
--with_ui \
./<<YOUR_AGENT_PROJECT_NAME>>

ในกรณีนี้

adk deploy cloud_run \
--project=<<YOUR_PROJECT_ID>> \
--region=us-central1 \
--service_name=renovation-agent \
--app_name=renovation-app \
--with_ui \
./renovation-agent

คุณใช้ปลายทางที่ติดตั้งใช้งานสำหรับการผสานรวมดาวน์สตรีมได้

  1. ถึง Agent Engine:

ไวยากรณ์:

adk deploy agent_engine \
  --project <your-project-id> \
  --region us-central1 \
  --staging_bucket gs://<your-google-cloud-storage-bucket> \
  --trace_to_cloud \
  path/to/agent/folder

ในกรณีนี้

adk deploy agent_engine --project <<YOUR_PROJECT_ID>> --region us-central1 --staging_bucket gs://<<YOUR_BUCKET_NAME>> --trace_to_cloud renovation-agent

คุณควรเห็น Agent ใหม่ใน UI ของ Agent Engine ภายใน คอนโซล Google Cloud ดูรายละเอียดเพิ่มเติมได้ที่บล็อกนี้

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

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

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

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

ยินดีด้วย คุณสร้างและโต้ตอบกับเอเจนต์ตัวแรกโดยใช้ ADK ได้สำเร็จแล้ว