สร้างตัวแทนการท่องเที่ยวแบบง่ายด้วย ADK และ Gemini CLI

1. บทนำ

9344c1d1a9f221b7.png

อัปเดตล่าสุด: 22-06-2026

การสร้างตัวแทนท่องเที่ยวแบบง่ายด้วย ADK

ยินดีต้อนรับสู่เวิร์กช็อป Python(*) ของ ADK ซึ่งมาพร้อมกับเครื่องมือที่จำเป็นทั้งหมดด้วย Gemini CLI

Codelab นี้แบ่งออกเป็น 2 🏅 เป้าหมาย ดังนี้

  1. เส้นทางการเรียนรู้ที่พบบ่อยและเรียบง่ายคือ การตั้งค่า + ความพึงพอใจทันที
  2. เส้นทางการเรียนรู้ที่ปรับเปลี่ยนในแบบของคุณซึ่งคุณสามารถเลือกภารกิจที่จะแก้ปัญหาด้วยความช่วยเหลือของ Gemini CLI

ส่วนที่ 2 ทำให้ Codelab นี้เหมาะสำหรับแฮ็กกาธอน (และรางวัลสำหรับโซลูชันที่สร้างสรรค์ที่สุด)

เป้าหมายที่ 1: Agent แรกของคุณด้วย ADK และ Gemini CLI

เป้าหมายของเหตุการณ์สำคัญนี้คือการสร้างตัวแทนท่องเที่ยวแบบง่ายด้วย ADK ทีละขั้นตอน ในการดำเนินการดังกล่าว ก่อนอื่นเราต้องการตั้งค่า Gemini CLI เพื่อให้ช่วยเราเขียนโค้ดด้วย ADK ซึ่งจะทำให้ Shell ในเครื่องของคุณเลือก Python ADK เวอร์ชันล่าสุด, นำโค้ดและเอกสารมาใช้ และให้โค้ดล่าสุด/ดีที่สุดเพื่อทำงานร่วมกับ ADK เพื่อให้บรรลุเป้าหมายของคุณ

ส่วนนี้เป็นส่วนที่แนะนำโดยละเอียด ซึ่งเราจะสร้างแอปที่ทำงานได้อย่างสมบูรณ์ผ่านขั้นตอนเล็กๆ ที่เรียบง่าย โดยปกติแล้วขั้นตอนนี้จะใช้เวลาประมาณ 1 ชั่วโมง (บวกเวลาติดตั้ง)

เป้าหมายที่ 2: การขยาย Agent

หลังจากนั้น เราจะให้ตัวเลือก 12 รายการ (ที่มีความยากแตกต่างกัน) เพื่อขยายแอปตามที่คุณต้องการ ซึ่งจะช่วยให้คุณสำรวจแง่มุมต่างๆ (UI, การดำเนินการ, การโต้ตอบที่ซับซ้อนของ Agent ฯลฯ)

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

ใน Codelab นี้ คุณจะสร้างแอปตัวแทนท่องเที่ยวโดยใช้ ADK และ Gemini CLI แอปของคุณจะดำเนินการต่อไปนี้

  • เชื่อมต่อกับ API ของ Airbnb ผ่าน Airbnb MCP
  • ค้นหาข้อมูลล่าสุดทางออนไลน์ (สภาพอากาศ วันที่ ฯลฯ)
  • เรียกใช้เครื่องมือที่กำหนดเอง
  • สร้างภาพอพาร์ตเมนต์/ห้องพักโดยใช้ Nano Banana

Gemini CLI จะแนะนำคุณตลอดกระบวนการทั้งหมดนี้ ไม่ว่าจะเป็นการเขียน/ตรวจสอบโค้ด และค้นหาเอกสารล่าสุดในมิเรอร์ในเครื่องของที่เก็บ ADK (ใน Python หรือภาษาที่คุณชื่นชอบ)

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

  • วิธีสร้างและสร้างแอปด้วย ADK
  • วิธีใช้ Gemini CLI เพื่อเขียนโค้ดแอปโดยอิงตามเอกสารในเครื่อง
  • วิธีโต้ตอบกับเซิร์ฟเวอร์ MCP เพื่อเชื่อมต่อกับแหล่งข้อมูลภายนอกแบบเรียลไทม์ เช่น

สิ่งที่ต้องมี

  • คอมพิวเตอร์ที่อนุญาตให้คุณติดตั้งแพ็กเกจ (เช่น npm install ..)
  • ความสามารถในการเขียนโค้ดพื้นฐานใน Python, TypeScript, Go หรือ Java
  • เราขอแนะนำอย่างยิ่งให้ใช้ IDE บางประเภท (Antigravity, vscode, IntelliJ, vim)

ทำไมต้องใช้ ADK + Gemini CLI

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

2. การเริ่มตั้งค่า

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

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้คอนโซล Google Cloud แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

295004821bab6a87.png37d264871000675d.png96d86d3d5655cdbe.png

  • ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมของโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณอัปเดตข้อมูลได้ทุกเมื่อ
  • รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (ไม่สามารถเปลี่ยนแปลงได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณจะไม่สนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสแบบสุ่มอีกรหัสหนึ่ง หรือจะลองใช้ชื่อของคุณเองและดูว่าพร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงไม่ได้หลังจากขั้นตอนนี้ และจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์
  • โปรดทราบว่ายังมีค่าที่ 3 คือหมายเลขโปรเจ็กต์ ซึ่ง API บางรายการใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 ค่านี้ได้ในเอกสารประกอบ
  1. ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินในคอนโซล Cloud เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้จะมีค่าใช้จ่ายไม่มากนัก (หากมี) หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรีมูลค่า $300 USD

เริ่ม Cloud Shell

แม้ว่า Google Cloud จะทำงานจากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้ คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์

จากคอนโซล Google Cloud ให้คลิกไอคอน Cloud Shell บนแถบเครื่องมือด้านขวาบน

เปิดใช้งาน Cloud Shell

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่นาน เมื่อดำเนินการเสร็จแล้ว คุณควรจะเห็นข้อความในลักษณะนี้

ภาพหน้าจอของเทอร์มินัล Google Cloud Shell ที่แสดงว่าสภาพแวดล้อมเชื่อมต่อแล้ว

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

3. สิ่งที่ต้องมีก่อน (การติดตั้ง)

สำหรับบทแนะนำนี้ คุณต้องติดตั้งสิ่งต่อไปนี้

1. Python และ uv

python และ uv (เครื่องมือจัดการแพ็กเกจสำหรับ Python) ซึ่งจำเป็นสำหรับ ADK ตรวจสอบว่าคุณได้ติดตั้ง uv แล้ว โดยทำดังนี้

$ curl -LsSf https://astral.sh/uv/install.sh | sh

ทำไมต้องใช้ UV แม้ว่าคุณจะใช้ Python Manager ใดก็ได้ตามต้องการ แต่การใช้ uv จะช่วยให้มั่นใจได้ว่าการตั้งค่า ENV/PATH สำหรับ Python จะเหมือนกันสำหรับคุณและ Gemini CLI ดังนั้นประสบการณ์การใช้งาน Shell ของคุณจะเหมือนกับของ Gemini CLI เป็นส่วนใหญ่ ตัวอย่างเช่น หากคุณใช้ virtualenv ระบบจะบังคับให้ Gemini CLI ทำสิ่งต่างๆ เช่น "source .env/venv/bin/activate && my-original-command" เพื่อเลียนแบบสภาพแวดล้อมของคุณ

2. Gemini CLI

สำหรับ gemini CLI ดูวิธีการติดตั้งได้ที่ https://github.com/google-gemini/gemini-cli

# Note: This requires having npm or npx installed.
npm install -g @google/gemini-cli
  1. ใน Mac คุณสามารถใช้ brew ตามเอกสารอย่างเป็นทางการได้
  2. ใน Windows คุณสามารถใช้ chocolatey หรือเพียงดาวน์โหลดไฟล์ปฏิบัติการจาก https://nodejs.org/en/download

สำหรับขั้นตอนที่ 4 (ในภายหลัง) คุณจะต้องติดตั้ง npx ด้วย ทั้ง npm และ npx ควรเป็นส่วนหนึ่งของ Gemini CLI โดยอัตโนมัติ หากยังไม่มี ให้ขอความช่วยเหลือจาก Gemini CLI ที่นี่

efade99623113f1.png

การตรวจสอบสิทธิ์

คุณต้องมีโปรเจ็กต์ Google Cloud ที่เปิดใช้ Vertex AI หรือคีย์ Google AI Studio API

ตัวเลือก ก (แนะนำสำหรับเวิร์กช็อป): ส่งออกคีย์ API

export GOOGLE_API_KEY="your-api-key"

ตัวเลือก ข (Vertex AI): ตรวจสอบสิทธิ์ด้วย gcloud โดยทำดังนี้

export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"
export GOOGLE_GENAI_USE_VERTEXAI=true
gcloud auth application-default login

ตั้งค่าสภาพแวดล้อมการทำงาน

คุณกำลังจะสร้างโซลูชันของคุณเองใน mysolution/ ดังนั้นมาสร้างโฟลเดอร์และไฟล์ 2 ไฟล์ที่เราต้องการกัน

ตอนนี้คุณสามารถเปิด IDE (Visual Studio Code, IntelliJ, RubyMine, ..) และเปิดโฟลเดอร์ได้แล้ว

# 1. Find an empty directory, and download this repo.
git clone https://github.com/palladius/adk-gemini-cli-workshop
cd adk-gemini-cli-workshop/

# 2. Create your solution empty skeleton
mkdir -p mysolution/
touch mysolution/__init__.py mysolution/agent.py

# 3. This installs ADK and MCP via `uv` by reading pyproject.toml
uv init
uv sync

# 4. Call Gemini CLI
gemini  # This runs Gemini CLI under the adk-gemini-cli-workshop/ folder.
# Login with your GMail account.

ไม่จำเป็นต้องใช้ uv sync แต่หากดำเนินการไม่สำเร็จ คุณจะทราบว่าต้องแก้ไขการติดตั้ง Python หรือ uv การดำเนินการนี้ควรติดตั้ง adk และสคริปต์อื่นๆ ที่เป็นประโยชน์ลงในโฟลเดอร์ ./.venv/bin/

หากต้องการทดสอบการตั้งค่า คุณเพียงแค่เรียกใช้ make test-step1 และตรวจสอบว่าคุณไม่ได้รับ 403 PERMISSION DENIED.

โซลูชันที่พร้อมใช้งาน

โค้ดทั้งหมดจะอยู่ใน 📂 steps/ คุณสามารถคัดลอกโค้ดจากที่นั่นได้

Codelab นี้ไม่ได้เกี่ยวกับการเรียนรู้วิธีเขียนโค้ด ADK ที่ดี แต่เกี่ยวกับการตั้งค่าสภาพแวดล้อมเพื่อให้เขียนโค้ดที่ดีโดยอัตโนมัติภายใต้คำสั่งของคุณ

  1. การติดตั้งซอฟต์แวร์
  2. การกำหนดค่า/การทำให้ใช้งานได้ และ
  3. เข้าสู่รายงานความคิดเห็นที่ถูกต้อง

นี่คือสิ่งที่เราอยากให้คุณเรียนรู้จากที่นี่จริงๆ นอกจากนี้ คุณยังทดสอบทั้งหมดพร้อมกันได้ผ่าน $ make web-4steps

4. ขั้นตอนที่ 1: Agent พื้นฐาน

abfef47ab2ff0c98.png

มาเริ่มด้วยการสร้าง Agent พื้นฐานที่สามารถสนทนาได้

แก้ไขไฟล์ชื่อ mysolution/__init__.py โดยเพิ่มเนื้อหาต่อไปนี้

from .agent import root_agent

ง่ายๆ เพียงเท่านี้ ซึ่งจะช่วยให้ ADK ทราบว่าโค้ดของคุณอยู่ที่ใดใน agent.py

แก้ไขไฟล์ชื่อ mysolution/agent.py โดยเพิ่มเนื้อหาต่อไปนี้

from google.adk.agents import Agent

root_agent = Agent(
    name="travel_basic",
    model="gemini-2.5-flash",
    instruction="You are a helpful travel assistant." +
    "You can help with general travel advice based on your knowledge.",
)

การทดสอบ Agent

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

  • CLI เหมาะที่สุดสำหรับการทดสอบแบบรวดเร็วและอัตโนมัติ
  • เว็บเป็นช่องทางที่ดีที่สุดในการดูสิ่งที่เกิดขึ้นด้วยภาพ ใช้ไมโครโฟน (!) และแก้ปัญหา

เคล็ดลับ: สำหรับวัตถุประสงค์ของแบบฝึกหัดนี้ หากต้องการทำสิ่งใดให้สำเร็จ (ยกเว้นการทำ Unit Test) ให้ใช้เว็บ น่าทึ่งมากจริงๆ ใช้ CLI สำหรับการทดสอบอัตโนมัติเท่านั้น

พรอมต์ที่ดีซึ่งทดสอบขั้นตอนที่ 1-2-3-4 ได้อย่างเหมาะสมอาจเป็นพรอมต์ต่อไปนี้ (พรอมต์ "ทดสอบ" อัจฉริยะ)

สวัสดี ฉันต้องการจองโรงแรมในปารีสสำหรับคืนพรุ่งนี้ พักคนเดียว 1 คืนในใจกลางเมืองปารีส ถ้าจะให้ดีควรอยู่ใกล้กับสถานีรถไฟ Gare de Lyon งบประมาณ: ต่ำกว่า 200 ยูโรต่อคืน

  1. บอกฉันหน่อยว่าวันพรุ่งนี้คือวันอะไรในสัปดาห์และมีรูปแบบ YYYYMMDD อย่างไร
  2. บอกหน่อยว่าคุณเห็นโรงแรมใดบ้างสำหรับวันพรุ่งนี้ (อย่างน้อย 3 แห่ง) ฉันต้องการดูราคา ที่อยู่ คะแนนบางส่วน (ในรูปแบบ XX/YY เช่น "4.7/5" จากโรงแรมใน Google, Booking หรือ Airbnb) และจำนวนรีวิว แสดงข้อมูลในรูปแบบตาราง ชื่อโรงแรมควรลิงก์กับ URL บางประเภทของโรงแรม (ไม่ต้องเพิ่มคอลัมน์ URL) ตรวจสอบว่าลิงก์ถูกต้อง (ใช้งานได้และหน้าเว็บชี้ไปยังข้อมูลเกี่ยวกับโรงแรม)

นี่คือพรอมต์อัจฉริยะเนื่องจากจะทดสอบเวลาและโรงแรม และจะล้มเหลวแตกต่างกันในขั้นตอนที่ 1,2,3 และควรจะสำเร็จอย่างสมบูรณ์ในขั้นตอนที่ 4 เท่านั้น แน่นอนว่าคุณสามารถใช้พรอมต์ใดก็ได้ที่คุณต้องการ

เรียกใช้จาก Bash (CLI) โดยทำดังนี้

# 1. If ADK was installed:
adk run mysolution/
# ... but if you get: -bash: adk: command not found"
# 2. Call ADK cli script through UV to avoid python install nightmares.
uv run adk run mysolution/

ลองใช้ "พรอมต์ทดสอบ" ด้านบน

แต่อาจไม่ทราบวันที่ที่เจาะจง เราต้องสอนให้มันรู้จักวันที่

สำหรับเว็บ คุณสามารถทำได้ดังนี้

  1. uv run adk web . : ตัวเลือกนี้จะเรียกใช้ตัวแทนทั้งหมดในโฟลเดอร์นี้ คุณต้องการชี้ไปยังโฟลเดอร์ย่อย "mysolution/"
  2. เลือก mysolution/ ที่ด้านขวาบน (ดูรูปภาพด้านข้าง)
  3. ถามคำถามเป็นข้อความหรือผ่านไมโครโฟนในลักษณะเดียวกับ "พรอมต์ทดสอบ"

UI บนเว็บของ ADK แสดงผลลัพธ์ของตัวแทนท่องเที่ยว

โปรดทราบว่าคุณต้องเรียกใช้ adk web จากโฟลเดอร์ด้านบน โดยอิงตามเวอร์ชัน CLI

หุ่นยนต์สีเหลือง - ผลลัพธ์ของขั้นตอนที่ 1 พร้อมวันที่และคำแนะนำโรงแรม

นี่คือวิธีแก้ปัญหาที่เป็นไปได้ โดยมีวันที่ที่อาจไม่ถูกต้อง โปรดทราบว่าลิงก์การจอง 3 จาก 5 รายการใช้งานได้ ก็ไม่เลวนะ

5. ขั้นตอนที่ 2: เพิ่มเครื่องมือ now()

ตัวแก้ไข Cloud Shell แสดงการใช้งานเครื่องมือ now() ใน agent.py

เพิ่มฟังก์ชันนี้ลงใน agent.py ก่อนคำจำกัดความ root_agent:

from datetime import datetime

def now() -> dict:
    """Returns the current date and time."""
    my_datetime = ... # Ask Gemini CLI to help you!
    return {
        "status": "success",
        "current_time": my_datetime
    }

อัปเดตคำจำกัดความของ Agent เพื่อรวมเครื่องมือต่อไปนี้

  # file XXX.py

  root_agent = Agent(
        name="..",
        model="..",
        instruction="..",
        tools=[now] # <== This is the only line you want to add.
    )

เรียกใช้คำสั่งอีกครั้งและถามคำถามเดิม ตอนนี้โมเดลควรทราบวันที่ (ดี) และไม่แน่ใจเกี่ยวกับโรงแรม (ไม่ดี)

นอกจากนี้ คุณยังทดสอบด้วยคำสั่งต่อไปนี้ได้ด้วย

# Let's pretend we're in Milan. This should call the tool
# and respond correctly (possibly with some TZ math issues)
echo "What time is it in Milan?" | uv run adk run mysolution/

6. ขั้นตอนที่ 3: มาเปลี่ยนโหมดกัน: google_search

google_search ซึ่งจะช่วยให้ Agent ของเราเข้าถึงข้อมูลแบบเรียลไทม์จากเว็บได้

3cd72c019b8b225f.png

งานของคุณคือการแก้ไข Agent จากขั้นตอนที่ 2 คุณจะนำเข้าและใช้เครื่องมือ google_search จากไลบรารี ADK แทนการใช้เครื่องมือ now

# Full Code: `steps/step03_search/agent.py`
# Remember to REMOVE the now() tool here. See above why.
from google.adk.agents import Agent
from google.adk.tools import google_search

root_agent = Agent(
    name="travel_agent",
    model="gemini-2.5-flash",
    tools=[google_search],
    instruction="""You are a travel agent.
Your job is to help the user plan a trip.
You have access to a search engine.
If you don't know the answer, you can use the search engine.
When you are done, reply with "DONE".""",
)

วิธีเรียกใช้

เช่นเดียวกับขั้นตอนที่ 1

ผู้เชี่ยวชาญเท่านั้น สำหรับการผสานรวมขั้นสูง (ใช้ google_search และ now ร่วมกัน) ให้ตรวจสอบโค้ดใน steps/step03b_search_and_tool/agent.py และเรียกใช้ด้วย make run-step3b โดยคุณจะทำขั้นตอนนี้หรือไม่ก็ได้

7. ขั้นตอนที่ 4: เครื่องมือที่ซับซ้อนยิ่งขึ้น: MCP

โลโก้ ADK

ตอนนี้เราได้เห็นทั้งเครื่องมือที่กำหนดเองและเครื่องมือในตัวแล้ว มาดูสิ่งที่มีประสิทธิภาพมากขึ้นกัน นั่นคือรูปแบบโมเดลเป็นเครื่องมือที่ใช้ Model Context Protocol (MCP)

เพื่อให้ขั้นตอนนี้มุ่งเน้นไปที่ความสามารถอันทรงพลังของ MCP เราจะแทนที่เครื่องมือก่อนหน้า (google_search) อีกครั้ง เราจะนำเครื่องมือ now แบบง่ายกลับมาใช้ควบคู่ไปกับเครื่องมือ airbnb_mcp ตัวอย่างนี้แสดงให้เห็นว่า Agent สามารถใช้เครื่องมือที่เข้ากันได้หลายรายการ (ในกรณีนี้คือ FunctionTool และ MCPToolset) เพื่อทำงานที่ซับซ้อนได้อย่างไร

# Full Code: steps/step04_mcp/agent.py
# ... Imports as before
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StdioConnectionParams
from mcp import StdioServerParameters

def now() -> dict:
    # ... as before

# Configure the Airbnb MCP Toolset
airbnb_mcp = MCPToolset(
    connection_params=StdioConnectionParams(
        server_params=StdioServerParameters(
            command='npx',
            args=["-y", "@openbnb/mcp-server-airbnb", "--ignore-robots-txt"],
        ),
    )
)

root_agent = Agent(
    name="travel_mcp",
    model="gemini-2.5-flash",
    instruction="You are a helpful travel assistant. You can find accommodation using Airbnb, and have access to the current time.",
    tools=[now, airbnb_mcp],
)

วิธีเรียกใช้

ขั้นตอนนี้กำหนดให้ต้องติดตั้ง npx ในระบบ ส่วนที่เหลือจะเหมือนกับด้านบน

คำเตือน/ข้อผิดพลาด

  1. หากได้รับข้อผิดพลาดเกี่ยวกับข้อจำกัด robots.txt คุณสามารถแพตช์ MCP ด้วยคำสั่งละเว้น robots ได้ อ่านเอกสารประกอบเพื่อดูรายละเอียดเพิ่มเติมได้ที่ https://github.com/openbnb-org/mcp-server-airbnb
  2. หากได้รับข้อผิดพลาด timeout (5 วินาทีสั้นเกินไปที่ Airbnb จะได้รับการตอบกลับ) โปรดดูเอกสารประกอบของ ADK เกี่ยวกับวิธีเพิ่มระยะหมดเวลาเป็น 30 วินาที เป็นต้น หรือ... ใช้ Gemini CLI เพื่อดำเนินการดังกล่าว โปรดทราบว่าเมื่อวันที่ 3 ธ.ค. 25 Cloud Shell แสดงข้อผิดพลาดเกี่ยวกับระยะหมดเวลา ฉันแก้ไขข้อผิดพลาดเกี่ยวกับระยะหมดเวลาแล้ว แต่ก็ยังพบข้อผิดพลาดอยู่ จนกระทั่งฉันบังคับให้ใช้เวอร์ชันก่อนหน้า: args=["-y", "@openbnb/mcp-server-airbnb@0.1.2", "--ignore-robots-txt"]

8. 🏅 บรรลุเป้าหมายที่ 1 แล้ว

🏅 ยินดีด้วย 🏅 ตอนนี้คุณเป็นผู้เชี่ยวชาญด้าน ADK แล้ว คุณได้ทำเวิร์กช็อปส่วนแรกเสร็จแล้ว และสร้างและทดสอบ AI Agent ด้วยเครื่องมือที่กำหนดเอง เครื่องมือในตัว และเครื่องมือ MCP ขั้นสูงเรียบร้อยแล้ว ตอนนี้คุณพร้อมที่จะสร้าง Agent ที่น่าทึ่งของคุณเองด้วย Google Agent Development Kit แล้ว

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

ตอนนี้ก็ถึงเวลาเพิ่มฟังก์ชันการทำงานด้วย "Gemini CLI" แล้ว

9. 🏅 เป้าหมายที่ 2: Vibe Coding ในแบบของคุณผ่าน ADK โดยใช้ Gemini CLI

ตอนนี้เราเข้าสู่ส่วนที่น่าสนใจของเวิร์กช็อปแล้ว

  1. ตรวจสอบว่าคุณได้git commitรหัสไว้ในที่ปลอดภัยแล้ว คุณสามารถแยกโค้ดต้นฉบับหรือสร้าง Branch ได้ ไม่ต้องกังวล Gemini CLI ช่วยคุณได้ดีมากในเรื่องนี้
  2. ค้นหา💡ไอเดียที่จะนำไปใช้ คุณสามารถดูไอเดียด้านล่าง ค้นหาไอเดียด้วยตัวเอง หรือขอความช่วยเหลือจาก Gemini ให้ดูเอกสารประกอบใน rag/ และเสนอไอเดียที่ชาญฉลาดก็ได้
  3. ทำตามข้อกำหนดเบื้องต้นเพื่อให้แน่ใจว่า Gemini สามารถอ่านเอกสาร ADK ได้ เท่านี้ก็เรียบร้อย

💡 ไอเดีย

  1. 🟢 [ง่าย] คุณเป็นผู้ที่พูดได้หลายภาษาใช่ไหม คุณต้องการให้ go, java หรือ TypeScript การเปลี่ยนโครงสร้างภายในโค้ดที่มีอยู่นั้นทำได้ง่ายมาก เพียงตรวจสอบว่าได้ดาวน์โหลด ADK ที่เหมาะสมแล้ว และขอความช่วยเหลือจาก Gemini CLI ให้ทำการแปล
  2. 🟢 [ง่าย] เพิ่มอีโมจิหรือระบุรูปแบบเอาต์พุตที่ต้องการ (เช่น ตารางที่มีอีโมจิโรงแรม ตามด้วยราคา ตามด้วยอีโมจิดาว 1-5 ดวงโดยใช้ 🌕🌕🌕🌗🌑 เพื่อแสดงครึ่งดาวด้วย)
  3. 🟢 [ง่าย] เปลี่ยนพรอมต์เพื่อสอนโมเดลเกี่ยวกับสิ่งที่คุณกำลังมองหาหรือสิ่งที่ไม่ต้องการ (เป็นมิตรกับสัตว์เลี้ยง ไม่เอาชั้นล่าง เงียบสงบ ใกล้ขนส่งมวลชน ฯลฯ) แล้วทดสอบ อาจเพิ่มการให้คะแนนส่วนตัว เช่น "คะแนนจาก YOUR_NAME ตั้งแต่ 1-10" โดยอิงตามข้อมูลข้างต้น แล้วจัดเรียงตามคะแนนนั้น
  4. 🟢 [ง่าย] มีโอเปอเรเตอร์อยู่ในห้องไหม ทำให้ใช้งานได้กับ Cloud Run หรือ Vertex AI Agent Engine คุณทราบหรือไม่ว่าคุณสามารถผสานรวม Agent นี้และเรียกใช้ได้โดยตรงจาก Gemini Enterprise ใหม่
  5. 🟢 [ง่าย] ผสานรวม adk run เข้ากับ 🍌 NanoBanana MCP ต้องใช้คีย์ Gemini API คุณจะสร้างรูปภาพได้ที่นี่ แต่จะแสดงภาพไม่ได้ ดูตัวแปรที่ยากขึ้นได้ที่ด้านล่าง
  6. 🟡 [ปานกลาง] สร้างตัวแทนย่อยที่ทำHotelSearch และสร้าง BudgetAgent หรือ LocationAgent ซึ่งสามารถเพิ่มประสิทธิภาพและทำซ้ำเกี่ยวกับโรงแรมโดยคำนึงถึงความต้องการด้านสถานที่ตั้งของคุณ เช่น "ห่างจากสถานที่ตั้งไม่เกิน X กม." หาก API ไม่อนุญาตให้ดำเนินการนี้ อาจมีการโต้ตอบไปมาโดย Google Search หมายเหตุ: Gemini CLI ช่วยคุณได้
  7. 🟡 [ปานกลาง] ใช้ AirbnbReviewAgent ซึ่งจะเข้าไปดูรีวิวและสรุปข้อดีและข้อเสียเป็นสัญลักษณ์หัวข้อย่อยที่ใช้รหัสสีไม่กี่รายการสำหรับโรงแรม 1 แห่งหรือหลายแห่งที่ได้จากการค้นหา คุณมีส่วนประกอบ 2 อย่างแล้ว (GoogleSearch และ MCP Airbnb) จากนั้นคุณต้องเชื่อมต่อส่วนประกอบเหล่านี้กับ Agent หลัก และอาจต้องสร้างโปรโตคอลบางอย่างเพื่อให้ส่วนประกอบเหล่านี้สื่อสารกันได้
  8. 🟡 [ปานกลาง] ผสานรวมกับ A2A กำหนดให้เป็น A2A Agent ขอย้ำอีกครั้งว่าคุณขอความช่วยเหลือจาก Gemini CLI ได้
  9. 🔴 [ซับซ้อน] คุณสามารถผสานรวมกับ Flights หรือฟังก์ชัน MCP อื่นๆ เพื่อสร้างตัวแทนท่องเที่ยวที่มีฟังก์ชันหลากหลายและครอบคลุมหลายด้าน
  10. 🔴 [ซับซ้อน] ผสานรวม ADK Web กับ 🍌 NanoBanana MCP วิธีนี้ยากกว่าวิธีข้างต้น และคุณสามารถดูเคล็ดลับบางอย่างได้ที่ https://github.com/palladius/ai-friendly-agents/issues/11 ผู้เขียนใช้เวลา 3 ชั่วโมงในการโต้ตอบกับ Gemini CLI, Gemini3 และเราทั้งคู่ก็อ่านเอกสาร/โค้ดจาก rag/

หากต้องการแรงบันดาลใจเพิ่มเติม

  1. ดูไอเดียได้ในบทแนะนำ ADK อย่างเป็นทางการ
  2. ขอความช่วยเหลือจาก Gemini CLI เพื่อค้นหาไอเดียโดยดูเอกสารประกอบใน rag/: พรอมต์ที่เป็นไปได้อาจเป็น Is there a feature in here which seems very succulent to you? Give me 3 proposals and let's implement together the one I choose

ข้อกำหนดเบื้องต้นสำหรับ "RAG" ของ ADK

หากต้องการเขียนโค้ดฟังก์ชันการทำงานแบบ Vibe Coding เราขอแนะนำให้ดาวน์โหลด ADK ทั้งหมด python ADK (หมายเหตุ: คุณสามารถปรับให้เข้ากับภาษาที่ต้องการได้อย่างง่ายดาย เช่น Java หรือ Go)

โค้ดอยู่ภายใต้ ./rag และดาวน์โหลดได้ด้วย ./download-adk.sh

เนื่องจากโฟลเดอร์ rag แสดงอยู่ในไฟล์ .gitignore โปรดตรวจสอบว่า .gemini/settings.json มีข้อมูลต่อไปนี้

{
 "context": {
   "includeDirectories": ["rag"]
 }
}

เพราะเหตุใด เราต้องการให้ Gemini อ่านไฟล์เหล่านั้นได้ ขณะที่ไฟล์เหล่านั้นถูกละเว้นโดย Git อย่างปลอดภัย ในทางเทคนิค คุณยังสามารถเลิกซ่อนไฟล์ .gitignore ทั้งหมดได้โดยตั้งค่า context.fileFiltering.respectGitIgnore เป็น false แต่การทำเช่นนี้จะเปิดขยะ node_modules/ และ __pycache__/ จำนวนมาก ดังนั้นการรวมโฟลเดอร์ที่ชัดเจนจึงเป็นตัวเลือกที่แนะนำ

10. ขั้นตอนถัดไป

เกร็ดน่ารู้: เวิร์กช็อปนี้สร้างขึ้นโดยใช้ Gemini CLI หากสนใจ คุณสามารถดูวิธีที่ฉันทำได้โดยดูที่ GEMINI.md และ WORKSHOP_PLAN.md ในโฟลเดอร์นี้

บทเรียนที่ได้รับ

เราได้เรียนรู้วิธีจับคู่ ADK กับ Gemini CLI แล้ว

อ่านเพิ่มเติม

6d05afb6b8b235d8.png