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

1. บทนำ

9344c1d1a9f221b7.png

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

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

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

Codelab นี้แบ่งออกเป็น 2 🏅 เหตุการณ์สำคัญ ดังนี้

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

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

เหตุการณ์สำคัญ 1: Agent ตัวแรกของคุณด้วย ADK และ Gemini CLI

เป้าหมายของเหตุการณ์สำคัญนี้คือการสร้างตัวแทนท่องเที่ยวอย่างง่ายด้วย ADK แบบทีละขั้นตอน

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

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

เหตุการณ์สำคัญ 2: ขยาย Agent

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

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

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

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

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

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

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

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

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

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

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

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

เลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้ การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง หากต้องการเรียกใช้

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

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

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

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

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

เริ่มต้น Cloud Shell

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

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

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

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

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

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

ข้อกำหนดเบื้องต้น (การติดตั้ง)

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

1. Python และ uv

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

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

ทำไมต้อง UV แม้ว่าคุณจะใช้ตัวจัดการ Python ใดก็ได้ตามต้องการ แต่การใช้ uv จะช่วยให้มั่นใจได้ว่าการตั้งค่า ENV/PATH สำหรับ Python จะเหมือนกันสำหรับคุณและ Gemini CLI ดังนั้นประสบการณ์การใช้งานเชลล์ของคุณจะเหมือนกับของ 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

หมายเหตุ: คุณต้องติดตั้ง npm หรือ npx ก่อน

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 ที่นี่

นอกจากนี้ คุณอาจต้องการติดตั้ง just ซึ่งเป็นMakefileขั้นสูงที่สร้างเอกสารด้วยตัวเอง นอกจากนี้ คุณยังขอให้ Gemini CLI ช่วยติดตั้งได้ด้วย

efade99623113f1.png

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

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

ตัวเลือก ก (แนะนำสำหรับเวิร์กช็อป): ส่งออกคีย์ 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/ai-friendly-agents/
cd ai-friendly-agents/adk/workshops/simple-travel-agent/

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

# 4. Call Gemini CLI
gemini  # This runs Gemini CLI under the simple-travel-agent/ folder.
# Login with your GMail account.

uv sync ไม่ได้จำเป็นอย่างเคร่งครัด แต่หากไม่สำเร็จ คุณจะทราบว่าต้องแก้ไขการติดตั้ง Python หรือ uv

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

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

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

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

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

3. ขั้นตอนที่ 1: เอเจนต์พื้นฐาน

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 ช่วยให้คุณทดสอบเอเจนต์ได้ 2 วิธี ได้แก่ CLI และเว็บ

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

เคล็ดลับ: ในการทำแบบฝึกหัดนี้ หากต้องการทำสิ่งใดก็ตาม (ยกเว้นการทดสอบหน่วย) ให้ใช้เว็บ มันยอดเยี่ยมมาก ใช้ CLI สำหรับการทดสอบอัตโนมัติเท่านั้น

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

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

  1. บอกฉันหน่อยว่าพรุ่งนี้คือวันที่เท่าไร (YYYYMMDD) และวันอะไร
  2. บอกฉันหน่อยว่าคุณเห็นโรงแรมใดบ้างสำหรับพรุ่งนี้ (อย่างน้อย 3 แห่ง) ฉันต้องการดูราคา ที่อยู่ คะแนนบางส่วน (ในรูปแบบ XX/YY เช่น "4.7/5" จาก Google Hotels, 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. ถามคำถามเป็นข้อความหรือผ่านไมโครโฟนในลักษณะเดียวกับ "พรอมต์ลิทมัส"

TODO(ricc): <image here>

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

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

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

ตัวแทนไม่รู้ว่า "วันนี้" คือวันไหน เรามาให้เครื่องมือแก่ตัวแทนกัน

TODO(image): ricc put here image of step2.

เพิ่มฟังก์ชันนี้ลงใน 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

  travel_agent = LlmAgent(
        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/

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

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

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 แล้วเรียกใช้ด้วย just run-step3b โดยคุณจะทำขั้นตอนนี้หรือไม่ก็ได้

6. ขั้นตอนที่ 4: เครื่องมือที่ซับซ้อนมากขึ้น: MCP

สิ่งที่ต้องทำ(ricc): เพิ่มรูปภาพ 4

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

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

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

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

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

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

8. 🏅 เหตุการณ์สำคัญที่ 2: เขียนโค้ดตามสไตล์ของคุณผ่าน ADK โดยใช้ Gemini CLI

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

  1. ตรวจสอบว่าคุณได้git commitรหัสไว้ในที่ปลอดภัยแล้ว คุณสามารถ Fork โค้ดต้นฉบับหรือสร้างกิ่งได้ ไม่ต้องกังวล Gemini CLI ช่วยคุณได้
  2. ค้นหาไอเดีย💡ที่จะนำไปใช้ คุณสามารถดูไอเดียด้านล่าง ค้นหาไอเดียด้วยตนเอง หรือขอให้ Gemini ดูเอกสารใน RAG/ แล้วเสนอไอเดียอัจฉริยะ 2-3 รายการ
  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 กม. จาก LOCATION" หาก API ไม่อนุญาตให้ทำเช่นนี้ GoogleSearch อาจช่วยให้คุณสลับไปมาระหว่างแอปได้ หมายเหตุ: Gemini CLI ช่วยคุณได้
  7. 🟡 [ปานกลาง] ใช้ AirbnbReviewAgent ซึ่งจะไปอยู่ในรีวิวและสรุปข้อดีและข้อเสียในรายการหัวข้อย่อยที่มีการกำหนดรหัสสี 2-3 รายการ สำหรับโรงแรม 1 แห่งหรือ N แห่งที่ได้จากการค้นหา คุณมีส่วนผสม 2 อย่างอยู่แล้ว (GoogleSearch และ MCP Airbnb) จากนั้นคุณต้องเชื่อมต่อส่วนผสมนี้กับ Agent หลัก และอาจต้องคิดค้นโปรโตคอลบางอย่างเพื่อให้ส่วนผสมทั้ง 2 สื่อสารกันได้
  8. 🟡 [ปานกลาง] ผสานรวมกับ A2A ทำให้เป็นเอเจนต์แบบ A2A โปรดขอความช่วยเหลือจาก Gemini CLI
  9. 🔴 [ซับซ้อน] คุณสามารถผสานรวมกับ Flights หรือฟังก์ชัน MCP อื่นๆ เพื่อสร้างตัวแทนการท่องเที่ยวแบบมัลติฟังก์ชันที่มีหลายแง่มุม
  10. 🔴 [ซับซ้อน] ผสานรวม ADK Web กับ 🍌 NanoBanana MCP ซึ่งยากกว่าข้อความด้านบน และคุณดูเคล็ดลับบางอย่างได้ที่ https://github.com/palladius/ai-friendly-agents/issues/11 ซึ่งใช้เวลา 3 ชั่วโมงในการสลับไปมาระหว่าง Gemini CLI, Gemini 3 และการอ่านเอกสาร/โค้ดจาก rag/

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

  1. ดูไอเดียได้ในบทแนะนำ ADK ที่ยอดเยี่ยมของ Maurizio
  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

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

หากต้องการเขียนโค้ดฟังก์ชันการทำงาน เราขอแนะนำให้คุณดาวน์โหลด 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__/จำนวนมาก ดังนั้นการรวมโฟลเดอร์อย่างชัดเจนจึงเป็นตัวเลือกที่แนะนำ

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

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

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

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

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

6d05afb6b8b235d8.png