Vibe Coding AI Agents: Agents CLI और ADK 2.0 की मदद से, एजेंट के लाइफ़साइकल को मैनेज करना

1. खास जानकारी

इस कोडलैब में, एआई एजेंट के पूरे लोकल डेवलपमेंट लाइफ़साइकल को मैनेज करने के लिए, Agents CLI का इस्तेमाल करने का तरीका बताया गया है. चाहे आपको मौजूदा Gemini मॉडल रैप करने हों या Agent Development Kit (ADK 2.0) का इस्तेमाल करके, कस्टम एजेंट बनाने हों, Agents CLI आपको अपने एजेंट को स्थानीय तौर पर बनाने, लिंट करने, और टेस्ट करने के लिए टूल उपलब्ध कराता है.

आपको क्या सीखने को मिलेगा

  • agents-cli और इससे जुड़ी स्किल को इंस्टॉल और सेट अप करने का तरीका.
  • नए एजेंट प्रोजेक्ट को कैसे तैयार करें.
  • ADK 2.0 के ग्राफ़ वर्कफ़्लो एजेंट प्रोजेक्ट की संरचना और मुख्य फ़ाइलें.
  • ऑटोमेटेड लिंटिंग और कोड क्लीनअप को चलाने का तरीका.
  • ऑटो-रीलोडिंग की सुविधा के साथ इंटरैक्टिव टेस्टिंग के लिए, लोकल वेब प्लेग्राउंड को लॉन्च और इस्तेमाल करने का तरीका.

आपको इन चीज़ों की ज़रूरत पड़ेगी

  • Python 3.11 या इसके बाद का वर्शन
  • uv पैकेज मैनेजर
  • Node.js 18+ (अगर कोडिंग एजेंट की स्किल का इस्तेमाल किया जा रहा है)
  • Antigravity IDE (Google Antigravity से इंस्टॉल और कॉन्फ़िगर करें)

ज़रूरी शर्तें

इस कोडलैब में यह माना गया है कि आपको इन विषयों के बारे में जानकारी है:

  • टर्मिनल और कमांड लाइन का इस्तेमाल करके.

इसके लिए, एआई एजेंट या ADK 2.0 का इस्तेमाल करने का अनुभव होना ज़रूरी नहीं है!

2. पुष्टि करने की सुविधा और एनवायरमेंट सेट अप करना

Gemini मॉडल को कॉल करने के लिए, एजेंट को पुष्टि करने वाले क्रेडेंशियल दें.

पहला विकल्प: Gemini API पासकोड (Google AI Studio)

अगर स्टैंडर्ड Gemini API पासकोड का इस्तेमाल किया जा रहा है, तो उसे Google AI Studio से पाया जा सकता है. इसे अपने IDE टर्मिनल सेशन में एक्सपोर्ट करें:

export GEMINI_API_KEY="your_api_key_here"
export GOOGLE_GENAI_USE_ENTERPRISE=FALSE

दूसरा विकल्प: Google Cloud ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल

अगर Google Cloud पर Vertex AI का इस्तेमाल किया जा रहा है, तो Google Cloud के ऐप्लिकेशन के लिए डिफ़ॉल्ट क्रेडेंशियल (एडीसी) का इस्तेमाल करके पुष्टि करें. साथ ही, अपना चालू Google Cloud प्रोजेक्ट सेट करें:

gcloud auth application-default login
gcloud config set project <YOUR_PROJECT_ID>
export GOOGLE_GENAI_USE_ENTERPRISE=TRUE
export GOOGLE_CLOUD_PROJECT=REPLACE-WITH-YOUR-PROJECT_ID # Replace with your project ID
export GOOGLE_CLOUD_LOCATION=REPLACE-WITH-LOCATION # Replace the location

3. एजेंट सीएलआई और स्किल सेट अप करना

सबसे पहले, agents-cli टूल इंस्टॉल करें. यह टूल, एजेंट के प्रोजेक्ट मैनेजमेंट से जुड़ी मुश्किल कामों को आसानी से पूरा करता है.

Antigravity इंस्टॉल होने के बाद, सीधे अपने टर्मिनल में सेटअप कमांड चलाएं.

👉 टर्मिनल खोलें और यह कमांड चलाएं:

uvx google-agents-cli setup

इस कमांड से ये अपने-आप इंस्टॉल हो जाते हैं:

  1. आपके सिस्टम पर, दुनिया भर में उपलब्ध Agents CLI टूल.
  2. डोमेन के हिसाब से कोडिंग में मदद करने वाली सात स्किल. Antigravity इनका इस्तेमाल, एजेंट बनाने, एजेंट को बेहतर बनाने, एजेंट का आकलन करने, और एजेंट को डिप्लॉय करने में आपकी मदद करने के लिए कर सकता है. ये स्किल, ~/.agents/skills/ में एक बार इंस्टॉल की जाती हैं. इसके बाद, Antigravity इन्हें अपने-आप ढूंढ लेता है.

ध्यान दें: स्किल, ~/.agents/skills/ में इंस्टॉल की जाती हैं और Antigravity इन्हें अपने-आप चुन लेता है. इसकी पुष्टि करने के लिए, /skills कमांड या Antigravity की सेटिंग का इस्तेमाल करें.

अनुमानित आउटपुट (ट्रिम किया गया):

█▀█ █▀▀ █▀▀ █▄  ▀█▀ █▀ █▀▀  █`
`█▀█ █▄█ ██▄  ▀█  ▄█ █▄▄ █▄ █`

`Your coding agent just got an upgrade.`

`1. Authentication`

`─────────────────`

`✓ Authenticated with Google Cloud`

`2. CLI Installation`

`───────────────────`

`▸ uv tool install google-agents-cli`

`✓ Installed google-agents-cli`

`3. Skills Installation`

`──────────────────────`

`▸ npx -y skills add https://github.com/google/agents-cli -y --all -g`

`◇ Found 7 skills`

`~/.agents/skills/google-agents-cli-adk-code`

`~/.agents/skills/google-agents-cli-deploy`

`~/.agents/skills/google-agents-cli-eval`

`~/.agents/skills/google-agents-cli-observability`

`~/.agents/skills/google-agents-cli-publish`

`~/.agents/skills/google-agents-cli-scaffold`

`~/.agents/skills/google-agents-cli-workflow`

4. अपना एजेंट प्रोजेक्ट बनाना

इस सेक्शन में, प्रोटोटाइप टेंप्लेट का इस्तेमाल करके पूरी तरह से स्ट्रक्चर्ड प्रोजेक्ट डायरेक्ट्री बनाई जाएगी.

👉 Antigravity को प्रॉम्प्ट करना:

Use ADK 2.0 to create a new graph workflow agent project called
customer-support-agent. I don't want to deploy this agent, so you can skip
the deployment files. The workflow should act as a customer support
representative for a shipping company. It should first classify if the user
query is related to shipping (rates, tracking, delivery, returns) or
unrelated. If it is related to shipping, route to a shipping FAQ agent to
answer the question. If it is unrelated, route to a node that politely
declines to answer.

Antigravity, स्केफ़ोल्डिंग कमांड (agents-cli scaffold create customer-support-agent --prototype --yes) को अपने-आप चलाता है और आपके लिए प्रोजेक्ट फ़ाइलें सेट अप करता है.

5. एजेंट कोड के बारे में जानकारी

👉 Antigravity से जनरेट किए गए कोड के बारे में जानकारी देने के लिए कहें:

Read and explain the project structure of my new agent project. Walk me
through how `app/agent.py` is configured, highlighting the role of the
tools, nodes, edges, and the root Workflow.

Antigravity IDE में, नई बनाई गई प्रोजेक्ट फ़ाइलें और आर्टफ़ैक्ट, सीधे तौर पर सहायक पैनल (बाईं ओर) में दिखते हैं. इन्हें app/agent.py में देखा जा सकता है. इसके अलावा, इन्हें IDE फ़ाइल एक्सप्लोरर से खोलकर, स्कैफ़ोल्ड किए गए कोड को एक्सप्लोर किया जा सकता है.

# app/agent.py

from __future__ import annotations

from typing import Any, Literal

from google.adk.agents.context import Context
from google.adk.apps.app import App
from google.adk.events.event import Event
from google.adk.workflow import Edge
from google.adk.workflow import Workflow
from google.adk.workflow.agents.llm_agent import LlmAgent
from google.adk.workflow.node import node
from pydantic import BaseModel
from pydantic import Field


class InquiryCategory(BaseModel):
  category: Literal['shipping', 'unrelated'] = Field(
      description=(
          'Determine if the user query is related to shipping (rates, tracking,'
          ' delivery times, returns) or unrelated.'
      )
  )


def save_query(node_input: str):
  """Saves user query in state for downstream nodes."""
  yield Event(data=node_input, state={'user_query': node_input})


categorize_agent = LlmAgent(
    name='categorize',
    model='gemini-3.1-flash-lite',
    instruction='You are an expert classifier. Categorize the user query.',
    output_key='inquiry_category',
    output_schema=InquiryCategory,
)


@node
def route_inquiry(ctx: Context, node_input: Any):
  """Routes the workflow based on the classified category."""
  category_data = ctx.state.get('inquiry_category', {})
  category = category_data.get('category', 'unrelated')
  query = ctx.state.get('user_query', '')
  yield Event(data=query, route=category)


faq_agent = LlmAgent(
    name='shipping_faq',
    model='gemini-3.1-flash-lite'',
    instruction="""You are a customer support representative for a shipping company. Answer user questions based ONLY on the shipping FAQ below. Do not answer questions outside of the FAQ.
    
    SHIPPING FAQ:
    - Rates: Standard shipping is $5.99. Express shipping is $12.99. Orders
      over $50 qualify for free standard shipping.
    - Tracking: You can track your order by entering your tracking number on
      our website's tracking page.
    - Delivery Times: Standard delivery takes 3-5 business days. Express
      delivery takes 1-2 business days.
    - Returns: We offer free returns within 30 days of delivery. Please make
      sure the item is in its original condition.
    """,
)


@node
def handle_unrelated(ctx: Context, node_input: Any):
  """Handles unrelated inquiries politely."""
  yield Event(
      data=(
          'I am sorry, I am a shipping customer support assistant and can only'
          ' answer questions related to our shipping FAQ.'
      )
  )


root_agent = Workflow(
    name='customer_support_workflow',
    edges=[
        *Edge.chain('START', save_query, categorize_agent, route_inquiry),
        (route_inquiry, faq_agent, 'shipping'),
        (route_inquiry, handle_unrelated, 'unrelated'),
    ],
)

app = App(
    name='customer_support_agent',
    root_agent=root_agent,
)

खास कॉन्सेप्ट

  • वर्कफ़्लो और एज: ADK 2.0 में, एजेंट ऐप्लिकेशन को Workflow का इस्तेमाल करके ग्राफ़ के तौर पर व्यवस्थित किया जाता है. edges सूची, एक्ज़ीक्यूशन फ़्लो तय करती है. इसमें START से नोड एक साथ जोड़े जाते हैं. साथ ही, रास्तों के आधार पर शर्त के हिसाब से ब्रांचिंग की सुविधा चालू की जाती है. उदाहरण के लिए, "shipping" पर faq_agent या "unrelated" पर handle_unrelated पर रूट करना.
  • LlmAgent: ये ऐसे नोड होते हैं जो एलएलएम की मदद से किए जाने वाले टास्क को तय करते हैं. इनमें खास निर्देश, मॉडल, और स्ट्रक्चर्ड आउटपुट (output_schema) शामिल होते हैं.
  • नोड और कॉन्टेक्स्ट: ये @node से डेकोरेट किए गए Python फ़ंक्शन (या स्टैंडर्ड फ़ंक्शन) होते हैं. ये लॉजिक को लागू करते हैं, Context के ज़रिए एक्ज़ीक्यूशन की स्थिति को ऐक्सेस करते हैं, और Event ऑब्जेक्ट जनरेट करते हैं, ताकि डेटा और राउटिंग सिग्नल को ग्राफ़ में पास किया जा सके.
  • मॉडल: `gemini-3.1-flash-lite' का इस्तेमाल, डिफ़ॉल्ट रूप से तेज़ी से जवाब देने वाले मॉडल के तौर पर किया जाता है.
  • ऐप्लिकेशन रैपर: टॉप-लेवल का App ऑब्जेक्ट, रूट वर्कफ़्लो को रैप करता है. स्थानीय प्लेग्राउंड, एडीके के आकलन के लिए इस्तेमाल होने वाले टूल, और एजेंट रनटाइम जैसे बाहरी टूल, इस स्टैंडर्ड app इंटरफ़ेस के ज़रिए आपके वर्कफ़्लो का पता लगाते हैं और उसे लागू करते हैं.

6. ऑटोमेटेड लिंटिंग

अपने एजेंट को चलाने या उसकी जांच करने से पहले, यह पक्का करना एक अच्छा तरीका है कि आपका कोड साफ़ हो और उसे सही तरीके से फ़ॉर्मैट किया गया हो.

👉 Antigravity को प्रॉम्प्ट करना:

Run linting on my agent project to verify its health.

Antigravity, पहले से कॉन्फ़िगर की गई जांचों को चलाने के लिए, बैकग्राउंड में agents-cli lint को लागू करेगा. इससे, आपकी सभी फ़ाइलों में इंपोर्ट, सिंटैक्स, और फ़ॉर्मैटिंग की एक जैसी स्थिति की पुष्टि की जा सकेगी.

7. Playground की मदद से इंटरैक्टिव टेस्टिंग

लोकल वेब प्लेग्राउंड, एजेंट के व्यवहार की पुष्टि करने का सबसे तेज़ तरीका है. इसमें एक इंटरैक्टिव चैट इंटरफ़ेस होता है. यहां अपने एजेंट से चैट की जा सकती है और टूल के एक्ज़ीक्यूशन को रीयल-टाइम में देखा जा सकता है.

👉 Antigravity को प्रॉम्प्ट करना:

Launch the local development playground for my agent.

Antigravity, लोकल डेवलपमेंट सर्वर (agents-cli playground) शुरू करेगा. दिए गए यूआरएल (आम तौर पर http://127.0.0.1:8080/dev-ui/?app=app) को अपने वेब ब्राउज़र में खोलें. इसके बाद, अपने एजेंट से चैट करने के लिए, ड्रॉपडाउन से फ़ोल्डर app चुनें.

वेब इंटरफ़ेस में, अपने एजेंट से चैट करना शुरू करें. शिपिंग से जुड़ा कोई सवाल पूछें:

How much is standard shipping?

ध्यान दें कि वर्कफ़्लो, सवाल का जवाब देने के लिए उसे सही कैटगरी में रखता है और faq_agent को भेजता है. यह भी देखें कि वर्कफ़्लो, सवाल का जवाब देने के लिए उसे faq_agent को भेजता है और जवाब देने से मना करता है या नहीं:handle_unrelated

What is the weather like?

रीयल-टाइम में अपने-आप रीलोड होने की सुविधा की जांच करना

आपके पास यह देखने का विकल्प होता है कि एजेंट में रीयल-टाइम में किए गए बदलाव, Playground में कैसे दिखते हैं.

  1. Antigravity से पूछकर, app/agent.py में दिए गए faq_agent निर्देश में बदलाव करें:
    Modify the faq_agent instruction in app/agent.py to make the shipping rates
    response more playful and enthusiastic. Add some emojis and highlight the
    free shipping threshold.
    
  2. ऑटो-रीलोड होने की सुविधा को टेस्ट करने के लिए, प्लेग्राउंड में एजेंट को एक नया मैसेज भेजें:
    How much is standard shipping?
    
    प्लेग्राउंड अपने-आप फिर से लोड हो जाता है. साथ ही, यह सर्वर को रीस्टार्ट किए बिना, रीयल टाइम में आपके अपडेट किए गए कोड को लागू करता है! अब आपको जवाब में कुछ इमोजी दिखेंगे.

8. कमांड लाइन एक्ज़ीक्यूशन

तेज़ी से टेस्ट करने, ऑटोमेशन या स्क्रिप्टिंग के लिए, Antigravity से टर्मिनल से सीधे एजेंट को चलाने के लिए कहा जा सकता है.

👉 Antigravity को प्रॉम्प्ट करना:

Run a CLI query asking my agent how long standard delivery takes.

Antigravity, क्वेरी कमांड (agents-cli run "How long does standard delivery take?") को लागू करेगा. इससे, एक ही बार में तेज़ी से अनुमान लगाया जा सकेगा. साथ ही, टूल के इस्तेमाल की जानकारी के साथ-साथ एजेंट का फ़ाइनल जवाब प्रिंट किया जा सकेगा.

9. साफ़-सफ़ाई सेवा

अपने लोकल एनवायरमेंट में गैर-ज़रूरी संसाधनों को छोड़ने से बचने के लिए, क्लीनअप करने का यह तरीका अपनाएं:

  1. लोकल सर्वर बंद करें: अगर आपका agents-cli playground सर्वर अब भी चल रहा है, तो टर्मिनल में Ctrl + C दबाकर इसे बंद करें.
  2. स्थानीय प्रोजेक्ट फ़ाइलें हटाएं: इससे, आपकी लोकल मशीन से, एजेंट प्रोजेक्ट डायरेक्ट्री को मिटाया जाता है.
rm -rf customer-support-agent

10. खास जानकारी और अगले चरण

बधाई हो! आपने Agents CLI और ADK 2.0 का इस्तेमाल करके, एआई एजेंट के लोकल डेवलपमेंट के पूरे लाइफ़साइकल को मैनेज कर लिया है.

आपने क्या सीखा

  • अपने टूल सेट अप करें: Agents CLI इंस्टॉल किया गया हो और Antigravity के लिए, डोमेन के हिसाब से वर्कफ़्लो की स्किल कॉन्फ़िगर की गई हों.
  • प्रोजेक्ट को स्ट्रक्चर किया: स्टैंडर्ड टेंप्लेट का इस्तेमाल करके, पूरी तरह से स्ट्रक्चर किया गया customer-support-agent प्रोजेक्ट बनाया.
  • ADK 2.0 के स्ट्रक्चर का विश्लेषण किया गया: इसमें ग्राफ़ वर्कफ़्लो, एलएलएम एजेंट, नोड, एज, और शर्तों के हिसाब से राउटिंग की सुविधा के बारे में बताया गया है.
  • Managed Local Health: agents-cli lint का इस्तेमाल करके, कोड की क्वालिटी की अपने-आप जांच की गई.
  • पुष्टि किया गया व्यवहार: एजेंट को इंटरैक्टिव तरीके से टेस्ट किया गया. साथ ही, प्लेग्राउंड के ज़रिए रीयल-टाइम में हॉट-रीलोडिंग की सुविधा का इस्तेमाल किया गया. इसके अलावा, कमांड लाइन पर क्विक टेस्ट किए गए.

अगला चरण?

अब जब आपने लोकल डेवलपमेंट लूप में महारत हासिल कर ली है, तो यहां बताया गया है कि अपने एजेंट को कैसे बढ़ाया और प्रोडक्शन के लिए तैयार किया जा सकता है:

  • आकलन: agents-cli eval run का इस्तेमाल करके, अपने एजेंट को evalset के हिसाब से स्कोर करें. इससे आपको यह पता चलेगा कि एजेंट कितना सटीक जवाब दे रहा है और उसमें क्या कमियां हैं.
  • एंटरप्राइज़ क्लाउड स्केल: डिप्लॉयमेंट और निगरानी: agents-cli deploy का इस्तेमाल करके, अपने एजेंट को Agent Runtime या Cloud Run जैसे प्रोडक्शन एनवायरमेंट में पैकेज करें और डिप्लॉय करें. लॉग और एक्ज़ीक्यूशन ट्रेस को Cloud Trace और BigQuery में स्ट्रीम करने के लिए, प्रोडक्शन टेलीमेट्री सेट अप करें.

अतिरिक्त संसाधन