จากต้นแบบไปจนถึงตัวแทนด้วย ADK

จากต้นแบบไปจนถึงตัวแทนด้วย ADK

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

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

1 ภาพรวม

การสร้างด้วย AI เริ่มต้นอย่างไรในวันนี้ โดยทั่วไปแล้ว พวกเราส่วนใหญ่มักจะเริ่มต้นด้วยคำถามง่ายๆ อย่าง "โมเดลนี้ช่วยแก้ปัญหาที่ฉันคิดอยู่ได้ไหม" Google AI Studio เข้ามามีบทบาทตรงนี้ ซึ่งเป็นพื้นที่ที่คุณสามารถสร้างต้นแบบของสิ่งต่างๆ ได้อย่างรวดเร็ว ฉันอยากรีโนเวทห้องครัวและคิดว่า Gemini ช่วยได้ แต่ฉันเป็นวิศวกร ไม่ใช่ผู้รับเหมาทั่วไป เรายังไม่แน่ใจว่าควรขออะไรดี เพราะมีสิ่งต่างๆ ที่ต้องพิจารณามากมาย เช่น ข้อกำหนด อุปกรณ์ต่างๆ เป็นต้น ดังนั้นเรามาแยกประเด็นนี้ออกเป็นส่วนๆ และขอให้ Gemini สร้างพรอมต์ที่ละเอียดมากให้เรา จากนั้นสร้างแผนปรับปรุงทั้งหมดและแสดงภาพการปรับปรุงด้วย แต่เดี๋ยวก่อน ฉันจะช่วยเหลือธุรกิจให้เติบโตได้อย่างไร ป้อน AGENTS!!!

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

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

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

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

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

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

  1. สร้างตัวแทนง่ายๆ เพื่อสร้างเอกสารคําเสนอการปรับปรุงด้วย ADK
  2. จัดเก็บเอกสารคําเสนอการปรับปรุงที่สร้างขึ้นในที่เก็บข้อมูล Cloud Storage
  3. ทดสอบตัวแทนใน Cloud Shell และในเอาต์พุตเว็บของตัวแทน

ข้อกำหนด

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

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

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

  1. ในคอนโซล Google Cloud ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
  2. ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าเปิดใช้การเรียกเก็บเงินในโปรเจ็กต์หรือไม่
  3. นอกจากนี้ หากคุณกำลังอ่านบทความนี้และต้องการเครดิตเพื่อช่วยในการเริ่มต้นใช้งาน Google Cloud และ ADK ให้ใช้ลิงก์นี้เพื่อแลกรับเครดิต
  4. คุณทำตามวิธีการที่นี่ เพื่อแลกสิทธิ์รับข้อเสนอได้ โปรดทราบว่าลิงก์นี้จะใช้แลกสิทธิ์ได้จนถึงวันที่ 15 กรกฎาคม 2025 เท่านั้น
  5. เปิดใช้งาน Cloud Shell โดยคลิกลิงก์นี้ คุณสามารถสลับระหว่าง Cloud Shell Terminal (สําหรับการเรียกใช้คําสั่งระบบคลาวด์) กับ Editor (สําหรับการสร้างโปรเจ็กต์) ได้โดยคลิกปุ่มที่เกี่ยวข้องจาก Cloud Shell
  6. เมื่อเชื่อมต่อกับ 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 ขึ้นไป

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

3 ต้นแบบ

ไปที่ 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 ยังอ้างอิงแหล่งที่มาด้วย

ตอนนี้ลองดูว่าไอเดียนี้เป็นอย่างไรเมื่อใช้พรอมต์อื่น

  1. คัดลอกพรอมต์นี้และวางลงในเครื่องมือแก้ไขพรอมต์
Add flat and circular light accessories above the island area for my current kitchen in the attached image.
  1. แนบรูปภาพห้องครัวปัจจุบันของคุณ (หรือจะใช้รูปภาพห้องครัวตัวอย่างก็ได้)
  2. เปลี่ยนรูปแบบเป็น "การสร้างรูปภาพตัวอย่าง Flash ของ Gemini 2.0" เพื่อให้คุณมีสิทธิ์สร้างรูปภาพ

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

b5b1e83fcada28f5.png

นี่คือความสามารถของ Gemini

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

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

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

ตอนนี้ไปที่เทอร์มินัล Cloud Shell ที่เราเปิดใช้งานในส่วน "ก่อนเริ่มต้น"

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

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

python -m venv .venv

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

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

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

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

6 ซอร์สโค้ด

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

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

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

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

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

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

  1. หากต้องการตั้งค่าการเข้าถึงที่เก็บข้อมูล ให้ไปที่คอนโซล 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.
  1. สร้างรายการทรัพยากร Dependency

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

คำอธิบายซอร์สโค้ดของระบบตัวแทนเดียว

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

คำจำกัดความของตัวแทน

ตัวแทนรูท (Orchestrator): proposal_agent

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

จากนั้น root_agent จะรวบรวมคำตอบจากเครื่องมือต่างๆ และรวมเข้าด้วยกันเพื่อให้คำตอบที่ครอบคลุมแก่ผู้ใช้ ในกรณีนี้ เรามีเครื่องมือเพียงรายการเดียว "store_pdf"

7 ขั้นตอนการส่งข้อมูลและแนวคิดหลัก

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

  1. root_agent ได้รับคําขอ
  2. root_agent จะวิเคราะห์คําขอและส่งไปยังเครื่องมือตามที่จำเป็น
  3. เครื่องมือ "store_pdf" ออกแบบมาเพื่อเขียนเนื้อหาข้อความที่ปรับปรุงแล้วลงในไฟล์ PDF แล้วอัปโหลดไปยัง Google Cloud Storage
  4. จากนั้นจะแสดงผลลัพธ์ไปยัง root_agent
  5. 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

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>>

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

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

  1. ใช้เทอร์มินัลเพื่อไปยังไดเรกทอรีหลักของโปรเจ็กต์ตัวแทน โดยทำดังนี้
cd agentic-apps/renovation-agent
  1. ติดตั้ง Dependency ทั้งหมด
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 in a proper format that applies to a renovation contract. Remember this text will eventually be stored as a pdf file so make sure to have the formatting appropriate. I have no other specification.

11 ผลลัพธ์

สําหรับคําสั่ง adk run . ผลลัพธ์ดังต่อไปนี้"

ae50e6f6b2bab0a0.png

38a2c34667a8fd05.png

...

a8a39e8323d3ceb9.png

คุณสามารถตรวจสอบได้ว่ามีการสร้างเอกสารการเสนอการปรับปรุงใหม่ในที่เก็บข้อมูล Cloud Storage หรือไม่

12 ล้างข้อมูล

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

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

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

ยินดีด้วย คุณสร้างและโต้ตอบกับแอปหลายตัวแทนโดยใช้ ADK เรียบร้อยแล้ว ระบบตัวแทนหลายรายออกแบบมาเพื่อปรับปรุงกระบวนการปรับปรุงห้องครัวให้มีประสิทธิภาพยิ่งขึ้นด้วยการทำให้เป็นการทำงานอัตโนมัติ เช่น การสร้างข้อเสนอ การตรวจสอบใบอนุญาต และการติดตามสถานะการสั่งซื้อ โดยแต่ละเอเจนต์จะมีบทบาทที่เฉพาะเจาะจง และ root_agent จะประสานงานกิจกรรมต่างๆ เพื่อมอบโซลูชันที่ครอบคลุม ระบบใช้ประโยชน์จาก LLM, บริการ Google Cloud และ API ภายนอกที่อาจเป็นไปได้เพื่อมอบฟังก์ชันการทำงาน ที่นี่เป็นลิงก์ไปยังเอกสารประกอบของผลิตภัณฑ์