เกี่ยวกับ Codelab นี้
1 ภาพรวม
ตัวแทนคือโปรแกรมอิสระที่สื่อสารกับโมเดล AI เพื่อดําเนินการตามเป้าหมายโดยใช้เครื่องมือและบริบทที่มี และสามารถตัดสินใจด้วยตนเองโดยอิงตามข้อเท็จจริง
เมื่อแอปพลิเคชันของคุณมีตัวแทนหลายรายที่ทำงานร่วมกันอย่างอิสระและร่วมกันตามที่จำเป็นเพื่อตอบสนองวัตถุประสงค์ที่ใหญ่ขึ้น โดยมีตัวแทนแต่ละรายที่มีความรู้และรับผิดชอบต่อพื้นที่โฟกัสที่เฉพาะเจาะจงอย่างอิสระ แอปพลิเคชันของคุณก็จะกลายเป็นระบบหลายตัวแทน
ชุดเครื่องมือสำหรับนักพัฒนาแอปตัวแทน (ADK)
Agent Development Kit (ADK) เป็นเฟรมเวิร์กแบบโมดูลที่ยืดหยุ่นสําหรับการพัฒนาและใช้งานตัวแทน AI ADK รองรับการสร้างแอปพลิเคชันที่ซับซ้อนโดยการคอมโพสิทอินสแตนซ์เอเจนต์ที่ต่างกันหลายรายการเป็นระบบเอเจนต์หลายตัว (MAS)
ใน ADK ระบบหลายเอเจนต์คือแอปพลิเคชันที่เอเจนต์ต่างๆ ซึ่งมักจะมีลําดับชั้น ทำงานร่วมกันหรือประสานงานเพื่อให้บรรลุเป้าหมายที่ใหญ่ขึ้น การจัดโครงสร้างแอปพลิเคชันด้วยวิธีนี้มีข้อดีที่สำคัญหลายประการ ซึ่งรวมถึงการแยกโมดูล ความเป็นเฉพาะทาง ความสามารถในการนํากลับมาใช้ซ้ำ ความสามารถในการบำรุงรักษา และความสามารถในการกําหนดโฟลว์การควบคุมที่มีโครงสร้างโดยใช้ตัวแทนเวิร์กโฟลว์เฉพาะ
สิ่งที่ควรทราบสำหรับระบบหลายตัวแทน
ก่อนอื่น คุณควรทำความเข้าใจและพิจารณาความเชี่ยวชาญของตัวแทนแต่ละคนอย่างเหมาะสม — "คุณทราบไหมว่าเหตุใดจึงต้องใช้ตัวแทนย่อยที่เฉพาะเจาะจงสำหรับบางสิ่ง" ให้หาคำตอบก่อน
ข้อที่ 2 วิธีรวมข้อมูลเหล่านี้เข้ากับตัวแทนรูทเพื่อกำหนดเส้นทางและทําความเข้าใจคําตอบแต่ละรายการ
ข้อที่สาม การกำหนดเส้นทางตัวแทนมีหลายประเภทที่คุณสามารถดูได้ในเอกสารประกอบนี้ ตรวจสอบว่าตัวเลือกใดเหมาะกับขั้นตอนการสมัครของคุณ รวมถึงบริบทและสถานะต่างๆ ที่จําเป็นสําหรับการควบคุมโฟลว์ของระบบหลายตัวแทน
สิ่งที่คุณจะสร้าง
มาสร้างระบบหลายตัวแทนเพื่อจัดการการปรับปรุงห้องครัวกัน เราจะทำอย่างนั้น เราจะสร้างระบบที่มีตัวแทน 3 คน
- ตัวแทนยื่นข้อเสนอการปรับปรุง
- ตัวแทนการตรวจสอบใบอนุญาตและการปฏิบัติตามข้อกำหนด
- ตัวแทนตรวจสอบสถานะการสั่งซื้อ
ตัวแทนของข้อเสนอการปรับปรุงเพื่อสร้างเอกสารข้อเสนอการปรับปรุงห้องครัว
ตัวแทนด้านใบอนุญาตและการปฏิบัติตามข้อกำหนด เพื่อดูแลงานที่เกี่ยวข้องกับใบอนุญาตและการปฏิบัติตามข้อกำหนด
Order Status Check Agent เพื่อตรวจสอบสถานะการสั่งซื้อของวัสดุโดยทำงานกับฐานข้อมูลการจัดการคำสั่งซื้อที่เราตั้งค่าไว้ใน AlloyDB
เราจะให้มีตัวแทนรูทที่จัดการตัวแทนเหล่านี้ตามข้อกำหนด
ข้อกำหนด
2 ก่อนเริ่มต้น
สร้างโปรเจ็กต์
- ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
- ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าเปิดใช้การเรียกเก็บเงินในโปรเจ็กต์หรือไม่
นอกจากนี้ หากคุณกำลังอ่านบทความนี้และต้องการเครดิตบางส่วนเพื่อช่วยในการเริ่มต้นใช้งาน Google Cloud และ ADK ให้ใช้ลิงก์นี้เพื่อแลกรับเครดิต คุณทำตามวิธีการที่นี่เพื่อแลกสิทธิ์รับข้อเสนอได้ โปรดทราบว่าลิงก์นี้ใช้ได้สำหรับการแลกสิทธิ์จนถึงสิ้นเดือนพฤษภาคมเท่านั้น
- เปิดใช้งาน Cloud Shell โดยคลิกลิงก์นี้ คุณสลับระหว่าง Cloud Shell Terminal (สําหรับการเรียกใช้คําสั่งระบบคลาวด์) กับ Editor (สําหรับการสร้างโปรเจ็กต์) ได้โดยคลิกปุ่มที่เกี่ยวข้องจาก Cloud Shell
- เมื่อเชื่อมต่อกับ Cloud Shell แล้ว ให้ตรวจสอบว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์ของคุณโดยใช้คําสั่งต่อไปนี้
gcloud auth list
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
- หากยังไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คําสั่งต่อไปนี้เพื่อตั้งค่า
gcloud config set project <YOUR_PROJECT_ID>
- ตรวจสอบว่าคุณมี Python 3.9 ขึ้นไป
- เปิดใช้ API ต่อไปนี้โดยเรียกใช้คําสั่งต่อไปนี้
gcloud services enable artifactregistry.googleapis.com \cloudbuild.googleapis.com \run.googleapis.com \aiplatform.googleapis.com
- โปรดดูคำสั่งและการใช้งาน 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 ซึ่งมีความสามารถในการให้เหตุผลในตัวและรับคำขอบริบทแบบยาวได้
ดูตัวอย่างคำตอบด้านล่าง
AI Studio วิเคราะห์ข้อมูลของฉันและสร้างสิ่งต่างๆ เหล่านี้ เช่น ตู้ โต๊ะ ผนังกันน้ำ พื้น อ่างน้ำ ความกลมกลืน ชุดสี และการเลือกวัสดุ Gemini ยังอ้างอิงแหล่งที่มาด้วย
ทําซ้ำด้วยรูปแบบต่างๆ จนกว่าคุณจะพอใจกับผลลัพธ์ แต่เราขอแนะนำให้ใช้ Gemini 2.5 ไปเลย :)
อย่างไรก็ตาม ลองดูว่าไอเดียนี้เป็นอย่างไรเมื่อใช้พรอมต์อื่น
Add flat and circular light accessories above the island area for my current kitchen in the attached image.
แนบลิงก์ไปยังรูปภาพห้องครัวปัจจุบันของคุณ (หรือรูปภาพตัวอย่างห้องครัว) เปลี่ยนรูปแบบเป็น "การสร้างรูปภาพตัวอย่าง Flash ของ Gemini 2.0" เพื่อให้คุณมีสิทธิ์สร้างรูปภาพ
ฉันได้รับเอาต์พุตนี้
นี่คือความสามารถของ Gemini
ตั้งแต่การทำความเข้าใจวิดีโอ การสร้างรูปภาพในแบบของคุณ ไปจนถึงการอ้างอิงข้อมูลจริงด้วย Google Search ล้วนเป็นสิ่งต่างๆ ที่สร้างขึ้นได้ด้วย Gemini เท่านั้น
จาก AI Studio คุณสามารถนําโปรโตไทป์นี้ไปรับคีย์ API และปรับขนาดเป็นแอปพลิเคชันตัวแทนแบบเต็มได้โดยใช้ความสามารถของ Vertex AI ADK
4 การตั้งค่า ADK
- สร้างและเปิดใช้งานสภาพแวดล้อมเสมือน (แนะนำ)
สร้างสภาพแวดล้อมเสมือนจากเทอร์มินัล Cloud Shell โดยทำดังนี้
python -m venv .venv
เปิดใช้งานสภาพแวดล้อมเสมือน ดังนี้
source .venv/bin/activate
- ติดตั้ง ADK
pip install google-adk
5 โครงสร้างโปรเจ็กต์
- จาก Terminal ของ Cloud Shell ให้สร้างไดเรกทอรีในตำแหน่งโปรเจ็กต์ที่ต้องการ
mkdir agentic-apps
cd agentic-apps
mkdir renovation-agent
- ไปที่เครื่องมือแก้ไขของ Cloud Shell และสร้างโครงสร้างโปรเจ็กต์ต่อไปนี้โดยสร้างไฟล์ (เริ่มแรกให้ว่างเปล่า)
renovation-agent/
__init__.py
agent.py
.env
requirements.txt
6 ซอร์สโค้ด
- ไปที่ "init.py" แล้วอัปเดตด้วยเนื้อหาต่อไปนี้
from . import agent
- ไปที่ agent.py แล้วอัปเดตไฟล์ด้วยเนื้อหาต่อไปนี้จากเส้นทางต่อไปนี้
https://github.com/AbiramiSukumaran/adk-renovation-agent/blob/main/agent.py
ใน agent.py เราจะนําเข้าทรัพยากร Dependency ที่จําเป็น ดึงข้อมูลพารามิเตอร์การกําหนดค่าจากไฟล์ .env และกำหนด root_agent ซึ่งจัดระเบียบเอเจนต์ย่อย 3 ตัวที่เราตั้งเป้าจะสร้างในแอปพลิเคชันนี้ มีเครื่องมือหลายอย่างที่จะช่วยเกี่ยวกับฟังก์ชันหลักและฟังก์ชันสนับสนุนของตัวแทนย่อยเหล่านี้
- ตรวจสอบว่าคุณมีที่เก็บข้อมูล Cloud Storage
ฟิลด์นี้มีไว้สำหรับจัดเก็บเอกสารข้อเสนอที่ตัวแทนสร้างขึ้น สร้างและมอบสิทธิ์เข้าถึงเพื่อให้ระบบหลายตัวแทนที่สร้างด้วย Vertex AI สามารถเข้าถึงได้ โดยวิธีดำเนินการมีดังนี้
https://cloud.google.com/storage/docs/creating-buckets#console
ตั้งชื่อที่เก็บข้อมูลเป็น "next-demo-store
" หากคุณตั้งชื่อเป็นอย่างอื่น อย่าลืมอัปเดตค่า STORAGE_BUCKET ในไฟล์ .env (ในขั้นตอนการตั้งค่าตัวแปร ENV)
- หากต้องการตั้งค่าการเข้าถึงที่เก็บข้อมูล ให้ไปที่คอนโซล Cloud 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.
- สร้างรายการทรัพยากร Dependency
แสดงรายการ Dependency ทั้งหมดใน requirements.txt คุณคัดลอกข้อมูลนี้ได้จาก repo
คําอธิบายซอร์สโค้ดระบบหลายตัวแทน
ไฟล์ agent.py จะกำหนดโครงสร้างและลักษณะการทํางานของระบบหลายตัวแทนในการปรับปรุงห้องครัวโดยใช้ Agent Development Kit (ADK) มาดูองค์ประกอบหลักๆ กัน
คําจํากัดความของตัวแทน
RenovationProposalAgent
ตัวแทนรายนี้มีหน้าที่รับผิดชอบในการสร้างเอกสารข้อเสนอการปรับปรุงห้องครัว โดยอาจใช้พารามิเตอร์อินพุต เช่น ขนาดห้องครัว สไตล์ที่ต้องการ งบประมาณ และความต้องการของลูกค้า โดยใช้โมเดลภาษาขนาดใหญ่ (LLM) Gemini 2.5 เพื่อสร้างข้อเสนอโดยละเอียดตามข้อมูลนี้ จากนั้นระบบจะจัดเก็บข้อเสนอที่สร้างขึ้นไว้ในที่เก็บข้อมูล Google Cloud Storage
PermitsAndComplianceCheckAgent
ตัวแทนรายนี้มุ่งเน้นที่การตรวจสอบว่าโปรเจ็กต์การปรับปรุงเป็นไปตามกฎระเบียบและข้อบังคับด้านอาคารในพื้นที่ โดยระบบจะรับข้อมูลเกี่ยวกับการปรับปรุงที่เสนอ (เช่น การเปลี่ยนแปลงโครงสร้าง งานระบบไฟฟ้า การแก้ไขระบบประปา) และใช้ LLM เพื่อตรวจสอบข้อกำหนดของใบอนุญาตและกฎการปฏิบัติตามข้อกำหนด โดยตัวแทนจะใช้ข้อมูลจากฐานความรู้ (ซึ่งคุณปรับแต่งให้เข้าถึง API ภายนอกเพื่อรวบรวมกฎระเบียบที่เกี่ยวข้องได้)
OrderingAgent
ตัวแทนนี้ (คุณสามารถยกเลิกการคอมเมนต์ได้หากไม่ต้องการใช้ในตอนนี้) จะจัดการกับการตรวจสอบสถานะการสั่งซื้อของวัสดุและอุปกรณ์ที่จําเป็นสําหรับการปรับปรุง หากต้องการเปิดใช้ คุณต้องสร้างฟังก์ชัน Cloud Run ตามที่อธิบายไว้ในขั้นตอนการตั้งค่า จากนั้นตัวแทนจะเรียกใช้ฟังก์ชัน Cloud Run นี้ ซึ่งโต้ตอบกับฐานข้อมูล AlloyDB ที่มีข้อมูลคำสั่งซื้อ การดำเนินการนี้แสดงการผสานรวมกับระบบฐานข้อมูลเพื่อติดตามข้อมูลแบบเรียลไทม์
ตัวแทนรูท (Orchestrator)
root_agent จะทำหน้าที่เป็นผู้ควบคุมระบบหลาย Agent โดยจะรับคําขอการปรับปรุงครั้งแรกและระบุตัวแทนย่อยที่จะเรียกใช้ตามความต้องการในคําขอ ตัวอย่างเช่น หากคำขอต้องการตรวจสอบข้อกำหนดของใบอนุญาต ระบบจะเรียกใช้ PermitsAndComplianceCheckAgent หากผู้ใช้ต้องการตรวจสอบสถานะการสั่งซื้อ ระบบจะเรียกใช้ OrderingAgent (หากเปิดใช้)
จากนั้น root_agent จะรวบรวมคำตอบจากตัวแทนย่อยและรวมเข้าด้วยกันเพื่อให้คำตอบที่ครอบคลุมแก่ผู้ใช้ ซึ่งอาจรวมถึงการสรุปข้อเสนอ แสดงใบอนุญาตที่จำเป็น และแจ้งข้อมูลอัปเดตสถานะการสั่งซื้อ
ขั้นตอนการส่งข้อมูลและแนวคิดหลัก
ผู้ใช้ส่งคำขอผ่านอินเทอร์เฟซ ADK (เทอร์มินัลหรือ UI ของเว็บ)
- root_agent ได้รับคําขอ
- root_agent จะวิเคราะห์คําขอและส่งต่อไปยังตัวแทนย่อยที่เหมาะสม
- โดยตัวแทนย่อยจะใช้ LLM, ฐานความรู้, API และฐานข้อมูลเพื่อประมวลผลคำขอและสร้างคำตอบ
- ตัวแทนย่อยจะส่งการตอบกลับไปยัง root_agent
- root_agent จะรวมคำตอบและแสดงผลลัพธ์สุดท้ายแก่ผู้ใช้
LLM (โมเดลภาษาขนาดใหญ่)
โดยตัวแทนเหล่านี้อาศัย LLM เป็นอย่างมากในการสร้างข้อความ ตอบคำถาม และทำงานเชิงตรรกะ LLM เป็น "สมอง" ที่อยู่เบื้องหลังความสามารถของตัวแทนในการเข้าใจและตอบสนองต่อคําขอของผู้ใช้ เราใช้ Gemini 2.5 ในแอปพลิเคชันนี้
Google Cloud Storage
ใช้เพื่อจัดเก็บเอกสารคําเสนอการปรับปรุงที่สร้างขึ้น คุณต้องสร้างที่เก็บข้อมูลและมอบสิทธิ์ที่จำเป็นเพื่อให้ตัวแทนเข้าถึงที่เก็บข้อมูลได้
Cloud Run (ไม่บังคับ)
OrderingAgent ใช้ฟังก์ชัน Cloud Run เพื่อเชื่อมต่อกับ AlloyDB Cloud Run มีสภาพแวดล้อมแบบ Serverless เพื่อเรียกใช้โค้ดเพื่อตอบสนองต่อคำขอ HTTP
AlloyDB
หากใช้ OrderingAgent คุณจะต้องตั้งค่าฐานข้อมูล AlloyDB เพื่อจัดเก็บข้อมูลคำสั่งซื้อ เราจะอธิบายรายละเอียดในส่วนถัดไปซึ่งก็คือ "การตั้งค่าฐานข้อมูล"
ไฟล์.env
ไฟล์ .env จะจัดเก็บข้อมูลที่ละเอียดอ่อน เช่น คีย์ API, ข้อมูลเข้าสู่ระบบฐานข้อมูล และชื่อที่เก็บข้อมูล คุณจึงต้องรักษาไฟล์นี้ให้ปลอดภัยและอย่าคอมมิตไฟล์นี้ไปยังที่เก็บ รวมถึงจัดเก็บการตั้งค่าการกําหนดค่าสําหรับตัวแทนและโปรเจ็กต์ Google Cloud ด้วย โดยปกติแล้ว root_agent หรือฟังก์ชันสนับสนุนจะอ่านค่าจากไฟล์นี้ ตรวจสอบว่าตัวแปรที่จําเป็นทั้งหมดได้รับการตั้งค่าอย่างถูกต้องในไฟล์ .env ซึ่งรวมถึงชื่อที่เก็บข้อมูล Cloud Storage
7 การตั้งค่าฐานข้อมูล
ในเครื่องมือชื่อ "check_status" ซึ่งเป็นหนึ่งในเครื่องมือที่ ordering_agent ใช้ เราจะเข้าถึงฐานข้อมูลคำสั่งซื้อ AlloyDB เพื่อดูสถานะคำสั่งซื้อ ในส่วนนี้ เราจะตั้งค่าคลัสเตอร์และอินสแตนซ์ฐานข้อมูล AlloyDB
สร้างคลัสเตอร์และอินสแตนซ์
- ไปยังหน้า AlloyDB ใน Cloud Console วิธีที่ง่ายในการค้นหาหน้าส่วนใหญ่ใน Cloud Console คือค้นหาโดยใช้แถบค้นหาของคอนโซล
- เลือกสร้างคลัสเตอร์จากหน้านั้น
- คุณจะเห็นหน้าจอดังภาพด้านล่าง สร้างคลัสเตอร์และอินสแตนซ์ด้วยค่าต่อไปนี้ (ตรวจสอบว่าค่าตรงกันในกรณีที่คุณทำโคลนโค้ดแอปพลิเคชันจากรีโป)
- cluster id: "
vector-cluster
" - password: "
alloydb
" - PostgreSQL 15 / เวอร์ชันล่าสุดที่แนะนำ
- ภูมิภาค: "
us-central1
" - เครือข่าย: "
default
"
- เมื่อเลือกเครือข่ายเริ่มต้น คุณจะเห็นหน้าจอดังภาพด้านล่าง
เลือกตั้งค่าการเชื่อมต่อ
- จากนั้นเลือก "ใช้ช่วง IP ที่มีการจัดสรรโดยอัตโนมัติ" แล้วดำเนินการต่อ หลังจากตรวจสอบข้อมูลแล้ว ให้เลือกสร้างการเชื่อมต่อ
- เมื่อตั้งค่าเครือข่ายแล้ว คุณก็สร้างคลัสเตอร์ต่อได้ คลิกสร้างคลัสเตอร์เพื่อตั้งค่าคลัสเตอร์ให้เสร็จสมบูรณ์ตามที่แสดงด้านล่าง
อย่าลืมเปลี่ยนรหัสอินสแตนซ์ (ซึ่งคุณดูได้ในขณะกำหนดค่าคลัสเตอร์ / อินสแตนซ์) เป็น
vector-instance
หากเปลี่ยนไม่ได้ โปรดอย่าลืมใช้รหัสอินสแตนซ์ในการอ้างอิงทั้งหมดที่จะเกิดขึ้น
โปรดทราบว่าการสร้างคลัสเตอร์จะใช้เวลาประมาณ 10 นาที เมื่อดำเนินการเสร็จเรียบร้อยแล้ว คุณควรเห็นหน้าจอที่แสดงภาพรวมของคลัสเตอร์ที่คุณเพิ่งสร้างขึ้น
การนำเข้าข้อมูล
ตอนนี้ถึงเวลาเพิ่มตารางที่มีข้อมูลเกี่ยวกับร้านค้า ไปที่ AlloyDB เลือกคลัสเตอร์หลัก แล้วเลือก AlloyDB Studio
คุณอาจต้องรอให้อินสแตนซ์สร้างเสร็จ เมื่อสร้างแล้ว ให้ลงชื่อเข้าใช้ AlloyDB โดยใช้ข้อมูลเข้าสู่ระบบที่คุณสร้างขึ้นเมื่อสร้างคลัสเตอร์ ใช้ข้อมูลต่อไปนี้เพื่อตรวจสอบสิทธิ์ใน PostgreSQL
- ชื่อผู้ใช้ : "
postgres
" - ฐานข้อมูล : "
postgres
" - รหัสผ่าน : "
alloydb
"
เมื่อตรวจสอบสิทธิ์เข้าสู่ AlloyDB Studio เรียบร้อยแล้ว ให้ป้อนคำสั่ง SQL ในเครื่องมือแก้ไข คุณสามารถเพิ่มหน้าต่างเครื่องมือแก้ไขได้หลายหน้าต่างโดยใช้เครื่องหมายบวกทางด้านขวาของหน้าต่างสุดท้าย
คุณจะป้อนคำสั่งสำหรับ 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 Functions เพื่อดึงข้อมูลสถานะกัน
สร้างฟังก์ชัน Cloud Run ใน Java เพื่อดึงข้อมูลสถานะการสั่งซื้อ
- สร้างฟังก์ชัน Cloud Run ได้จากที่นี่ https://console.cloud.google.com/run/create?deploymentType=function
- ตั้งชื่อฟังก์ชันเป็น "check-status" และเลือก "Java 17" เป็นรันไทม์
- คุณสามารถตั้งค่าการตรวจสอบสิทธิ์เป็น "อนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์" ได้เนื่องจากเป็นแอปพลิเคชันสาธิต
- เลือก Java 17 เป็นรันไทม์และเครื่องมือแก้ไขอินไลน์สำหรับซอร์สโค้ด
- เมื่อถึงจุดนี้ ระบบจะโหลดโค้ดตัวยึดตําแหน่งในเครื่องมือแก้ไข
แทนที่โค้ดตัวยึดตำแหน่ง
- เปลี่ยนชื่อไฟล์ Java เป็น "ProposalOrdersTool.java" และชื่อคลาสเป็น "ProposalOrdersTool"
- แทนที่โค้ดตัวยึดตําแหน่งใน ProposalOrdersTool.java และ pom.xml ด้วยโค้ดจากไฟล์ที่เกี่ยวข้องในโฟลเดอร์ "Cloud Run Function" ใน repo นี้
- ใน ProposalOrdersTool.java ให้ค้นหาบรรทัดโค้ดต่อไปนี้ แล้วแทนที่ค่าตัวยึดตําแหน่งด้วยค่าจากการกําหนดค่า
String ALLOYDB_INSTANCE_NAME = "projects/<<YOUR_PROJECT_ID>>/locations/us-central1/clusters/<<YOUR_CLUSTER>>/instances/<<YOUR_INSTANCE>>";
- คลิกสร้าง
- ระบบจะสร้างและติดตั้งใช้งานฟังก์ชัน Cloud Run
ขั้นตอนสำคัญ:
เมื่อทำให้ใช้งานได้แล้ว เราจะสร้างเครื่องมือเชื่อมต่อ VPC เพื่อให้ Cloud Function เข้าถึงอินสแตนซ์ฐานข้อมูล AlloyDB ได้
เมื่อพร้อมใช้งานแล้ว คุณควรจะเห็นฟังก์ชันในคอนโซล Google Cloud Run Functions ค้นหาฟังก์ชันที่สร้างขึ้นใหม่ (check-status) คลิกฟังก์ชันนั้น แล้วคลิกแก้ไขและทําให้ใช้งานได้ในเวอร์ชันที่แก้ไขใหม่ (ระบุโดยไอคอนแก้ไข (ปากกา) ที่ด้านบนของคอนโซลฟังก์ชัน Cloud Run) แล้วทําการเปลี่ยนแปลงต่อไปนี้
- ไปที่แท็บ "การสร้างเครือข่าย"
- เลือก "เชื่อมต่อกับ VPC สําหรับการรับส่งข้อมูลขาออก" แล้วเลือก "ใช้เครื่องมือเชื่อมต่อการเข้าถึง VPC แบบ Serverless"
- ในส่วนการตั้งค่าแบบเลื่อนลงของเครือข่าย ให้คลิกเมนูแบบเลื่อนลงของเครือข่าย แล้วเลือกตัวเลือก "เพิ่มตัวเชื่อมต่อ VPC ใหม่" (หากคุณยังไม่ได้กำหนดค่าตัวเชื่อมต่อเริ่มต้น) แล้วทำตามวิธีการที่คุณเห็นในกล่องโต้ตอบที่ปรากฏขึ้น
- ตั้งชื่อเครื่องมือเชื่อมต่อ VPC และตรวจสอบว่าภูมิภาคตรงกับอินสแตนซ์ของคุณ ปล่อยให้ค่าเครือข่ายเป็นค่าเริ่มต้นและตั้งค่าซับเน็ตเป็นช่วง IP ที่กําหนดเองซึ่งมีช่วง IP ของ 10.8.0.0 หรือค่าที่คล้ายกันซึ่งพร้อมใช้งาน
- ขยาย "แสดงการตั้งค่าการปรับขนาด" และตรวจสอบว่าคุณได้กำหนดค่าเป็นค่าต่อไปนี้อย่างถูกต้อง
- คลิกสร้าง แล้วเครื่องมือเชื่อมต่อนี้จะแสดงอยู่ในการตั้งค่าการส่งออก
- เลือกเครื่องมือเชื่อมต่อที่สร้างขึ้นใหม่
- เลือกให้กำหนดเส้นทางการรับส่งข้อมูลทั้งหมดผ่านเครื่องมือเชื่อมต่อ VPC นี้
- คลิกถัดไป แล้วคลิกทำให้ใช้งานได้
- เมื่อมีการทําให้ Cloud Function ที่อัปเดตแล้วใช้งานได้ คุณจะเห็นปลายทางที่สร้างขึ้น
- คุณควรทดสอบได้โดยคลิกปุ่มทดสอบที่ด้านบนของคอนโซล Cloud Run Functions และเรียกใช้คำสั่งที่ได้ในเทอร์มินัล Cloud Shell
- ปลายทางที่ติดตั้งใช้งานคือ URL ที่คุณจําเป็นต้องอัปเดตในตัวแปร .env
CHECK_ORDER_STATUS_ENDPOINT
8 การตั้งค่าโมเดล
ความสามารถของตัวแทนในการเข้าใจคําขอของผู้ใช้และสร้างคําตอบนั้นขับเคลื่อนโดยโมเดลภาษาขนาดใหญ่ (LLM) ตัวแทนของคุณต้องทำการเรียกใช้บริการ LLM ภายนอกนี้อย่างปลอดภัย ซึ่งต้องใช้ข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ หากไม่มีการตรวจสอบสิทธิ์ที่ถูกต้อง บริการ LLM จะปฏิเสธคําขอของตัวแทน และตัวแทนจะทํางานไม่ได้
- รับคีย์ API จาก Google AI Studio
- ในขั้นตอนถัดไปที่คุณตั้งค่าไฟล์ .env ให้แทนที่
<<your API KEY>>
ด้วยค่าคีย์ API จริง
9 การตั้งค่าตัวแปร ENV
- ตั้งค่าพารามิเตอร์ในไฟล์ .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 เรียกใช้ตัวแทน
- ใช้เทอร์มินัลเพื่อไปยังไดเรกทอรีหลักของโปรเจ็กต์ตัวแทน โดยทำดังนี้
cd renovation-agent
- ติดตั้ง Dependency ทั้งหมด
pip install -r requirements.txt
- คุณสามารถเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล Cloud Shell เพื่อเรียกใช้ Agent
adk run .
- คุณเรียกใช้คำสั่งต่อไปนี้เพื่อเรียกใช้ใน UI ของเว็บที่เตรียมไว้ของ ADK ได้
adk web
- ทดสอบด้วยพรอมต์ต่อไปนี้
user>>
Hello. Generate Proposal Document for the kitchen remodel requirement. I have no other specification.
12 การติดตั้งใช้งานใน Agent Engine
เมื่อทดสอบแล้วว่าระบบหลายตัวแทนทํางานได้อย่างถูกต้องแล้ว มาทําให้ระบบเป็นแบบ 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 ตัวเลือกการติดตั้งใช้งานแบบบรรทัดเดียว
เมื่อทดสอบระบบหลายตัวแทนที่ติดตั้งใช้งานแล้ว มาเรียนรู้วิธีการที่ง่ายขึ้นซึ่งจะอธิบายขั้นตอนการติดตั้งใช้งานที่เราทําในขั้นตอนก่อนหน้า นั่นคือตัวเลือกการติดตั้งใช้งานบรรทัดเดียว
- ไปยัง 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
คุณใช้ปลายทางที่ติดตั้งใช้งานสำหรับการผสานรวมดาวน์สตรีมได้
- สำหรับ 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 Engine UI ภายในคอนโซล Google Cloud ดูรายละเอียดเพิ่มเติมได้ที่บล็อกนี้
14 ล้างข้อมูล
โปรดทำตามขั้นตอนต่อไปนี้เพื่อเลี่ยงไม่ให้เกิดการเรียกเก็บเงินกับบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในโพสต์นี้
- ในคอนโซล Google Cloud ให้ไปที่หน้าจัดการทรัพยากร
- ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
- ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเพื่อลบโปรเจ็กต์
15 ขอแสดงความยินดี
ยินดีด้วย คุณสร้างและโต้ตอบกับตัวแทนคนแรกโดยใช้ ADK เรียบร้อยแล้ว