Xây dựng một đại lý du lịch đơn giản bằng ADK và Gemini CLI

1. Giới thiệu

9344c1d1a9f221b7.png

Lần cập nhật gần đây nhất: Ngày 22 tháng 6 năm 2026

Xây dựng một công ty du lịch đơn giản bằng ADK

Chào mừng bạn đến với hội thảo Python(*) về ADK này. Hội thảo này có đầy đủ mọi thứ bạn cần nhờ Gemini CLI!

Lớp học lập trình này được chia thành hai 🏅 mốc quan trọng:

  1. Một lộ trình học tập đơn giản và phổ biến: thiết lập + nhận được kết quả ngay lập tức.
  2. Một lộ trình được cá nhân hoá, trong đó bạn chọn một nhiệm vụ để giải quyết với sự hỗ trợ của Gemini CLI

Phần thứ hai giúp lớp học lập trình này trở nên hoàn hảo cho một sự kiện hackathon (và phần thưởng cho những giải pháp sáng tạo nhất!)

Cột mốc 1: Tác nhân đầu tiên của bạn với ADK và Gemini CLI

Mục tiêu của mốc quan trọng này là từng bước xây dựng một công ty du lịch đơn giản bằng ADK. Để làm việc này, trước tiên, chúng ta cần thiết lập Gemini CLI để công cụ này giúp chúng ta lập trình bằng ADK. Nhờ đó, shell cục bộ của bạn có thể chọn phiên bản Python ADK mới nhất, hiểu rõ mã và tài liệu, đồng thời cung cấp mã mới nhất/tốt nhất để làm việc với ADK nhằm đạt được mục tiêu của bạn.

Đây là phần hướng dẫn từng bước để chúng ta có được một ứng dụng hoạt động đầy đủ thông qua các bước nhỏ và đơn giản. Quá trình này thường mất khoảng một giờ (cộng với thời gian cài đặt).

Cột mốc 2: Mở rộng tác nhân

Sau đó, chúng tôi sẽ cung cấp cho bạn một số lựa chọn (với độ khó khác nhau) để mở rộng ứng dụng theo ý muốn. Nhờ đó, bạn có thể khám phá nhiều khía cạnh (giao diện người dùng, hoạt động, tương tác phức tạp của tác nhân, v.v.)

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, bạn sẽ xây dựng một ứng dụng công ty du lịch bằng ADK và Gemini CLI. Ứng dụng này sẽ:

  • Kết nối với API của Airbnb thông qua MCP của Airbnb.
  • Tìm kiếm trên mạng để biết thông tin mới nhất (thời tiết, ngày, ..)
  • Thực thi các công cụ tuỳ chỉnh.
  • Tạo hình ảnh về căn hộ/phòng bằng NanoBanana.

Gemini CLI sẽ hướng dẫn bạn thực hiện tất cả những việc này: viết/xem lại mã và tìm tài liệu mới nhất trong bản sao cục bộ của kho lưu trữ ADK (bằng Python hoặc ngôn ngữ bạn yêu thích).

Kiến thức bạn sẽ học được

  • Cách tạo ứng dụng bằng ADK
  • Cách dùng Gemini CLI để lập trình ứng dụng dựa trên tài liệu cục bộ!
  • Cách tương tác với máy chủ MCP để kết nối với các nguồn dữ liệu bên ngoài theo thời gian thực, như sau:

Bạn cần có

  • Máy tính cho phép bạn cài đặt các gói (ví dụ: npm install ..)
  • Có khả năng lập trình cơ bản bằng Python, TypeScript, Go hoặc Java.
  • Bạn nên sử dụng một IDE (Antigravity, vscode, IntelliJ, vim).

Tại sao nên dùng ADK + Gemini CLI?

Một số bạn có thể thắc mắc: Tại sao tôi cần sử dụng ADK (SDK trình tạo tác nhân) kết hợp với trình trợ giúp mã tác nhân cục bộ (như Gemini CLI)? Lý do là cả hai công cụ đều cực kỳ mạnh mẽ, nhưng việc tương tác giữa chúng không hề đơn giản; nhiều người đã cố gắng kết hợp cả hai và thất bại (chủ yếu là do vấn đề "vòng lặp trong vòng lặp"). Lớp học lập trình này sẽ chia sẻ một số mẹo về cách giúp hai ngôn ngữ này cùng tồn tại.

2. Thiết lập

Chọn một trong các lựa chọn sau: Tự thiết lập môi trường nếu bạn muốn chạy lớp học lập trình này trên máy của riêng mình hoặc Bắt đầu Cloud Shell nếu bạn muốn chạy lớp học lập trình này hoàn toàn trên đám mây.

Thiết lập môi trường tự học

  1. Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

295004821bab6a87.png37d264871000675d.png96d86d3d5655cdbe.png

  • Tên dự án là tên hiển thị cho những người tham gia dự án này. Đây là một chuỗi ký tự không được các API của Google sử dụng. Bạn có thể cập nhật thông tin này bất cứ lúc nào.
  • Mã dự án là duy nhất trong tất cả các dự án trên Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm chuỗi đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã được tạo, bạn có thể tạo một mã ngẫu nhiên khác. Ngoài ra, bạn có thể thử tên người dùng của riêng mình và xem tên đó có sẵn hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ được giữ nguyên trong suốt thời gian diễn ra dự án.
  • Để bạn biết, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu.
  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API của Cloud. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh phát sinh phí ngoài hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.

Bắt đầu Cloud Shell

Mặc dù có thể vận hành Google Cloud từ xa bằng máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.

Trong Google Cloud Console, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ trên cùng bên phải:

Kích hoạt Cloud Shell

Quá trình cấp phép và kết nối với môi trường chỉ mất vài phút. Khi quá trình này hoàn tất, bạn sẽ thấy kết quả như sau:

Ảnh chụp màn hình thiết bị đầu cuối Google Cloud Shell cho thấy môi trường đã kết nối

Máy ảo này được trang bị tất cả công cụ cho nhà phát triển mà bạn cần. Cloud Shell cung cấp thư mục gốc 5 GB cố định và chạy trên Google Cloud, giúp cải thiện đáng kể hiệu suất mạng và khả năng xác thực. Bạn có thể thực hiện tất cả công việc trong lớp học lập trình này bằng trình duyệt. Bạn không cần cài đặt gì cả.

3. Điều kiện tiên quyết (Cài đặt)

Đối với hướng dẫn này, bạn cần cài đặt:

1. Python và uv

python và uv (trình quản lý gói cho Python). Đây là điều kiện cần thiết cho ADK. Đảm bảo bạn đã cài đặt uv:

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

Tại sao nên dùng uv? Mặc dù bạn có thể sử dụng bất kỳ trình quản lý Python nào mình muốn, nhưng việc sử dụng uv sẽ đảm bảo chế độ thiết lập ENV/PATH cho Python sẽ giống nhau cho bạn và cho Gemini CLI, vì vậy, trải nghiệm shell của bạn sẽ gần giống với trải nghiệm của Gemini CLI. Ví dụ: nếu bạn sử dụng virtualenv, Gemini CLI sẽ buộc phải thực hiện những việc như "source .env/venv/bin/activate && my-original-command" để mô phỏng môi trường của bạn.

2. Gemini CLI

Đối với gemini CLI, hãy xem hướng dẫn cài đặt tại đây: https://github.com/google-gemini/gemini-cli .

# Note: This requires having npm or npx installed.
npm install -g @google/gemini-cli
  1. Trên Mac, bạn có thể sử dụng brew theo tài liệu chính thức.
  2. Trên Windows, bạn có thể sử dụng chocolatey hoặc chỉ cần tải tệp thực thi xuống từ https://nodejs.org/en/download

Đối với bước 4 (sau này), bạn cũng cần cài đặt npx. Cả npm và npx đều là những tính năng tự nhiên của Gemini CLI. Nếu không, hãy yêu cầu Gemini CLI trợ giúp bạn tại đây.

efade99623113f1.png

Xác thực

Bạn cần có một dự án trên Google Cloud đã bật Vertex AI hoặc một khoá API của Google AI Studio.

Cách A (Nên dùng cho Hội thảo): Xuất khoá API:

export GOOGLE_API_KEY="your-api-key"

Cách B (Vertex AI): Xác thực bằng 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

Thiết lập môi trường làm việc

Bạn sẽ tạo giải pháp của RIÊNG mình trong mysolution/, vì vậy, hãy tạo thư mục và hai tệp mà chúng ta cần.

Đây là lúc bạn có thể mở IDE (Visual Studio Code, IntelliJ, RubyMine, v.v.) và mở thư mục.

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

Bạn không nhất thiết phải đồng bộ hoá uv, nhưng nếu không đồng bộ hoá được, bạn cần phải khắc phục lỗi cài đặt Python hoặc uv. Thao tác này sẽ cài đặt adk và các tập lệnh hữu ích khác vào thư mục ./.venv/bin/.

Để kiểm tra chế độ thiết lập, bạn chỉ cần chạy make test-step1 và kiểm tra để đảm bảo rằng bạn không nhận được 403 PERMISSION DENIED.

Giải pháp hiện có

Tất cả mã đều nằm trong 📂 steps/. Bạn có thể sao chép mã từ đó.

Lớp học lập trình này không hướng dẫn cách viết mã ADK hiệu quả, mà hướng dẫn cách thiết lập môi trường để tự động viết mã HIỆU QUẢ theo hướng dẫn của bạn.

  1. Cài đặt phần mềm
  2. định cấu hình/làm cho nó hoạt động và
  3. bước vào một Vòng hồi tiếp chính đáng

Đây là điều chúng tôi thực sự muốn bạn học được ở đây. Bạn cũng có thể thử nghiệm tất cả các biến thể cùng lúc thông qua $ make web-4steps!

4. Bước 1: Tác nhân cơ bản

abfef47ab2ff0c98.png

Hãy bắt đầu bằng cách tạo một tác nhân cơ bản có thể trò chuyện.

Chỉnh sửa tệp có tên mysolution/__init__.py bằng cách thêm nội dung sau:

from .agent import root_agent

Chỉ đơn giản vậy thôi! Điều này cho phép ADK biết mã của bạn nằm ở đâu: trong agent.py.

Chỉnh sửa tệp có tên mysolution/agent.py bằng cách thêm nội dung sau:

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.",
)

Kiểm thử tác nhân

Điều này đúng với tất cả các bước. ADK cho phép bạn kiểm thử nhân viên hỗ trợ theo hai cách: CLI và Web.

  • CLI phù hợp nhất cho các quy trình kiểm thử nhanh và tự động
  • Web là nền tảng phù hợp nhất để xem trực quan những gì đang diễn ra, sử dụng micrô (!) và khắc phục sự cố.

Mẹo: để thực hiện bài tập này, bạn cần sử dụng Web để hoàn thành mọi việc (ngoại trừ kiểm thử đơn vị). Thật tuyệt vời! Chỉ sử dụng CLI cho kiểm thử tự động.

Một câu lệnh tốt để kiểm tra đúng các bước 1-2-3-4 có thể là (câu lệnh "giấy quỳ" thông minh):

Chào bạn, tôi muốn đặt một phòng khách sạn cho một người ở trung tâm thành phố Paris vào tối mai, trong một đêm. Lý tưởng nhất là gần Gare de Lyon. Ngân sách: dưới 200 EUR/đêm.

  1. Cho tôi biết ngày mai là ngày nào (theo định dạng YYYYMMDD) và thứ mấy.
  2. Cho tôi biết bạn thấy khách sạn nào cho ngày mai (ít nhất 3 khách sạn). Tôi muốn xem: > giá, địa chỉ, một số điểm xếp hạng (ở dạng XX/YY, ví dụ: "4,7/5" – từ (mục) Khách sạn trên Google, Booking hoặc Airbnb), số lượng bài đánh giá. Hãy trình bày dưới dạng BẢNG. Tốt nhất là tên khách sạn nên được liên kết với một URL nào đó của khách sạn (đừng bận tâm đến việc thêm cột URL). Đảm bảo đường liên kết là hợp lệ (đường liên kết hoạt động và trang dẫn đến thông tin về khách sạn!)

Đây là một câu lệnh thông minh vì câu lệnh này kiểm tra thời gian và khách sạn, đồng thời sẽ không thành công theo cách khác nhau ở các bước 1, 2, 3 và chỉ thành công hoàn toàn ở bước 4. Tất nhiên, bạn có thể sử dụng bất kỳ câu lệnh nào bạn muốn!

Chạy từ 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/

Hãy thử dùng "câu lệnh thử nghiệm" ở trên.

Trợ lý có thể không biết ngày cụ thể. Chúng ta cần dạy cho nó biết ngày!

Đối với web, bạn có thể làm như sau:

  1. uv run adk web . : Thao tác này sẽ chạy tất cả tác nhân trong thư mục này. Bạn muốn trỏ tệp này đến thư mục con "mysolution/"
  2. chọn mysolution/ ở trên cùng bên phải (Xem hình ảnh bên cạnh)
  3. Đặt câu hỏi bằng văn bản hoặc qua micrô, tương tự như "câu lệnh thử nghiệm".

Giao diện người dùng web của ADK cho thấy kết quả về công ty du lịch

Lưu ý rằng bạn cần gọi adk web từ thư mục phía trên, tương ứng với phiên bản CLI.

Robot màu vàng – Kết quả của Bước 1 kèm theo ngày và đề xuất khách sạn

Sau đây là một giải pháp khả thi, trong đó có một ngày tháng bị ảo tưởng một phần. Lưu ý: 3 trong số 5 đường liên kết đặt phòng đang hoạt động! Không tệ.

5. Bước 2: Thêm công cụ now()

Trình chỉnh sửa Cloud Shell cho thấy cách triển khai công cụ now() trong agent.py

Thêm hàm này vào agent.py ngay trước định nghĩa 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
    }

Cập nhật định nghĩa tác nhân để thêm công cụ:

  # file XXX.py

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

Chạy lại và đặt cùng một câu hỏi. Bây giờ, mô hình sẽ biết ngày (tốt) và mơ hồ về khách sạn (không tốt)!

Bạn cũng có thể kiểm thử bằng một câu lệnh như sau:

# 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. Bước 3: Hãy chuyển hướng tập trung: google_search

google_search. Điều này cho phép tác nhân của chúng tôi truy cập vào thông tin theo thời gian thực trên web.

3cd72c019b8b225f.png

Nhiệm vụ của bạn là sửa đổi tác nhân ở Bước 2. Thay vì sử dụng công cụ now, bạn sẽ nhập và sử dụng công cụ google_search từ thư viện ADK.

# 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".""",
)

Cách chạy

Tương tự như bước 1.

Chỉ dành cho chuyên gia. Để tích hợp nâng cao hơn (sử dụng kết hợp google_search và now), hãy kiểm tra mã trong steps/step03b_search_and_tool/agent.py và chạy mã bằng make run-step3b. Bạn không bắt buộc phải làm việc này.

7. Bước 4: Một công cụ tinh vi hơn: MCP

Biểu trưng của ADK

Giờ chúng ta đã tìm hiểu cả công cụ tuỳ chỉnh và công cụ tích hợp sẵn, hãy chuyển sang một công cụ mạnh mẽ hơn: mẫu Mô hình dưới dạng công cụ sử dụng Giao thức ngữ cảnh mô hình (MCP).

Để bước này tập trung vào các tính năng mạnh mẽ của MCP, chúng ta sẽ một lần nữa thay thế công cụ trước đó (google_search). Chúng ta sẽ giới thiệu lại công cụ now đơn giản để chạy cùng với công cụ airbnb_mcp. Ví dụ này minh hoạ cách một tác nhân có thể sử dụng nhiều công cụ tương thích (trong trường hợp này là FunctionTool và MCPToolset) để thực hiện các nhiệm vụ phức tạp.

# 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],
)

Cách chạy

Bước này yêu cầu bạn phải cài đặt npx trên hệ thống. Đối với phần còn lại, cách này giống như trên.

Lưu ý/Lỗi

  1. Nếu gặp lỗi hạn chế robots.txt, bạn có thể vá MCP bằng lệnh bỏ qua robots. Đọc tài liệu để biết thêm thông tin: https://github.com/openbnb-org/mcp-server-airbnb
  2. Nếu bạn gặp lỗi timeout (5 giây là quá ít để Airbnb nhận được phản hồi), hãy xem tài liệu về ADK để biết cách tăng thời gian chờ lên, chẳng hạn như 30 giây. Hoặc.. dùng Gemini CLI để làm việc đó! Lưu ý rằng vào ngày 3 tháng 12 năm 2025, Cloud Shell đã báo lỗi hết thời gian chờ. Tôi đã khắc phục lỗi hết thời gian chờ nhưng vẫn gặp lỗi cho đến khi buộc Cloud Shell sử dụng phiên bản trước: args=["-y", "@openbnb/mcp-server-airbnb@0.1.2", "--ignore-robots-txt"].

8. 🏅 Đã hoàn thành cột mốc 1!

Xin chúc mừng! 🏅 Giờ đây, bạn đã là một chuyên gia về ADK! Bạn đã hoàn thành phần đầu tiên của hội thảo và đã xây dựng cũng như thử nghiệm thành công các tác nhân AI bằng công cụ tuỳ chỉnh, công cụ tích hợp sẵn và công cụ MCP nâng cao. Giờ đây, bạn đã sẵn sàng xây dựng các tác nhân tuyệt vời của riêng mình bằng Bộ công cụ phát triển tác nhân của Google!

Giờ đây, bạn đã có một công ty du lịch có thể hoạt động, biết thời gian và có thể tìm kiếm trên web. Giờ đây, bạn có thể thoả sức sáng tạo!

Bây giờ, đã đến lúc thêm một chức năng bổ sung bằng "Gemini CLI".

9. 🏅 Cột mốc 2: lập trình theo cảm hứng bằng ADK thông qua Gemini CLI

Giờ chúng ta sẽ bước vào phần thú vị của buổi hội thảo.

  1. đảm bảo bạn đã git commit mã ở nơi an toàn. Bạn có thể phân nhánh mã gốc hoặc tạo một nhánh: đừng lo, Gemini CLI rất giỏi trong việc giúp bạn thực hiện việc này!
  2. Tìm một 💡 ý tưởng để triển khai. Bạn có thể xem các ý tưởng bên dưới, tự tìm một ý tưởng hoặc yêu cầu Gemini xem tài liệu trong rag/ và đề xuất một vài ý tưởng thông minh.
  3. Hãy làm theo các điều kiện tiên quyết để đảm bảo Gemini có thể đọc tài liệu về ADK, sau đó bạn có thể bắt đầu!

💡 Ý tưởng

  1. 🟢 [easy] Are you a language polyglot? Bạn muốn tặng go, java hay TypeScript? Việc tái cấu trúc mã hiện có rất đơn giản! Bạn chỉ cần tải ADK phù hợp xuống rồi yêu cầu Gemini CLI dịch!
  2. 🟢 [dễ] Thêm biểu tượng cảm xúc hoặc chỉ định một số định dạng đầu ra mà bạn thích (ví dụ: bảng có biểu tượng cảm xúc khách sạn, theo sau là giá, theo sau là biểu tượng cảm xúc 1-5 sao dựa trên 🌕🌕🌕🌗🌑 để làm nửa sao!).
  3. 🟢 [dễ] Thay đổi câu lệnh để hướng dẫn mô hình về những điều bạn đặc biệt tìm kiếm hoặc không muốn (cho phép thú cưng, không ở tầng trệt, yên tĩnh, gần phương tiện công cộng, v.v.) rồi thử nghiệm. Có thể thêm điểm xếp hạng cá nhân như "điểm xếp hạng của YOUR_NAME từ 1 đến 10" dựa trên thông tin ở trên và sắp xếp theo điểm xếp hạng đó.
  4. 🟢 [easy] Any Operator in the room? Triển khai lên Cloud Run! Hoặc Vertex AI Agent Engine! Bạn có biết rằng bạn có thể tích hợp tác nhân này và gọi trực tiếp từ Gemini Enterprise mới không?
  5. 🟢 [dễ] Tích hợp adk run với 🍌 NanoBanana MCP. Cần có khoá Gemini API. Tại đây, bạn có thể tạo hình ảnh nhưng không thể trực quan hoá hình ảnh. Hãy xem phần bên dưới để biết một biến thể khó hơn.
  6. 🟡 [trung bình] Tạo một tác nhân phụ thực hiện HotelSearch và tạo một BudgetAgent hoặc LocationAgent có thể tăng gấp đôi và lặp lại trên các khách sạn đáp ứng nhu cầu về vị trí của bạn, ví dụ: "không quá X km từ VỊ TRÍ". Nếu API không cho phép điều này, thì có thể bạn sẽ phải thực hiện một số thao tác qua lại với sự trợ giúp của Google Tìm kiếm. Lưu ý: Gemini CLI có thể giúp bạn.
  7. 🟡 [trung bình] Triển khai một AirbnbReviewAgent để xem xét các bài đánh giá và tóm tắt các điểm tích cực và tiêu cực bằng một vài dấu đầu dòng được mã hoá màu, cho 1 hoặc N khách sạn từ kết quả tìm kiếm. Bạn đã có 2 thành phần (GoogleSearch và MCP Airbnb), sau đó bạn cần kết nối thành phần này với Tác nhân chính và có thể phát minh ra một số loại giao thức để chúng giao tiếp.
  8. 🟡 [trung bình] Tích hợp với A2A. Hãy biến nó thành một tác nhân A2A! Một lần nữa, hãy hỏi Gemini CLI trợ giúp!
  9. 🔴 [phức tạp] Bạn có thể tích hợp với Chuyến bay hoặc chức năng MCP khác để tạo một công ty du lịch đa chức năng, đa diện.
  10. 🔴 [phức tạp] Tích hợp web ADK với 🍌 NanoBanana MCP. Bài tập này khó hơn bài tập ở trên và bạn có thể tìm thấy một số mẹo tại https://github.com/palladius/ai-friendly-agents/issues/11 . Tác giả đã mất 3 giờ trao đổi qua lại với Gemini CLI, Gemini3 và cả hai chúng tôi đều đọc tài liệu/mã từ rag/!

Bạn muốn tìm thêm nguồn cảm hứng?

  1. Hãy xem hướng dẫn chính thức về ADK để biết một số ý tưởng.
  2. Yêu cầu Gemini CLI tìm ý tưởng bằng cách xem tài liệu trong rag/: một câu lệnh có thể là: 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.

Điều kiện tiên quyết để sử dụng "RAG" của ADK

Để lập trình theo cảm hứng cho một chức năng, bạn nên tải toàn bộ ADK Python xuống (lưu ý: bạn có thể dễ dàng điều chỉnh ADK này cho phù hợp với ngôn ngữ mà bạn yêu thích, chẳng hạn như Java hoặc Go!)

Mã nằm trong ./rag và có thể tải xuống bằng ./download-adk.sh.

Vì thư mục rag được liệt kê trong tệp .gitignore, hãy đảm bảo .gemini/settings.json của bạn chứa nội dung sau:

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

Tại sao? Chúng tôi muốn Gemini có thể đọc các tệp đó, trong khi các tệp đó được bỏ qua một cách an toàn. Về mặt kỹ thuật, bạn cũng có thể hiện tất cả tệp .gitignore bằng cách đặt context.fileFiltering.respectGitIgnore thành false, nhưng việc này sẽ mở ra rất nhiều tệp rác node_modules/ và __pycache__/. Do đó, bạn nên chọn cách thêm thư mục cụ thể.

10. Các bước tiếp theo

Sự tò mò: Hội thảo này được xây dựng với sự trợ giúp của Gemini CLI. Nếu tò mò, bạn có thể tìm hiểu cách tôi thực hiện bằng cách xem GEMINI.md và WORKSHOP_PLAN.md trong thư mục này.

Bài học rút ra

Chúng ta đã tìm hiểu cách kết hợp ADK với Gemini CLI

Tài liệu đọc thêm

6d05afb6b8b235d8.png