ساختن «آژانس مسافرتی ساده» با ADK و Gemini CLI

۱. مقدمه

9344c1d1a9f221b7.png

آخرین به‌روزرسانی: ۲۰۲۶-۰۶-۲۲

ساختن «آژانس مسافرتی ساده» با ADK

به این کارگاه آموزشی Python(*)‏ ADK خوش آمدید، که به‌لطف Gemini CLI، با باتری‌های همراه ارائه می‌شود!

این codelab به دو 🏅 نقطه عطف تقسیم شده است:

  1. یک مسیر یادگیری رایج و ساده: راه‌اندازی + پاداش فوری.
  2. مسیر شخصی‌سازی‌شده‌ای که در آن مأموریتی را برای حل کردن با کمک Gemini CLI انتخاب می‌کنید

بخش دوم این codelab را برای هکاتون (و جوایز برای خلاقانه‌ترین راه‌حل‌ها!) عالی می‌کند.

نقطه عطف ۱: اولین عامل شما با ADK و Gemini CLI

هدف این نقطه عطف، ساختن یک آژانس مسافرتی ساده با ADK به‌صورت گام‌به‌گام است. برای انجام این کار، ابتدا می‌خواهیم Gemini CLI را راه‌اندازی کنیم تا به ما کمک کند با ADK کدنویسی کنیم؛ این کار باعث می‌شود پوسته محلی شما بتواند جدیدترین نسخه Python ADK را انتخاب کند، کد و اسناد را دریافت کند، و جدیدترین/بهترین کد را برای کار با آن برای هدف شما ارائه دهد.

این بخش راهنمای گام‌به‌گام است که در آن با افزودن تدریجی بخش‌های کوچک و ساده به یک برنامه کاملاً کاربردی می‌رسیم. این کار معمولاً حدود یک ساعت (به‌علاوه زمان نصب) طول می‌کشد.

نقطه عطف ۲: گسترش دادن عامل

پس‌از آن، ده‌ها گزینه (با دشواری‌های مختلف) به شما ارائه می‌دهیم تا برنامه را مطابق میل خود گسترش دهید. این کار به شما امکان می‌دهد جنبه‌های مختلف (رابط کاربری، عملیات، تعاملات پیچیده نماینده، و غیره) را کاوش کنید

آنچه خواهید ساخت

در این codelab، بااستفاده از ADK و Gemini CLI، یک برنامه «آژانس مسافرتی» خواهید ساخت. برنامه‌تان:

  • ازطریق Airbnb MCP به Airbnb APIs متصل شوید.
  • جستجوی آنلاین برای اطلاعات به‌روز (آب‌وهوا، تاریخ، ..)
  • ابزارهای سفارشی را اجرا کند.
  • بااستفاده از NanoBanana، تصاویری از آپارتمان‌ها/ اتاق‌ها ایجاد کنید.

‫Gemini CLI شما را در همه این موارد راهنمایی خواهد کرد: نوشتن/بازبینی کد و پیدا کردن جدیدترین اسناد در آینه محلی مخزن ADK (به زبان Python یا زبان دلخواهتان).

آنچه خواهید آموخت

  • نحوه ایجاد کردن برنامه با ADK
  • نحوه استفاده از Gemini CLI برای کدنویسی برنامه‌ها براساس اسناد محلی!
  • نحوه تعامل با سرور MCP برای متصل شدن به منابع داده بیرونی هم‌زمان، مانند این:

آنچه نیاز خواهید داشت

  • رایانه‌ای که به شما امکان می‌دهد بسته‌ها را نصب کنید (مثلاً npm install ..)
  • توانایی کدنویسی پایه در Python،‏ TypeScript،‏ Go، یا Java.
  • استفاده از یک IDE (مانند Antigravity، vscode، IntelliJ، vim) به‌شدت توصیه می‌شود.

چرا ADK + Gemini CLI؟

برخی‌از شما ممکن است بپرسید: چرا باید از ADK (کیت توسعه نرم‌افزار سازنده عامل) همراه با دستیار کد عامل محلی (مانند Gemini CLI) استفاده کنم؟ دلیل آن این است که هر دو ابزار بسیار قدرتمند هستند، اما تعامل آن‌ها ساده نیست؛ افراد زیادی تلاش کرده‌اند با هر دو به‌طور هم‌زمان کار کنند و شکست خورده‌اند (بیشتر به‌دلیل مشکلات «حلقه در حلقه»). این codelab سعی دارد چند نکته درباره نحوه ممکن کردن این همزیستی ارائه دهد.

۲. درحال راه‌اندازی

یکی از گزینه‌های زیر را انتخاب کنید: راه‌اندازی محیط با سرعت دلخواه اگر می‌خواهید این codelab را در دستگاه خودتان اجرا کنید، یا؛ شروع Cloud Shell اگر می‌خواهید این codelab را کاملاً در فضای ابری اجرا کنید.

راه‌اندازی محیط با سرعت دلخواه

  1. به سیستم کنسول Google Cloud وارد شوید و پروژه جدیدی ایجاد کنید یا از پروژه موجودی دوباره استفاده کنید. اگر ازقبل حساب Gmail یا Google Workspace ندارید، باید حسابی ایجاد کنید.

295004821bab6a87.png37d264871000675d.png96d86d3d5655cdbe.png

  • نام پروژه نام نمایشی برای شرکت‌کنندگان این پروژه است. این رشته نویسه‌ای است که Google APIs از آن استفاده نمی‌کند. همیشه می‌توانید آن را به‌روز کنید.
  • شناسه پروژه در همه پروژه‌های Google Cloud یکتا است و تغییرناپذیر است (پس‌از تنظیم شدن نمی‌توان آن را تغییر داد). Cloud Console به‌طور خودکار یک رشته یکتا تولید می‌کند؛ معمولاً برایتان مهم نیست که این رشته چیست. در اکثر codelabها، باید به «شناسه پروژه» خود (که معمولاً به‌عنوان PROJECT_ID شناسایی می‌شود) ارجاع دهید. اگر شناسه تولیدشده را دوست ندارید، می‌توانید شناسه تصادفی دیگری تولید کنید. یا می‌توانید نام کاربری خودتان را امتحان کنید و ببینید دردسترس است یا نه. بعداز این مرحله نمی‌توان آن را تغییر داد و در طول پروژه باقی می‌ماند.
  • برای اطلاع شما، مقدار سومی هم وجود دارد، شماره پروژه، که برخی‌از میاناهای برنامه‌سازی کاربردی از آن استفاده می‌کنند. در اسناد درباره هر سه این مقادیر بیشتر بدانید.
  1. سپس، برای استفاده از منابع/ میاناهای برنامه‌سازی کاربردی Cloud، باید صورت‌حساب را در Cloud Console فعال کنید. اجرای این codelab هزینه زیادی نخواهد داشت، اگر اصلاً هزینه‌ای داشته باشد. برای خاموش کردن منابع به‌منظور جلوگیری از ایجاد صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجدشرایط برنامه دوره آزمایشی رایگان ۳۰۰ دلاری هستند.

شروع Cloud Shell

درحالی‌که Google Cloud را می‌توان از راه دور از رایانه کیفی شما اجرا کرد، در این codelab از Google Cloud Shell استفاده خواهید کرد که یک محیط خط فرمان است که در Cloud اجرا می‌شود.

از کنسول Google Cloud، روی نماد Cloud Shell در نوار ابزار بالا سمت چپ کلیک کنید:

فعال کردن Cloud Shell

تأمین و اتصال به محیط فقط چند لحظه طول می‌کشد. وقتی تمام شد، باید چیزی شبیه به این ببینید:

نماگرفتی از ترمینال Google Cloud Shell که نشان می‌دهد محیط متصل شده است

این ماشین مجازی با همه ابزارهای توسعه‌ای که نیاز دارید بارگیری شده است. این ابزار یک دایرکتوری خانگی دائمی ۵ گیگابایتی ارائه می‌دهد و در Google Cloud اجرا می‌شود که عملکرد شبکه و اصالت‌سنجی را به‌طور قابل‌توجهی بهبود می‌بخشد. همه کارهای شما در این codelab می‌تواند در مرورگر انجام شود. نیازی نیست چیزی نصب کنید.

۳. پیش‌نیازها (نصب)

برای این آموزش، باید موارد زیر را نصب کنید:

۱. 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» را برای تقلید از محیط شما انجام دهد.

۲. ‫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 بارگیری کنید

برای مرحله ۴ (در ادامه)، باید npx را نیز نصب کنید. هر دو npm و npx باید به‌طور طبیعی به‌عنوان بخشی از Gemini CLI ارائه شوند. اگر نه، از Gemini CLI بخواهید در اینجا به شما کمک کند.

efade99623113f1.png

احراز هویت

به یک پروژه Google Cloud با Vertex AI فعال‌شده یا یک کلید میانای برنامه‌سازی کاربردی 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/ ایجاد کنید، بنابراین بیایید پوشه و دو فایل مورد نیازمان را ایجاد کنیم.

این لحظه‌ای است که می‌توانید 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 کاملاً ضروری نیست، اما اگر ناموفق باشد، متوجه می‌شوید که باید نصب Python یا uv را اصلاح کنید. این کار باید adk و سایر اسکریپت‌های مفید را در پوشه ./.venv/bin/ نصب کند.

برای آزمایش راه‌اندازی، می‌توانید به‌سادگی make test-step1 را اجرا کنید و مطمئن شوید که 403 PERMISSION DENIED. دریافت نمی‌کنید

راه‌حل‌های موجود

کد به‌طور کامل در 📂 steps/ قرار دارد. می‌توانید کد را از آنجا کپی کنید.

این codelab درباره یادگیری نحوه نوشتن کد ADK خوب نیست؛ بلکه درباره راه‌اندازی محیط شما برای دریافت کد خوب است که به‌طور خودکار تحت هدایت شما نوشته می‌شود.

  1. درحال نصب نرم‌افزار
  2. پیکربندی / راه‌اندازی آن، و
  3. ورود به «چرخه بازخورد» درست

این چیزی است که واقعاً می‌خواهیم در اینجا یاد بگیرید. همچنین می‌توانید همه آن‌ها را به‌طور هم‌زمان ازطریق $ make web-4steps آزمایش کنید!

۴. مرحله ۱: عامل پایه

abfef47ab2ff0c98.png

بیایید با ایجاد یک عامل پایه که می‌تواند مکالمه داشته باشد شروع کنیم.

فایل 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.",
)

آزمایش کردن عامل

این موضوع برای همه مراحل صادق است. ADK به شما امکان می‌دهد عاملتان را به دو روش آزمایش کنید: CLI و وب.

  • CLI برای آزمایش‌های سریع و خودکار بهترین گزینه است
  • وب بهترین گزینه برای دیدن اتفاقات، استفاده از میکروفون (!)، و عیب‌یابی است.

نکته: برای این تمرین، برای انجام هر کاری (به‌جز آزمایش واحد)، از وب استفاده کنید. واقعاً شگفت‌انگیز است! CLI را فقط برای آزمایش خودکار نگه دارید.

یک پیام‌واره خوب که مراحل ۱-۲-۳-۴ را به‌درستی آزمایش می‌کند می‌تواند این باشد (پیام‌واره هوشمند «لیتموس»):

سلام، می‌خواهم برای فردا شب هتلی در مرکز شهر پاریس برای یک نفر و یک شب رزرو کنم. ترجیحاً نزدیک به «ایستگاه لیون». بودجه: کمتر از ۲۰۰ یورو برای هر شب.

  1. Tell me which YYYYMMDD and Day of the Week is tomorrow.‎ (به من بگو فردا چه روزی از هفته و چه تاریخی است.)
  2. بگو کدام هتل را برای فردا می‌بینی (حداقل ۳ هتل). I want to see: > price, address, some rating (in form of XX/YY, eg "4.7/5" - from Google Hotels, Booking or Airbnb), # reviews. آن‌ها را در قالب جدولی به من بده. در حالت ایده‌آل، نام هتل باید به نوعی نشانی وب هتل پیوند داده شود (نیازی به افزودن ستون نشانی وب نیست). مطمئن شوید پیوند معتبر است (کار می‌کند و صفحه به اطلاعاتی درباره هتل اشاره می‌کند!)

This is a smart prompt as it tests time and hotels and will fail differently in steps 1,2,3 and should fully succeed only in step 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. سؤالتان را به‌صورت نوشتاری یا ازطریق میکروفون بپرسید، چیزی شبیه به «پیام‌واره لیتموس».

میانای کاربری وب ADK که نتیجه کارگزار مسافرتی را نشان می‌دهد

توجه داشته باشید که باید adk web را از پوشه بالایی، با توجه به نسخه CLI، فراخوانی کنید.

روبات زرد - نتیجه مرحله ۱ با تاریخ و هتل‌های پیشنهادی

در اینجا یک راه‌حل ممکن با کژپنداری نیمه تاریخ ارائه شده است. توجه: ۳ پیوند از ۵ پیوند رزرو کار می‌کند! بد نبود.

۵. مرحله ۲: افزودن ابزار ()now

ویرایشگر Cloud Shell که پیاده‌سازی ابزار ()now را در agent.py نشان می‌دهد

این تابع را درست قبل‌از تعریف root_agent به agent.py اضافه کنید:

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
    }

تعریف عامل را به‌روز کنید تا ابزار را دربرگیرد:

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

‫۶. Step 3: Let's switch gears: google_search

‫google_search. این کار به نماینده ما اجازه می‌دهد به اطلاعات هم‌زمان از وب دسترسی داشته باشد.

3cd72c019b8b225f.png

تکلیف شما این است که عامل را از «مرحله ۲» اصلاح کنید. به‌جای استفاده از ابزار now، ابزار google_search را از کتابخانه 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".""",
)

نحوه اجرا

همانند مرحله ۱.

فقط کارشناسان. برای ادغام پیشرفته‌تر (استفاده از google_search و now باهم)، کد را در steps/step03b_search_and_tool/agent.py بررسی کنید و آن را با make run-step3b اجرا کنید. این کاملاً اختیاری است.

‫۷. مرحله ۴: ابزاری پیچیده‌تر: MCP

نشان‌واره ADK

اکنون که هم ابزارهای سفارشی و هم ابزارهای داخلی را دیده‌ایم، بیایید به سراغ چیزی قدرتمندتر برویم: الگوی مدل به‌عنوان ابزار بااستفاده از پروتکل بافتار مدل (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 را با دستورالعمل نادیده گرفتن robots.txt وصله کنید. برای جزئیات بیشتر، اسناد را بخوانید: https://github.com/openbnb-org/mcp-server-airbnb
  2. اگر خطای timeout دریافت کردید (۵ ثانیه برای دریافت پاسخ از Airbnb خیلی کم است)، به اسناد ADK مراجعه کنید تا ببینید چگونه می‌توانید زمان وقفه را مثلاً به ۳۰ ثانیه افزایش دهید. یا.. از Gemini CLI برای انجام آن استفاده کنید! Note that on 3dec25m Cloud Shell gave me a timeout error, I fixed the timeout error, and still got errors, until I forced it to the previous version: args=["-y", "@openbnb/mcp-server-airbnb@0.1.2", "--ignore-robots-txt"].

‫۸. 🏅 نقطه عطف ۱ تکمیل شد!

🏅 تبریک می‌گوییم! 🏅 اکنون کارشناس ADK هستید! بخش اول کارگاه را تکمیل کرده‌اید و با موفقیت عامل‌های هوش مصنوعی را با ابزارهای سفارشی، ابزارهای داخلی، و ابزارهای پیشرفته MCP ساخته و آزمایش کرده‌اید. اکنون آماده‌اید تا با Google Agent Development Kit، عامل‌های شگفت‌انگیز خودتان را بسازید!

اکنون یک کارگزار مسافرتی کاربردی دارید که زمان را می‌داند و می‌تواند در وب جستجو کند. اکنون هیچ محدودیتی وجود ندارد!

اکنون زمان آن رسیده است که با «Gemini CLI» عملکرد دیگری اضافه کنید.

‫۹. ‫🏅 نقطه عطف ۲: کدنویسی حسی در ADK ازطریق Gemini CLI

اکنون وارد بخش جالب کارگاه می‌شویم.

  1. مطمئن شوید کد را در جایی امن git commitذخیره کرده‌اید. می‌توانید کد اصلی را فورک کنید یا شاخه ایجاد کنید: نگران نباشید، Gemini CLI در این زمینه کمک بزرگی به شما می‌کند!
  2. 💡 ایده‌ای برای اجرا پیدا کنید. می‌توانید ایده‌های زیر را بررسی کنید، خودتان ایده‌ای پیدا کنید، یا از Gemini بخواهید اسناد موجود در rag/ را بررسی کند و چند ایده هوشمندانه پیشنهاد دهد.
  3. پیش‌نیازها را دنبال کنید تا مطمئن شوید Gemini می‌تواند اسناد ADK را بخواند، و سپس آماده شروع هستید!

💡 ایده‌ها

  1. 🟢 [آسان] آیا به چند زبان صحبت می‌کنید؟ می‌خواهید go یا java یا TypeScript بدهید؟ بازسازی کد موجود بسیار ساده است! فقط مطمئن شوید که ADK مناسب را بارگیری کرده‌اید و از Gemini CLI بخواهید ترجمه را انجام دهد!
  2. 🟢 [آسان] اموجی اضافه کنید یا قالب خروجی دلخواهتان را مشخص کنید (مثلاً جدولی با اموجی هتل، به‌دنبال آن قیمت، و به‌دنبال آن اموجی‌های ۱ تا ۵ ستاره با 🌕🌕🌕🌗🌑 برای نشان دادن نیم‌ستاره‌ها!).
  3. 🟢 [آسان] پیام‌واره را تغییر دهید تا چیزهایی را که به‌طور خاص به‌دنبال آن هستید یا نیستید (پذیرای حیوانات خانگی، نبودن در طبقه همکف، ساکت، نزدیک به حمل‌ونقل عمومی، ..) به آن آموزش دهید و آن را آزمایش کنید. شاید رده‌بندی شخصی مثل «رده‌بندی YOUR_NAME از ۱ تا ۱۰» براساس موارد بالا اضافه کنید و براساس آن رده‌بندی مرتب کنید.
  4. 🟢 [easy] Any Operator in the room? در Cloud Run مستقر کنید! یا به Vertex AI Agent Engine! آیا می‌دانستید که می‌توانید این عامل را ادغام کنید و مستقیماً از Gemini Enterprise جدید با آن تماس بگیرید؟
  5. 🟢 [آسان] adk run را با 🍌 NanoBanana MCP ادغام کنید. به کلید Gemini API نیاز دارد. در اینجا می‌توانید تصویر ایجاد کنید اما نمی‌توانید آن‌ها را تجسم کنید. برای دیدن نوع سخت‌تر، به زیر مراجعه کنید.
  6. 🟡 [متوسط] یک زیرنماینده ایجاد کنید که HotelSearch را انجام دهد و یک BudgetAgent یا LocationAgent ایجاد کند که بتواند هتل‌ها را با رعایت نیازهای مکانی شما، مثلاً «نه بیشتر از X کیلومتر از مکان»، تکرار کند. اگر میانای برنامه‌سازی کاربردی این کار را مجاز نکند، ممکن است با کمک GoogleSearch چندبار رفت‌وبرگشت انجام شود. توجه: Gemini CLI می‌تواند به شما کمک کند.
  7. 🟡 [متوسط] AirbnbReviewAgent را پیاده‌سازی کنید که به مرورها می‌رود و نکات مثبت و منفی را در چند نکته رنگی برای ۱ یا N هتل حاصل از جستجو خلاصه می‌کند. شما ازقبل ۲ مؤلفه دارید (GoogleSearch و MCP Airbnb)، سپس باید این را به «نماینده» اصلی متصل کنید و شاید نوعی پروتکل برای ارتباط آن‌ها ابداع کنید.
  8. 🟡 [متوسط] ادغام با A2A. آن را به عامل A2A تبدیل کنید! دوباره از Gemini CLI کمک بخواهید!
  9. 🔴 [complex] You can integrate with Flights or other MCP functionality to create a multi-faceted multi functional travel agent.
  10. 🔴 [complex] Integrate ADK web with 🍌 NanoBanana MCP. این کار سخت‌تر از کار قبلی است و می‌توانید چند نکته را در https://github.com/palladius/ai-friendly-agents/issues/11 پیدا کنید. این کار ۳ ساعت طول کشید و نویسنده با 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.

پیش‌نیازهای ADK «RAG»

برای کدنویسی سریع یک عملکرد، توصیه می‌کنیم کل ADK python ADK را بارگیری کنید (توجه: این ADK را می‌توان به‌راحتی با زبان موردعلاقه‌تان، مثل Java یا Go، سازگار کرد!)

کد تحت ./rag است و می‌توان آن را با ./download-adk.sh بارگیری کرد.

چون پوشه rag در فایل .gitignore شما فهرست شده است، مطمئن شوید .gemini/settings.json شما حاوی موارد زیر باشد:

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

چرا؟ می‌خواهیم Gemini بتواند آن فایل‌ها را بخواند، درحالی‌که به‌طور ایمن git-ignored شده‌اند. ازنظر فنی، می‌توانید با تنظیم context.fileFiltering.respectGitIgnore روی false، همه فایل‌های gitignore .را آشکار کنید، اما این کار باعث باز شدن تعداد زیادی فایل‌های به‌دردنخور node_modules/ و __pycache__/ می‌شود - بنابراین، گنجاندن صریح پوشه گزینه ترجیحی است.

‫۱۰. مراحل بعدی

کنجکاوی: این کارگاه با کمک Gemini CLI ساخته شده است. اگر کنجکاو هستید، می‌توانید با نگاه کردن به GEMINI.md و WORKSHOP_PLAN.md در این پوشه ببینید چطور این کار را انجام دادم.

درس‌های آموخته‌شده

یاد گرفتیم که چگونه ADK را با Gemini CLI جفت کنیم

مطالب بیشتر

6d05afb6b8b235d8.png