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 इनका पता अपने-आप लगा लेता है.

ध्यान दें: Skills, ~/.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 में देखा जा सकता है. इसके अलावा, इसे आईडीई फ़ाइल एक्सप्लोरर से खोलकर, स्कैफ़ोल्ड किए गए कोड को एक्सप्लोर किया जा सकता है.

# 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 को भेजता है. यह पुष्टि करने के लिए कि वर्कफ़्लो 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 के लिए, डोमेन के हिसाब से वर्कफ़्लो की स्किल कॉन्फ़िगर की गई हैं.
  • Scaffolded a Project: Created a fully structured customer-support-agent project using standardized templates.
  • ADK 2.0 के स्ट्रक्चर का विश्लेषण किया गया: इसमें ग्राफ़ वर्कफ़्लो, एलएलएम एजेंट, नोड, एज, और शर्तों के हिसाब से राउटिंग की सुविधा के बारे में जानकारी दी गई है.
  • Managed Local Health: agents-cli lint का इस्तेमाल करके, कोड की क्वालिटी की अपने-आप जांच की गई.
  • पुष्टि किया गया व्यवहार: एजेंट को प्लेग्राउंड के ज़रिए रीयल-टाइम हॉट-रीलोडिंग के साथ इंटरैक्टिव तरीके से टेस्ट किया गया. साथ ही, कमांड लाइन पर तुरंत टेस्ट किए गए.

अगला चरण?

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

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

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