ভাইব কোডিং এআই এজেন্ট: এজেন্টস সিএলআই এবং এডিকে ২.০ ব্যবহার করে এজেন্টের জীবনচক্র পরিচালনা

১. সংক্ষিপ্ত বিবরণ

এই কোডল্যাবে, আপনি শিখবেন কিভাবে একটি এআই এজেন্টের সম্পূর্ণ লোকাল ডেভেলপমেন্ট লাইফসাইকেল পরিচালনা করতে Agents CLI ব্যবহার করতে হয়। আপনি বিদ্যমান Gemini মডেল র‍্যাপ করুন বা Agent Development Kit (ADK 2.0) দিয়ে একেবারে নতুন করে কাস্টম এজেন্ট তৈরি করুন, Agents CLI আপনার এজেন্টগুলোকে স্থানীয়ভাবে স্ক্যাফোল্ড, বিল্ড, লিন্ট এবং টেস্ট করার জন্য প্রয়োজনীয় টুলস সরবরাহ করে।

আপনি যা শিখবেন

  • agents-cli এবং এর সাথে সম্পর্কিত স্কিলগুলো কীভাবে ইনস্টল ও সেট আপ করবেন।
  • কীভাবে একটি নতুন এজেন্ট প্রজেক্ট স্কাফোল্ড করবেন।
  • একটি ADK 2.0 গ্রাফ ওয়ার্কফ্লো এজেন্ট প্রজেক্টের কাঠামো এবং মূল ফাইলসমূহ।
  • কীভাবে স্বয়ংক্রিয় লিন্টিং এবং কোড ক্লিনআপ চালানো যায়।
  • স্বয়ংক্রিয় রিলোডিং সহ ইন্টারেক্টিভ টেস্টিংয়ের জন্য কীভাবে স্থানীয় ওয়েব প্লেগ্রাউন্ড চালু ও ব্যবহার করবেন।

আপনার যা প্রয়োজন

  • পাইথন ৩.১১ বা উচ্চতর
  • ইউভি প্যাকেজ ম্যানেজার
  • নোড.জেএস ১৮+ (যদি কোডিং এজেন্ট স্কিল ব্যবহার করা হয়)
  • অ্যান্টিগ্র্যাভিটি আইডিই ( গুগল অ্যান্টিগ্র্যাভিটি থেকে ইনস্টল ও কনফিগার করুন)

পূর্বশর্ত

এই কোডল্যাবটি ধরে নেয় যে আপনি নিম্নলিখিত বিষয়গুলিতে স্বচ্ছন্দ:

  • টার্মিনাল ও কমান্ড লাইন ব্যবহার করে।

এআই এজেন্ট বা এডিকে ২.০ (ADK 2.0) নিয়ে পূর্ব অভিজ্ঞতার প্রয়োজন নেই!

২. প্রমাণীকরণ ও পরিবেশ সেট আপ করুন

এজেন্টকে জেমিনি মডেল কল করার জন্য আপনার প্রমাণীকরণ তথ্য প্রদান করুন।

বিকল্প ১: জেমিনি এপিআই কী (গুগল এআই স্টুডিও)

আপনি যদি একটি স্ট্যান্ডার্ড জেমিনি এপিআই কী ব্যবহার করেন (যা আপনি গুগল এআই স্টুডিও থেকে পেতে পারেন), তাহলে আপনার IDE টার্মিনাল সেশনে এটি এক্সপোর্ট করুন:

export GEMINI_API_KEY="your_api_key_here"
export GOOGLE_GENAI_USE_ENTERPRISE=FALSE

বিকল্প ২: গুগল ক্লাউড অ্যাপ্লিকেশনের ডিফল্ট ক্রেডেনশিয়াল

আপনি যদি গুগল ক্লাউডে ভার্টেক্স এআই ব্যবহার করেন, তাহলে গুগল ক্লাউড অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC) দিয়ে প্রমাণীকরণ করুন এবং আপনার সক্রিয় গুগল ক্লাউড প্রজেক্ট সেট করুন:

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

৩. এজেন্টদের সিএলআই এবং দক্ষতা সেট আপ করুন

প্রথম ধাপ হলো agents-cli টুলটি ইনস্টল করা। এই টুলটি এজেন্ট প্রজেক্ট ম্যানেজমেন্টের জটিল কাজগুলো সামলে নেয়।

Antigravity ইনস্টল করা হয়ে গেলে, সরাসরি আপনার টার্মিনালে সেটআপ কমান্ডটি চালান।

👉 একটি টার্মিনাল খুলুন এবং চালান:

uvx google-agents-cli setup

এই কমান্ডটি স্বয়ংক্রিয়ভাবে ইনস্টল করে:

  1. আপনার সিস্টেমে বিশ্বব্যাপী Agents CLI টুলটি।
  2. সাতটি ডোমেইন-নির্দিষ্ট কোডিং অ্যাসিস্ট্যান্ট স্কিল , যা অ্যান্টিগ্র্যাভিটি আপনাকে এজেন্ট তৈরি, স্কাফোল্ড, মূল্যায়ন এবং ডেপ্লয় করতে সাহায্য করার জন্য ব্যবহার করতে পারে। এই স্কিলগুলো একবার গ্লোবালি ~/.agents/skills/ ফোল্ডারে ইনস্টল করা হয় এবং অ্যান্টিগ্র্যাভিটি দ্বারা স্বয়ংক্রিয়ভাবে আবিষ্কৃত হয়।

দ্রষ্টব্য: স্কিলগুলো ~/.agents/skills/ ফোল্ডারে ইনস্টল করা হয় এবং অ্যান্টিগ্র্যাভিটি স্বয়ংক্রিয়ভাবে সেগুলো গ্রহণ করে। আপনি /skills কমান্ড অথবা আপনার অ্যান্টিগ্র্যাভিটি সেটিংস ব্যবহার করে এটি যাচাই করতে পারেন।

প্রত্যাশিত আউটপুট (সংক্ষিপ্ত):

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

`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`

৪. আপনার এজেন্ট প্রজেক্ট তৈরি করুন

এই অংশে, আপনি প্রোটোটাইপ টেমপ্লেট ব্যবহার করে একটি সম্পূর্ণ কাঠামোবদ্ধ প্রজেক্ট ডিরেক্টরি তৈরি করবেন।

👉 প্রম্পট অ্যান্টিগ্র্যাভিটি:

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.

অ্যান্টিগ্র্যাভিটি স্বয়ংক্রিয়ভাবে স্ক্যাফোল্ডিং কমান্ড ( agents-cli scaffold create customer-support-agent --prototype --yes ) চালায় এবং আপনার জন্য প্রোজেক্ট ফাইলগুলো সেট আপ করে দেয়।

৫. এজেন্ট কোডটি অন্বেষণ করুন

👉 তৈরি হওয়া কোডটি ব্যাখ্যা করতে অ্যান্টিগ্র্যাভিটিকে জিজ্ঞাসা করুন:

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 ) সহ LLM-চালিত কাজগুলিকে সংজ্ঞায়িত করে।
  • নোড ও কনটেক্সট : @node দ্বারা সজ্জিত পাইথন ফাংশন (বা সাধারণ ফাংশন) যা লজিক সম্পাদন করে, Context মাধ্যমে এক্সিকিউশন স্টেট অ্যাক্সেস করে এবং গ্রাফ বরাবর ডেটা ও রাউটিং সিগন্যাল প্রেরণের জন্য Event অবজেক্ট প্রদান করে।
  • মডেল : `gemini-3.1-flash-lite` ডিফল্ট ফাস্ট রিজনিং মডেল হিসেবে ব্যবহৃত হয়।
  • অ্যাপ র‍্যাপার : শীর্ষ-স্তরের App অবজেক্টটি মূল ওয়ার্কফ্লোকে আবৃত করে রাখে। স্থানীয় প্লেগ্রাউন্ড, ADK ইভ্যালুয়েশন হারনেস এবং এজেন্ট রানটাইমের মতো বাহ্যিক টুলগুলো এই প্রমিত app ইন্টারফেসের মাধ্যমে আপনার ওয়ার্কফ্লো খুঁজে বের করে এবং কার্যকর করে।

৬. স্বয়ংক্রিয় লিন্টিং

আপনার এজেন্ট চালানো বা পরীক্ষা করার আগে, আপনার কোডটি ত্রুটিমুক্ত এবং সঠিকভাবে বিন্যস্ত আছে কিনা তা নিশ্চিত করা একটি ভালো অভ্যাস।

👉 প্রম্পট অ্যান্টিগ্র্যাভিটি:

Run linting on my agent project to verify its health.

অ্যান্টিগ্র্যাভিটি নেপথ্যে agents-cli lint ব্যবহার করে পূর্ব-কনফিগার করা চেকগুলো চালাবে, যা আপনার ফাইলগুলোর মধ্যে ইম্পোর্ট, সিনট্যাক্স এবং ফরম্যাটিংয়ের সামঞ্জস্য যাচাই করবে।

৭. প্লেগ্রাউন্ডের মাধ্যমে ইন্টারেক্টিভ টেস্টিং

আপনার এজেন্টের আচরণ যাচাই করার দ্রুততম উপায় হলো লোকাল ওয়েব প্লেগ্রাউন্ড। এটি একটি ইন্টারেক্টিভ চ্যাট ইন্টারফেস প্রদান করে, যেখানে আপনি আপনার এজেন্টের সাথে চ্যাট করতে এবং রিয়েল-টাইমে টুলের কার্যকারিতা পর্যবেক্ষণ করতে পারেন।

👉 প্রম্পট অ্যান্টিগ্র্যাভিটি:

Launch the local development playground for my agent.

অ্যান্টিগ্র্যাভিটি লোকাল ডেভেলপমেন্ট সার্ভার ( agents-cli playground ) চালু করবে। আপনার ওয়েব ব্রাউজারে প্রদত্ত URL-টি (সাধারণত 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?

রিয়েল-টাইম অটো-রিলোডিং পরীক্ষা করুন

আপনার এজেন্টের রিয়েল-টাইম পরিবর্তনগুলো কীভাবে প্লেগ্রাউন্ডে প্রতিফলিত হচ্ছে, তা আপনি দেখতে পারেন।

  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?
    
    সার্ভার রিস্টার্ট করার প্রয়োজন ছাড়াই প্লেগ্রাউন্ডটি স্বয়ংক্রিয়ভাবে রিলোড হয় এবং রিয়েল-টাইমে আপনার আপডেট করা কোড কার্যকর করে! এখন আপনি রেসপন্সে কিছু ইমোজি দেখতে পাবেন।

৮. কমান্ড লাইন এক্সিকিউশন

দ্রুত পরীক্ষা, অটোমেশন বা স্ক্রিপ্টিংয়ের জন্য, আপনি সরাসরি টার্মিনাল থেকে আপনার এজেন্ট চালানোর জন্য অ্যান্টিগ্র্যাভিটিকে নির্দেশ দিতে পারেন।

👉 প্রম্পট অ্যান্টিগ্র্যাভিটি:

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

অ্যান্টিগ্র্যাভিটি কোয়েরি কমান্ডটি ( agents-cli run "How long does standard delivery take?" ) এক্সিকিউট করবে। এটি একটি দ্রুত সিঙ্গেল-টার্ন ইনফারেন্স চালায় এবং টুল এক্সিকিউশনের বিবরণসহ এজেন্টের চূড়ান্ত প্রতিক্রিয়া প্রিন্ট করে।

৯. পরিচ্ছন্নতা

আপনার স্থানীয় পরিবেশে অবাঞ্ছিত রিসোর্স রেখে যাওয়া এড়াতে, এই পরিষ্কার করার ধাপগুলো অনুসরণ করুন:

  1. স্থানীয় সার্ভার বন্ধ করুন : যদি আপনার agents-cli playground সার্ভারটি এখনও চালু থাকে, তাহলে আপনার টার্মিনালে Ctrl + C চেপে এটি বন্ধ করুন।
  2. স্থানীয় প্রজেক্ট ফাইলগুলি সরান : আপনার স্থানীয় মেশিন থেকে স্কাফোল্ড করা এজেন্ট প্রজেক্ট ডিরেক্টরিটি মুছে ফেলুন।
rm -rf customer-support-agent

১০. সারসংক্ষেপ ও পরবর্তী পদক্ষেপ

অভিনন্দন! আপনি Agents CLI এবং ADK 2.0 ব্যবহার করে একটি AI এজেন্টের শুরু থেকে শেষ পর্যন্ত স্থানীয় উন্নয়ন জীবনচক্র সফলভাবে পরিচালনা করেছেন।

আপনি যা শিখেছেন

  • আপনার টুলস সেট আপ করুন : এজেন্টস সিএলআই ইনস্টল করা হয়েছে এবং অ্যান্টিগ্র্যাভিটির জন্য ডোমেন-নির্দিষ্ট ওয়ার্কফ্লো স্কিল কনফিগার করা হয়েছে।
  • প্রকল্পের কাঠামো তৈরি : প্রমিত টেমপ্লেট ব্যবহার করে একজন customer-support-agent একটি সম্পূর্ণ কাঠামোবদ্ধ প্রকল্প তৈরি করা হয়েছে।
  • ADK 2.0-এর কাঠামো বিশ্লেষণ : গ্রাফ ওয়ার্কফ্লো, LLM এজেন্ট, নোড, এজ এবং কন্ডিশনাল রাউটিং অন্বেষণ করা হয়েছে।
  • ম্যানেজড লোকাল হেলথ : agents-cli lint ব্যবহার করে স্বয়ংক্রিয় কোড গুণমান পরীক্ষা চালানো হয়েছে।
  • যাচাইকৃত আচরণ : প্লেগ্রাউন্ডের মাধ্যমে রিয়েল-টাইম হট-রিলোডিং ব্যবহার করে এজেন্টটিকে ইন্টারেক্টিভভাবে পরীক্ষা করা হয়েছে এবং কমান্ড লাইনে দ্রুত পরীক্ষা চালানো হয়েছে।

এরপর কী?

এখন যেহেতু আপনি লোকাল ডেভেলপমেন্ট লুপে দক্ষতা অর্জন করেছেন, এখানে দেওয়া হলো কীভাবে আপনি আপনার এজেন্টকে সম্প্রসারণ এবং প্রোডাকশনের উপযোগী করে তুলতে পারেন:

  • মূল্যায়ন : নির্ভুলতা পরিমাপ করতে এবং রিগ্রেশন খুঁজে বের করতে agents-cli eval run ব্যবহার করে একটি evalset-এর বিপরীতে আপনার এজেন্টকে স্কোর দিন।
  • এন্টারপ্রাইজ ক্লাউড স্কেল: ডেপ্লয়মেন্টঅবজার্ভেবিলিটি : agents-cli deploy ব্যবহার করে আপনার এজেন্টকে Agent Runtime বা Cloud Run-এর মতো প্রোডাকশন এনভায়রনমেন্টে প্যাকেজ ও ডেপ্লয় করুন। Cloud Trace এবং BigQuery-তে লগ ও এক্সিকিউশন ট্রেস স্ট্রিম করার জন্য প্রোডাকশন টেলিমেট্রি সেট আপ করুন।

অতিরিক্ত সম্পদ