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 2 tháng 2 năm 2026

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

Chào mừng bạn đến với hội thảo ADK Python(*) này. Hội thảo này có sẵn các công cụ cần thiết nhờ Gemini CLI!

Lớp học lập trình này được chia thành 2 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ả tức thì.
  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ự trợ giúp 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 hackathon (và phần thưởng cho những giải pháp sáng tạo nhất!)

Giai đoạn 1: Trợ lý đầu tiên của bạn với ADK và Gemini CLI

Mục tiêu của cột mốc này là xây dựng một đại lý du lịch đơn giản bằng ADK từng bước.

Để làm như vậ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; việc này sẽ giúp shell cục bộ của bạn có thể chọn phiên bản Python ADK mới nhất, không phù hợp với 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 mã đó cho mục tiêu của bạn.

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

Giai đoạn 2: Mở rộng phạm vi hoạt động của trợ lý ảo

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

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 Đại lý du lịch bằng ADK và Gemini CLI. Ứng dụng này sẽ:

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

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 xét 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ữ mà bạn yêu thích).

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

  • Cách tạo và tạo ứng dụng bằng ADK
  • Cách sử dụng Gemini CLI để viết mã cho các ứ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, chẳng hạn như:

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

Vì sao nên dùng ADK và Gemini CLI?

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

2. Thiết lập

Chọn một trong các lựa chọn sau: Thiết lập môi trường tự học nếu bạn muốn chạy

lớp học lập trình trên máy của riêng bạn hoặc; Khởi động 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 theo tốc độ của riêng bạn

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

37d264871000675d.png

96d86d3d5655cdbe.png

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
  • Mã dự án là giá trị duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi chế độ này sau bước này và chế độ này sẽ duy trì trong suốt thời gian diễn ra dự án.
  • Để bạn nắm được thông tin, 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ả 3 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 trên Cloud. Việc thực hiện 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 bị tính phí ngoài phạm vi 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.

Khởi động Cloud Shell

Mặc dù có thể vận hành Google Cloud từ xa trên 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.

Trên Bảng điều khiển Google Cloud, 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 này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

Ảnh chụp màn hình cửa sổ dòng lệnh 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ác công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện mọi thao tác trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt bất cứ thứ gì.

Đ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

pythonuv (trình quản lý gói cho Python). Bạn cần có ADK. Đảm bảo bạn đã cài đặt uv:

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

Tại sao lại là uv? Mặc dù bạn có thể dùng trình quản lý Python mà mình muốn, nhưng việc dùng uv sẽ đảm bảo chế độ thiết lập ENV/PATH cho Python sẽ giống nhau cho bạn và Gemini CLI, vì vậy, trải nghiệm trên shell của bạn sẽ gần giống với 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 .

Lưu ý: Bạn cần cài đặt npm hoặc npx.

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ả npmnpx đều sẽ xuất hiện tự nhiên trong Gemini CLI. Nếu không, hãy nhờ Gemini CLI trợ giúp bạn tại đây.

Ngoài ra, bạn cũng có thể muốn cài đặt just. Đây là một Makefile nâng cao hơn và tự ghi lại. Ngoài ra, bạn có thể yêu cầu Gemini CLI trợ giúp cài đặt công cụ này. Gemini CLI có thể làm việc này cho bạn!

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 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 RIÊNG của mình trong mysolution/. Vì vậy, hãy tạo thư mục và 2 tệp mà chúng ta cần.

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

# 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 không bắt buộc, nhưng nếu không thành công, bạn biết rằng bạn cần phải sửa lỗi cài đặt Python hoặc uv.

Các 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 phải là về việc học cách viết mã ADK hiệu quả, mà là về việc thiết lập môi trường để tự động viết mã HIỆU QUẢ theo chỉ dẫn của bạn.

  1. Cài đặt phần mềm
  2. định cấu hình / thiết lập để hoạt động và
  3. tham gia 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 tại đây. Bạn cũng có thể kiểm thử tất cả cùng lúc thông qua $ just web-4steps!

3. Bước 1: Agent 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 là 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! Nhờ đó, ADK biết vị trí mã của bạn: trong agent.py.

Chỉnh sửa tệp có tên là 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 áp dụng cho tất cả các bước. ADK cho phép bạn kiểm thử nhân viên hỗ trợ theo 2 cách: CLI và Web.

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

Lưu ý: để hoàn thành mọi việc (ngoại trừ kiểm thử đơn vị) cho mục đích của bài tập này, hãy sử dụng Web. Thật tuyệt vời! Chỉ giữ lại CLI cho kiểm thử tự động.

Một câu lệnh phù hợp để kiểm thử đúng các bước 1-2-3-4 có thể là câu lệnh sau (câu lệnh "thử nghiệm nhanh" thông minh):

# <!– litmus prompt –> Hi, I'd like to book a hotel in Paris for tomorrow evening alone, one night, in Paris city center. Lý tưởng nhất là gần Gare de Lyon. Ngân sách: dưới 200 EUR mỗi đêm.

  1. Cho tôi biết ngày mai là ngày nào (YYYYMMDD) và thứ mấy.
  2. Hãy 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ưới dạng XX/YY, ví dụ: "4,7/5" – từ Google Khách sạn, Booking hoặc Airbnb), số lượng bài đánh giá. Cho tôi biết thông tin đó ở định 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 loại URL nào đó của khách sạn (không cần thêm cột URL). Đảm bảo đường liên kết 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ẽ thất bại theo nhiều 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ử sử dụng "câu lệnh kiểm thử" ở trên.

Có thể bạn sẽ không biết được 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 . : Lệnh này chạy tất cả các tác nhân trong thư mục này. Bạn muốn trỏ đến thư mục con "mysolution/"
  2. chọn biểu tượng 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ô theo kiểu "câu lệnh kiểm tra".

TODO(ricc): <image here>

Xin lưu ý rằng bạn cần gọi adk web từ thư mục phía trên, liên quan đến phiên bản CLI.

Sau đây là một giải pháp có thể áp dụng, trong đó có thông tin ngày tháng bán chính xác. Lưu ý: 3 trong số 5 đường liên kết đặt phòng đang hoạt động! Không tệ.

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

Trợ lý không biết "hôm nay" là ngày nào. Hãy cung cấp cho trợ lý một công cụ.

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

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 về tác nhân để thêm công cụ:

  # file XXX.py

  travel_agent = LlmAgent(
        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. Lúc này, ứng dụng 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 nội dung 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/

5. Bước 3: Chuyển sang chủ đề khác: google_search

Giờ đây, khi đã biết cách tạo một công cụ tuỳ chỉnh, hãy cùng khám phá cách sử dụng một trong những công cụ mạnh mẽ được tích hợp sẵn do ADK cung cấp: google_search. Nhờ đó, trợ lý ảo của chúng tôi có thể 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 từ 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 trong 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

Giống như bước 1.

Chỉ dành cho chuyên gia. Để tích hợp nâng cao hơn (sử dụng google_searchnow cùng nhau), hãy kiểm tra mã trong steps/step03b_search_and_tool/agent.py và chạy mã đó bằng just run-step3b. Bạn không bắt buộc phải thực hiện việc này.

6. Bước 4: Công cụ phức tạp hơn: MCP

VIỆC CẦN LÀM(ricc): thêm hình ảnh 4

Bây giờ, chúng ta đã xem xét 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ụ bằng cách sử dụng Giao thức bối cảnh mô hình (MCP).

Để bước này tập trung vào các chức năng mạnh mẽ của MCP, chúng tôi sẽ một lần nữa thay thế công cụ trước đây (google_search). Chúng tôi 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. Điều 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à FunctionToolMCPToolset) để thực hiện các tác 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 cài đặt npx trên hệ thống. Đối với phần còn lại, quy trình này giống như quy trì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 chỉ thị bỏ qua robot. Đọ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 ADK về cách tăng thời gian chờ lên 30 giây. Hoặc... sử dụng Gemini CLI để thực hiện việc này! Xin 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 chuyển về phiên bản trước: args=["-y", "@openbnb/mcp-server-airbnb@0.1.2", "--ignore-robots-txt"].

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

🏅 Xin chúc mừng! 🏅 Bạn hiện là 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ác công cụ tuỳ chỉnh, công cụ tích hợp 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 đại lý du lịch hoạt động hiệu quả, 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!

Giờ là lúc thêm một chức năng bổ sung bằng "Gemini CLI".

8. 🏅 Cột mốc 2: lập trình theo cách của bạn thông qua ADK bằng Gemini CLI

Giờ đây, chúng ta sẽ bước vào phần thú vị của buổi hướng dẫn.

  1. đảm bảo bạn đã git commitmã này ở nơi an toàn. Bạn có thể phân nhánh mã nguồn ban đầu hoặc tạo một nhánh: đừng lo lắng, Gemini CLI có thể giúp bạn làm 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 xét 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 ADK. Sau đó, bạn có thể bắt đầu!

💡 Ý tưởng

Sau đây là một trình đơn gồm một số Ý tưởng có độ phức tạp khác nhau.

  1. 🟢 [dễ] Bạn có phải là người biết nhiều ngôn ngữ không? Bạn muốn tặng go, java hay Typescript? 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 và 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 muốn (ví dụ: một 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 từ 1 đến 5 sao dựa trên 🌕🌕🌕🌗🌑 để làm cả nửa sao!).
  3. 🟢 [dễ] Thay đổi câu lệnh để dạy cho AI những điều bạn đang tìm kiếm hoặc không tìm kiếm (cho phép thú cưng, không có tầng trệt, yên tĩnh, gần phương tiện công cộng, ...) và thử nghiệm. Bạn có thể thêm điểm xếp hạng cá nhân như "điểm xếp hạng YOUR_NAME từ 1 đến 10" dựa trên những thông tin trên và sắp xếp theo điểm xếp hạng đó.
  4. 🟢 [dễ] Có nhân viên hỗ trợ nào trong phòng không? 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. Yêu cầu Khoá Gemini API. Tại đây, bạn có thể tạo hình ảnh nhưng không thể hình dung được. 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 trợ lý ảo phụ có thể thực hiện HotelSearch và tạo một BudgetAgent hoặc một LocationAgent có thể tăng gấp đôi và lặp lại các khách sạn theo 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ể Google Tìm kiếm sẽ giúp bạn trao đổi qua lại. Lưu ý: Gemini CLI có thể trợ giúp bạn.
  7. 🟡 [trung bình] Triển khai một AirbnbReviewAgent đi vào phần đánh giá và tóm tắt điểm tích cực và tiêu cực trong một vài dấu đầu dòng được mã hoá bằng màu sắc, cho 1 hoặc N khách sạn trong kết quả tìm kiếm. Bạn đã có 2 thành phần (Google Tìm kiếm và MCP Airbnb), sau đó bạn cần kết nối thành phần này với Agent chính và có thể tạo ra một loại giao thức nào đó để 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 nhờ 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 các chức năng khác của MCP để tạo một công ty du lịch đa chức năng và đa dạng.
  10. 🔴 [phức tạp] Tích hợp ADK web với 🍌 NanoBanana MCP. Thử thách này khó hơn thử thách 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 tuyệt vời về ADK của Maurizio để có 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 cho ADK "RAG"

Để tạo mã rung cho một chức năng, bạn nên tải toàn bộ ADK python ADK xuống (lưu ý: bạn có thể điều chỉnh ADK này rất dễ dàng cho 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 rằng .gemini/settings.json của bạn chứa những nội dung sau:

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

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

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

Tính 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ể xem cách tôi thực hiện bằng cách xem GEMINI.mdWORKSHOP_PLAN.md trong thư mục này.

Bài học rút ra

Chúng ta đã tìm hiểu cách ghép nối ADK với Gemini CLI

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

6d05afb6b8b235d8.png