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

۱. مقدمه

۹۳۴۴c1d1a9f221b7.png

آخرین به‌روزرسانی: 2026-02-02

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

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

این آزمایشگاه کد به دو نقطه عطف تقسیم می‌شود:

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

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

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

هدف از این مرحله، ساخت یک آژانس مسافرتی ساده با ADK به صورت گام به گام است.

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

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

مرحله دوم: تمدید نمایندگی

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

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

در این آزمایشگاه کد، شما قصد دارید یک برنامه آژانس مسافرتی با استفاده از ADK و Gemini CLI بسازید. برنامه شما:

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

رابط خط فرمان Gemini شما را در تمام این موارد راهنمایی خواهد کرد: کد بنویسید/بررسی کنید و جدیدترین اسناد را در یک آینه محلی از مخزن ADK (به زبان پایتون یا زبان مورد علاقه خود) پیدا کنید.

آنچه یاد خواهید گرفت

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

آنچه نیاز دارید

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

چرا ADK + Gemini CLI؟

برخی از شما ممکن است از خود بپرسید: چرا باید از ADK (یک SDK سازنده عامل) همراه با یک کمک‌کننده کد عامل محلی (مانند Gemini CLI) استفاده کنم؟ دلیل این امر این است که هر دو ابزار فوق‌العاده قدرتمند هستند، اما تعامل آنها بی‌اهمیت نیست. بسیاری از افراد سعی کرده‌اند با هر دو به صورت ترکیبی کار کنند و شکست خورده‌اند (عمدتاً به دلیل مشکلات "حلقه در حلقه"). این آزمایشگاه کد در تلاش است تا چند نکته در مورد چگونگی امکان‌پذیر کردن این همزیستی را به اشتراک بگذارد.

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

یکی از گزینه‌های زیر را انتخاب کنید: اگر می‌خواهید این را اجرا کنید، تنظیم محیط خودتنظیم

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

تنظیم محیط خودتنظیم

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

۲۹۵۰۰۴۸۲۱bab6a87.png

37d264871000675d.png

۹۶d86d3d5655cdbe.png

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

شروع پوسته ابری

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

از کنسول گوگل کلود ، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

فعال کردن پوسته ابری

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

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

این ماشین مجازی با تمام ابزارهای توسعه‌ای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و روی فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. تمام کارهای شما در این آزمایشگاه کد را می‌توان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.

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

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

۱. پایتون و یووی

python و uv (مدیر بسته برای پایتون ). این برای ADK مورد نیاز است. مطمئن شوید که uv را نصب کرده‌اید:

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

چرا uv؟ در حالی که می‌توانید از هر مدیر پایتونی که ترجیح می‌دهید استفاده کنید، استفاده از uv تضمین می‌کند که تنظیمات ENV/PATH برای پایتون برای شما و برای Gemini CLI یکسان خواهد بود، بنابراین تجربه پوسته شما تقریباً مشابه Gemini CLI خواهد بود. به عنوان مثال، اگر از virtualenv استفاده کنید، Gemini CLI مجبور می‌شود کارهایی مانند "source .env/venv/bin/activate && my-original-command" را برای تقلید از محیط شما انجام دهد.

۲. رابط خط فرمان جمینی

برای رابط خط فرمان Gemini، دستورالعمل‌های نصب را اینجا بیابید: https://github.com/google-gemini/gemini-cli .

توجه: این کار نیاز به نصب npm یا npx دارد.

نصب npm -g @google/gemini-cli

  1. در مک ، می‌توانید طبق مستندات رسمی brew استفاده کنید.
  2. در ویندوز ، می‌توانید chocolatey استفاده کنید یا فایل اجرایی را از https://nodejs.org/en/download دانلود کنید.

برای مرحله ۴ (بعداً)، به npx نیز نیاز خواهید داشت. هم npm و npx باید به طور طبیعی به عنوان بخشی از رابط خط فرمان Gemini باشند. در غیر این صورت، از رابط خط فرمان Gemini بخواهید که در اینجا به شما کمک کند.

به صورت اختیاری، ممکن است بخواهید just را نیز نصب کنید، که یک Makefile پیشرفته‌تر و خود-مستندساز است. همچنین اینجا: از Gemini CLI بخواهید که در نصب این به شما کمک کند، او می‌تواند این کار را برای شما انجام دهد!

efade99623113f1.png

احراز هویت.

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

این لحظه‌ای است که می‌توانید 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 الزاماً الزامی نیست، اما اگر با شکست مواجه شد، می‌دانید که باید نصب پایتون یا uv خود را اصلاح کنید.

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

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

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

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

این چیزی است که ما واقعاً می‌خواهیم شما اینجا یاد بگیرید. همچنین می‌توانید همه آنها را همزمان از طریق $ just 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 برای تست‌های سریع و خودکار بهترین گزینه است
  • وب بهترین گزینه برای مشاهده بصری اتفاقات، استفاده از میکروفون (!) و عیب‌یابی است.

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

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

# <!– litmus prompt –> سلام، من می‌خواهم یک هتل در پاریس برای فردا شب، به مدت یک شب، در مرکز شهر پاریس رزرو کنم. در حالت ایده‌آل نزدیک به ایستگاه قطار لیون. بودجه: کمتر از شبی ۲۰۰ یورو.

  1. به من بگو YYYYMMDD و فردا کدام روز هفته است؟
  2. به من بگویید کدام هتل را برای فردا پیشنهاد می‌دهید (حداقل ۳ تا). می‌خواهم موارد زیر را ببینم: > قیمت، آدرس، امتیاز (به شکل XX/YY، مثلاً "۴.۷/۵" - از Google Hotels، Booking یا Airbnb)، # نظر. آنها را به صورت جدولی به من بدهید. در حالت ایده‌آل، نام هتل باید به نوعی URL هتل لینک شده باشد (خودتان را به زحمت نیندازید و یک ستون URL اضافه نکنید). مطمئن شوید که لینک معتبر است (کار می‌کند و صفحه به اطلاعات مربوط به هتل اشاره می‌کند!)

این یک دستور هوشمندانه است زیرا زمان و هتل‌ها را آزمایش می‌کند و در مراحل ۱، ۲، ۳ به طور متفاوتی شکست می‌خورد و فقط در مرحله ۴ باید کاملاً موفق باشد. البته می‌توانید از هر دستوری که می‌خواهید استفاده کنید!

آن را از 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 . : این دستور تمام agent های زیر این پوشه را اجرا می‌کند. شما باید آن را به زیرپوشه "mysolution/" هدایت کنید.
  2. mysolution/ در بالا سمت راست انتخاب کنید ( تصویر کنار را ببینید )
  3. سوال خود را به صورت متنی یا از طریق میکروفون، چیزی شبیه به «دستور لیتموس» بپرسید.

TODO(ricc): <تصویر اینجا>

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

این یک راه حل ممکن است، با یک تاریخ نیمه توهمی. نکته ۳ از ۵ لینک رزرو کار می‌کند! بد نیست.

۴. مرحله ۲: ابزار now() را اضافه کنید

عامل نمی داند «امروز» چیست. بیایید به او ابزار بدهیم.

TODO(image): ricc تصویر مرحله ۲ را اینجا قرار بده.

این تابع را درست قبل از تعریف 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

  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/

۵. مرحله ۳: بیایید بحث را عوض کنیم: google_search

حالا که می‌دانیم چگونه یک ابزار سفارشی ایجاد کنیم، بیایید نحوه استفاده از یکی از ابزارهای قدرتمند داخلی ارائه شده توسط ADK یعنی 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 را بررسی کنید و آن را just run-step3b اجرا کنید. این کاملاً اختیاری است.

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

TODO(ricc): تصویر ۴ را اضافه کنید

حالا که ابزارهای سفارشی و داخلی را بررسی کردیم، بیایید به سراغ چیزی قدرتمندتر برویم: الگوی مدل به عنوان ابزار با استفاده از پروتکل زمینه مدل (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 مواجه شدید (۵ ثانیه برای دریافت پاسخ توسط Airbnb خیلی کم است)، به مستندات ADK در مورد نحوه افزایش timeout به مثلاً ۳۰ ثانیه نگاه کنید. یا... از Gemini CLI برای انجام این کار استفاده کنید! توجه داشته باشید که در تاریخ ۳dec25m، Cloud Shell خطای timeout به من داد، من خطای timeout را برطرف کردم و همچنان خطا داشتم، تا اینکه آن را مجبور به استفاده از نسخه قبلی کردم: args=["-y", "@openbnb/mcp-server-airbnb@0.1.2", "--ignore-robots-txt"] .

۷. 🏅 مرحله‌ی مهم ۱ کامل شد!

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

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

وقت آن نرسیده که با "Gemini CLI" یک قابلیت اضافی اضافه کنیم.

۸. 🏅 مرحله‌ی مهم ۲: کدنویسی پویا از طریق ADK از طریق رابط خط فرمان Gemini

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

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

💡 ایده‌ها

در اینجا منویی با ایده‌هایی با پیچیدگی‌های مختلف ارائه شده است.

  1. 🟢 [آسان] آیا شما یک چندزبانه هستید؟ آیا می‌خواهید go یا Typescript java کنار بگذارید؟ ریفکتور کردن کد موجود بسیار ساده است! فقط مطمئن شوید که ADK مناسب را دانلود کرده‌اید و از Gemini CLI بخواهید ترجمه را انجام دهد!
  2. 🟢 [آسان] ایموجی اضافه کنید یا فرمت خروجی مورد نظر خود را مشخص کنید (مثلاً یک جدول با ایموجی هتل، به دنبال آن قیمت، و به دنبال آن ایموجی‌های ۱ تا ۵ ستاره بر اساس 🌕🌕🌕🌗🌑 برای نصف کردن!).
  3. 🟢 [آسان] سوال را تغییر دهید تا چیزهایی را که به طور خاص به دنبال یا مخالف آنها هستید به آن آموزش دهید (مانند: مناسب برای حیوانات خانگی، بدون طبقه همکف، ساکت، نزدیک به حمل و نقل عمومی، و ...) و آن را آزمایش کنید. می‌توانید بر اساس موارد فوق، یک امتیاز شخصی مانند "امتیاز YOUR_NAME از ۱ تا ۱۰" اضافه کنید و بر اساس آن امتیاز مرتب کنید.
  4. 🟢 [آسان] هر اپراتوری در اتاق است؟ روی Cloud Run مستقر شوید! یا روی Vertex AI Agent Engine ! آیا می‌دانستید که می‌توانید این عامل را ادغام کنید و مستقیماً از Gemini Enterprise جدید آن را فراخوانی کنید؟
  5. 🟢 [آسان] ادغام `adk run`` با 🍌 NanoBanana MCP . به کلید API Gemini نیاز دارد. در اینجا می‌توانید تصاویر ایجاد کنید اما نمی‌توانید آنها را تجسم کنید. برای نوع سخت‌تر به زیر مراجعه کنید.
  6. 🟡 [متوسط] یک نماینده فرعی ایجاد کنید که HotelSearch را انجام دهد و یک BudgetAgent یا LocationAgent ایجاد کنید که بتواند هتل‌ها را با توجه به نیازهای مکانی شما، مثلاً «نه بیشتر از X کیلومتر از مکان»، دو برابر کند و تکرار کند. اگر API این امکان را ندهد، ممکن است با کمک GoogleSearch کمی جابه‌جایی وجود داشته باشد. توجه: Gemini CLI می‌تواند به شما کمک کند.
  7. 🟡 [متوسط] یک AirbnbReviewAgent پیاده‌سازی کنید که به بررسی‌ها می‌پردازد و نکات مثبت و منفی را در چند نقطه رنگی برای ۱ یا N هتل حاصل از جستجو خلاصه می‌کند. شما از قبل ۲ عنصر (GoogleSearch و MCP Airbnb) دارید، سپس باید این را به نماینده اصلی متصل کنید و شاید نوعی پروتکل برای ارتباط آنها اختراع کنید.
  8. 🟡 [متوسط] با A2A ادغام شوید. آن را به یک عامل A2A تبدیل کنید! دوباره، از Gemini CLI کمک بخواهید!
  9. 🔴 [پیچیده] می‌توانید با قابلیت پروازها یا سایر قابلیت‌های MCP ادغام شوید تا یک آژانس مسافرتی چندوجهی و چندمنظوره ایجاد کنید.
  10. 🔴 [پیچیده] ادغام ADK web با 🍌 NanoBanana MCP . این مورد از مورد بالا سخت‌تر است و می‌توانید نکاتی را در https://github.com/palladius/ai-friendly-agents/issues/11 پیدا کنید. این کار ۳ ساعت طول کشید تا نویسنده با Gemini CLI، Gemini3 و هر دوی ما مستندات/کد را از rag/ بخوانیم!

به دنبال الهام بیشتر هستید؟

  1. برای ایده گرفتن ، آموزش عالی ADK از Maurizio را بررسی کنید.
  2. از رابط خط فرمان Gemini بخواهید با مراجعه به مستندات 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 پایتون ADK را دانلود کنید (توجه: این را می‌توان به راحتی با زبان مورد علاقه خود، مانند جاوا یا گو ، تطبیق داد!)

کد در مسیر ./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