শুরু হচ্ছে

এই নির্দেশিকাটি আপনাকে ইন্টারঅ্যাকশনস এপিআই (Interactions API) ব্যবহার করে জেমিনি এপিআই (Gemini API) দিয়ে কাজ শুরু করতে সাহায্য করবে। আপনি এক মিনিটেরও কম সময়ে আপনার প্রথম এপিআই কলটি করতে পারবেন এবং টেক্সট জেনারেশন, মাল্টিমোডাল আন্ডারস্ট্যান্ডিং, ইমেজ জেনারেশন, স্ট্রাকচার্ড আউটপুট, টুলস, ফাংশন কলিং, এজেন্ট এবং ব্যাকগ্রাউন্ড এক্সিকিউশন সম্পর্কে জানতে পারবেন।

ইন্টারঅ্যাকশনস এপিআইটি পাইথনজাভাস্ক্রিপ্ট এসডিকে-র পাশাপাশি REST-এর মাধ্যমেও পাওয়া যায়।

১. একটি এপিআই কী সংগ্রহ করুন

জেমিনি এপিআই ব্যবহার করার জন্য আপনার একটি এপিআই কী প্রয়োজন। শুরু করার জন্য বিনামূল্যে একটি তৈরি করে নিন:

একটি জেমিনি এপিআই কী তৈরি করুন

তারপর এটিকে একটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে সেট করুন:

export GEMINI_API_KEY="YOUR_API_KEY"

২. এসডিকে ইনস্টল করুন এবং আপনার প্রথম কলটি করুন

এসডিকে ইনস্টল করুন এবং একটিমাত্র এপিআই কলের মাধ্যমে টেক্সট তৈরি করুন।

পাইথন

SDK ইনস্টল করুন:

pip install -U google-genai

ক্লায়েন্ট চালু করুন এবং একটি অনুরোধ করুন:

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.5-flash",
    input="Explain how AI works in a few words"
)
print(interaction.output_text)

জাভাস্ক্রিপ্ট

SDK ইনস্টল করুন:

npm install @google/genai

ক্লায়েন্ট চালু করুন এবং একটি অনুরোধ করুন:

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  model: "gemini-3.5-flash",
  input: "Explain how AI works in a few words",
});
console.log(interaction.output_text);

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.5-flash",
    "input": "Explain how AI works in a few words"
  }'

প্রতিক্রিয়া:

{
  "id": "v1_ChdpQUFvYXI...",
  "status": "completed",
  "usage": {
    "total_tokens": 197,
    "total_input_tokens": 8,
    "total_output_tokens": 12
  },
  "created": "2026-06-09T12:01:25Z",
  "steps": [
    {
      "type": "thought",
      "signature": "EvEFCu4FAQw..."
    },
    {
      "type": "model_output",
      "content": [
        {
          "type": "text",
          "text": "AI learns patterns from data, then uses those patterns to make predictions or decisions on new data."
        }
      ]
    }
  ],
  "object": "interaction",
  "model": "gemini-3.5-flash",
}

REST ব্যবহার করার সময়, API-টি মেটাডেটা, ব্যবহারের পরিসংখ্যান এবং টার্নটির ধাপে ধাপে ইতিহাস সহ সম্পূর্ণ Interaction রিসোর্সটি ফেরত দেয়।

এসডিকে-গুলো সম্পূর্ণ রেসপন্স প্রকাশ করলেও, চূড়ান্ত আউটপুট সরাসরি অ্যাক্সেস করার জন্য এগুলো interaction.output_text এবং interaction.output_image এর মতো সুবিধাজনক প্রপার্টিও প্রদান করে। রেসপন্সের গঠন সম্পর্কে আরও জানতে ইন্টারঅ্যাকশন ওভারভিউ দেখুন অথবা সিস্টেম নির্দেশাবলী এবং জেনারেশন কনফিগারেশনের বিস্তারিত তথ্যের জন্য টেক্সট জেনারেশন গাইডটি পড়ুন।

৩. প্রতিক্রিয়াটি স্ট্রিম করুন

আরও সাবলীল ইন্টারঅ্যাকশনের জন্য, প্রতিক্রিয়াটি তৈরি হওয়ার সাথে সাথেই স্ট্রিম করুন। প্রতিটি step.delta ইভেন্ট একটি টেক্সট অংশ সরবরাহ করে যা আপনি অবিলম্বে প্রদর্শন করতে পারেন।

পাইথন

from google import genai

client = genai.Client()

stream = client.interactions.create(
    model="gemini-3.5-flash",
    input="Explain how AI works",
    stream=True
)
for event in stream:
    print(event)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const stream = await ai.interactions.create({
  model: "gemini-3.5-flash",
  input: "Explain how AI works",
  stream: true,
});

for await (const event of stream) {
  console.log(event);
}

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions?alt=sse" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  --no-buffer \
  -d '{
    "model": "gemini-3.5-flash",
    "input": "Explain how AI works",
    "stream": true
  }'

স্ট্রিমিং করার সময়, সার্ভার-প্রেরিত ইভেন্টের (SSE) একটি স্ট্রিমের মাধ্যমে সাড়া দেয়। প্রতিটি ইভেন্টে একটি টাইপ এবং JSON ডেটা অন্তর্ভুক্ত থাকে।

প্রতিক্রিয়া:

event: interaction.created
data: {"interaction":{"id":"v1_Chd...","status":"in_progress","model":"gemini-3.5-flash"},"event_type":"interaction.created"}

event: step.start
data: {"index":0,"step":{"type":"thought"},"event_type":"step.start"}

event: step.delta
data: {"index":0,"delta":{"signature":"EvEFCu4F...","type":"thought_signature"},"event_type":"step.delta"}

event: step.stop
data: {"index":0,"event_type":"step.stop"}

event: step.start
data: {"index":1,"step":{"type":"model_output"},"event_type":"step.start"}

event: step.delta
data: {"index":1,"delta":{"text":"AI ","type":"text"},"event_type":"step.delta"}

event: step.delta
data: {"index":1,"delta":{"text":"works ","type":"text"},"event_type":"step.delta"}

event: step.stop
data: {"index":1,"event_type":"step.stop"}

event: interaction.completed
data: {"interaction":{"id":"v1_Chd...","status":"completed","usage":{"total_tokens":197}},"event_type":"interaction.completed"}

স্ট্রিমিং ইভেন্ট এবং ডেল্টা টাইপ পরিচালনা সম্পর্কে বিস্তারিত জানতে, স্ট্রিমিং ইন্টারঅ্যাকশন গাইডটি দেখুন।

৪. একাধিক পালাক্রমে কথোপকথন

ইন্টারঅ্যাকশন এপিআই দুটি পদ্ধতির মাধ্যমে একাধিক পালাক্রমে কথোপকথন সমর্থন করে:

  • স্টেটফুল (প্রস্তাবিত) : previous_interaction_id ব্যবহার করে সার্ভারে কথোপকথন চালিয়ে যান। বেশিরভাগ চ্যাট এবং এজেন্টিক ওয়ার্কফ্লোর জন্য এটি আদর্শ, যেখানে আপনি চান সার্ভার যেন ইতিহাস পরিচালনা করে এবং ক্যাশিং অপ্টিমাইজ করে।
  • স্টেটলেস : প্রতিটি অনুরোধে পূর্ববর্তী সমস্ত পালা (মধ্যবর্তী মডেল চিন্তা এবং টুল ধাপ সহ) প্রেরণ করে ক্লায়েন্টে কথোপকথনের ইতিহাস পরিচালনা করুন।

previous_interaction_id প্রদান করে কথোপকথনগুলো চালিয়ে যান। সার্ভার আপনার জন্য সম্পূর্ণ কথোপকথনের ইতিহাস পরিচালনা করে।

পাইথন

from google import genai

client = genai.Client()

# Server-side state (recommended)
interaction1 = client.interactions.create(
    model="gemini-3.5-flash",
    input="I have 2 dogs in my house.",
)
print("Response 1:", interaction1.output_text)

interaction2 = client.interactions.create(
    model="gemini-3.5-flash",
    input="How many paws are in my house?",
    previous_interaction_id=interaction1.id,
)
print("Response 2:", interaction2.output_text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

// Server-side state (recommended)
const interaction1 = await ai.interactions.create({
  model: "gemini-3.5-flash",
  input: "I have 2 dogs in my house.",
});
console.log("Response 1:", interaction1.output_text);

const interaction2 = await ai.interactions.create({
  model: "gemini-3.5-flash",
  input: "How many paws are in my house?",
  previous_interaction_id: interaction1.id,
});
console.log("Response 2:", interaction2.output_text);

বিশ্রাম

RESPONSE1=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.5-flash",
    "input": "I have 2 dogs in my house."
  }')

INTERACTION_ID=$(echo "$RESPONSE1" | jq -r '.id')
echo "Interaction 1 ID: $INTERACTION_ID"

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.5-flash",
    "input": "How many paws are in my house?",
    "previous_interaction_id": "'$INTERACTION_ID'"
  }'

রাষ্ট্রহীন

store=false সেট করুন এবং ক্লায়েন্ট সাইডে কথোপকথনের ইতিহাস পরিচালনা করুন। আপনাকে অবশ্যই মডেল-জেনারেটেড সমস্ত ধাপ ( thought এবং function_call ধাপ সহ) ঠিক যেভাবে পেয়েছেন সেভাবেই সংরক্ষণ এবং পুনরায় পাঠাতে হবে।

পাইথন

from google import genai

client = genai.Client()

history = [
    {
        "type": "user_input",
        "content": [{"type": "text", "text": "I have 2 dogs in my house."}]
    }
]

interaction1 = client.interactions.create(
    model="gemini-3.5-flash",
    store=False,
    input=history
)
print("Response 1:", interaction1.steps[-1].content[0].text)

for step in interaction1.steps:
    history.append(step.model_dump())

history.append({
    "type": "user_input",
    "content": [{"type": "text", "text": "How many paws are in my house?"}]
})

interaction2 = client.interactions.create(
    model="gemini-3.5-flash",
    store=False,
    input=history
)
print("Response 2:", interaction2.steps[-1].content[0].text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const history = [
  {
    type: "user_input",
    content: [{ type: "text", text: "I have 2 dogs in my house." }]
  }
];

const interaction1 = await ai.interactions.create({
  model: "gemini-3.5-flash",
  store: false,
  input: history
});
console.log("Response 1:", interaction1.steps.at(-1).content[0].text);

history.push(...interaction1.steps);

history.push({
  type: "user_input",
  content: [{ type: "text", text: "How many paws are in my house?" }]
});

const interaction2 = await ai.interactions.create({
  model: "gemini-3.5-flash",
  store: false,
  input: history
});
console.log("Response 2:", interaction2.steps.at(-1).content[0].text);

বিশ্রাম

# Turn 1: Send with store: false
RESPONSE1=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.5-flash",
    "store": false,
    "input": [
      {
        "type": "user_input",
        "content": "I have 2 dogs in my house."
      }
    ]
  }')

MODEL_STEPS=$(echo "$RESPONSE1" | jq '.steps')

# Turn 2: Build full history
HISTORY=$(jq -n \
  --argjson first_input '[{"type": "user_input", "content": "I have 2 dogs in my house."}]' \
  --argjson model_steps "$MODEL_STEPS" \
  --argjson second_input '[{"type": "user_input", "content": "How many paws are in my house?"}]' \
  '$first_input + $model_steps + $second_input')

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d "{
    \"model\": \"gemini-3.5-flash\",
    \"store\": false,
    \"input\": $HISTORY
  }"

প্রতিক্রিয়া:

{
  "id": "v2_Chd...",
  "status": "completed",
  "usage": {
    "total_tokens": 240,
    "total_input_tokens": 60,
    "total_output_tokens": 20
  },
  "steps": [
    {
      "type": "model_output",
      "content": [
        {
          "type": "text",
          "text": "There are 8 paws in your house. 2 dogs \u00d7 4 paws = 8 paws."
        }
      ]
    }
  ],
  "object": "interaction",
  "model": "gemini-3.5-flash"
}

দ্বিতীয় ইন্টারঅ্যাকশনটি একটি সম্পূর্ণ রেসপন্স অবজেক্ট রিটার্ন করে, যাতে শুধুমাত্র নতুন ধাপগুলো অন্তর্ভুক্ত থাকে, কিন্তু এটি পূর্ববর্তী টার্নের কনটেক্সটের উপর ভিত্তি করে গঠিত হয়। মাল্টি-টার্ন কনভারসেশনস গাইডে স্টেট মেইনটেইন করা সম্পর্কে আরও জানুন, অথবা ক্লায়েন্ট-সাইড হিস্ট্রি ম্যানেজমেন্টের জন্য স্টেটলেস মোড এক্সপ্লোর করুন।

৫. বহুবিধ উপলব্ধি

জেমিনি মডেলগুলো স্বাভাবিকভাবেই ছবি, অডিও, ভিডিও এবং ডকুমেন্ট বুঝতে পারে। একটিমাত্র অনুরোধেই টেক্সটের পাশাপাশি মিডিয়া পাঠানো যায়।

পাইথন

import base64
from google import genai

client = genai.Client()

# Load a local image
with open("sample.jpg", "rb") as f:
    image_bytes = f.read()
image_b64 = base64.b64encode(image_bytes).decode("utf-8")

interaction = client.interactions.create(
    model="gemini-3.5-flash",
    input=[
        {"type": "text", "text": "Compare this local image and this remote audio file."},
        {
            "type": "image",
            "data": image_b64,
            "mime_type": "image/jpeg"
        },
        {
            "type": "audio",
            "uri": "https://storage.googleapis.com/generativeai-downloads/data/sample.mp3",
            "mime_type": "audio/mp3"
        }
    ]
)
print(interaction.output_text)

জাভাস্ক্রিপ্ট

import fs from "fs";
import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

// Load a local image
const imageBytes = fs.readFileSync("sample.jpg");
const imageB64 = imageBytes.toString("base64");

const interaction = await ai.interactions.create({
  model: "gemini-3.5-flash",
  input: [
    { type: "text", text: "Compare this local image and this remote audio file." },
    {
      type: "image",
      data: imageB64,
      mime_type: "image/jpeg"
    },
    {
      type: "audio",
      uri: "https://storage.googleapis.com/generativeai-downloads/data/sample.mp3",
      mime_type: "audio/mp3"
    }
  ],
});
console.log(interaction.output_text);

বিশ্রাম

# Base64-encode local image
BASE64_IMAGE=$(base64 -w 0 sample.jpg)

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions"   -H "x-goog-api-key: $GEMINI_API_KEY"   -H 'Content-Type: application/json'   -H "Api-Revision: 2026-05-20"   -d '{
    "model": "gemini-3.5-flash",
    "input": [
      {
        "type": "text",
        "text": "Compare this local image and this remote audio file."
      },
      {
        "type": "image",
        "data": "'$BASE64_IMAGE'",
        "mime_type": "image/jpeg"
      },
      {
        "type": "audio",
        "uri": "https://storage.googleapis.com/generativeai-downloads/data/sample.mp3",
        "mime_type": "audio/mp3"
      }
    ]
  }'

প্রতিক্রিয়া:

{
  "id": "v1_Chd...",
  "status": "completed",
  "usage": {
    "total_tokens": 300
  },
  "steps": [
    {
      "type": "model_output",
      "content": [
        {
          "type": "text",
          "text": "The local image displays a pipe organ while the remote audio file is a sample MP3 clip..."
        }
      ]
    }
  ],
  "object": "interaction",
  "model": "gemini-3.5-flash",
}

ইমেজ আন্ডারস্ট্যান্ডিং গাইড থেকে জানুন কীভাবে ছবি, ভিডিও এবং অডিও ফাইল পাস করতে হয়।

শ্রবণ বোধগম্যতা

অডিও ফাইলগুলো প্রতিলিপি করুন, সারসংক্ষেপ করুন, অথবা সেগুলোর বিষয়ে প্রশ্নের উত্তর দিন।

ভিডিও বোঝা

ভিডিওর বিষয়বস্তু বিশ্লেষণ করুন, ঘটনাগুলো শনাক্ত করুন এবং কার্যকলাপ বর্ণনা করুন।

নথি প্রক্রিয়াকরণ

পিডিএফ এবং অন্যান্য ডকুমেন্ট ফরম্যাট থেকে তথ্য বের করুন।

৬. মাল্টিমোডাল জেনারেশন

জেমিনি ন্যানো ব্যানানা ইমেজ মডেল ব্যবহার করে নিজস্বভাবে ছবি তৈরি করতে পারে।

পাইথন

import base64
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.1-flash-image",
    input="Generate an image of a futuristic city skyline at sunset",
)

with open("generated_image.png", "wb") as f:
    f.write(base64.b64decode(interaction.output_image.data))

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  model: "gemini-3.1-flash-image",
  input: "Generate an image of a futuristic city skyline at sunset",
});

const generatedImage = interaction.output_image;
if (generatedImage) {
  const buffer = Buffer.from(generatedImage.data, "base64");
  fs.writeFileSync("generated_image.png", buffer);
}

বিশ্রাম

curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.1-flash-image",
    "input": [
      {"type": "text", "text": "Generate an image of a futuristic city skyline at sunset"}
    ]
  }'

প্রতিক্রিয়া:

{
  "id": "v1_Chd...",
  "status": "completed",
  "steps": [
    {
      "type": "model_output",
      "content": [
        {
          "type": "image",
          "data": "BASE64_ENCODED_IMAGE",
          "mime_type": "image/png"
        }
      ]
    }
  ],
  "object": "interaction",
  "model": "gemini-3.1-flash-image",
}

মডেলটি যখন কোনো ছবি তৈরি করে, তখন এটি steps অ্যারের মধ্যে একটি ধাপে এবং output_image কনভেনিয়েন্স প্রপার্টির মাধ্যমেও base64-এনকোডেড ছবির ডেটা ফেরত দেয়। অ্যাস্পেক্ট রেশিও, ছবি সম্পাদনা এবং রেফারেন্স সম্পর্কে জানতে ছবি তৈরির নির্দেশিকাটি দেখুন।

বক্তৃতা তৈরি

Gemini 3.1 Flash TTS-এর মাধ্যমে অভিব্যক্তিপূর্ণ, একাধিক বক্তার বক্তৃতা তৈরি করুন।

সঙ্গীত প্রজন্ম

Lyria 3 দিয়ে ক্লিপ ও পূর্ণাঙ্গ গান তৈরি করুন।

৭. কাঠামোগত আউটপুট ব্যবহার করুন

আপনার সংজ্ঞায়িত স্কিমার সাথে মেলে এমন JSON রিটার্ন করার জন্য মডেলটি কনফিগার করুন। স্ট্রাকচার্ড আউটপুট Pydantic (Python) এবং Zod (JavaScript)-এর সাথে কাজ করে।

পাইথন

from google import genai
from pydantic import BaseModel, Field
from typing import List, Optional

class Recipe(BaseModel):
    recipe_name: str = Field(description="Name of the recipe.")
    ingredients: List[str] = Field(description="List of ingredients.")
    prep_time_minutes: Optional[int] = Field(description="Prep time in minutes.")

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.5-flash",
    input="Give me a recipe for banana bread",
    response_format={
        "type": "text",
        "mime_type": "application/json",
        "schema": Recipe.model_json_schema()
    },
)

recipe = Recipe.model_validate_json(interaction.output_text)
print(recipe)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";
import * as z from "zod";

const ai = new GoogleGenAI({});

const recipeJsonSchema = {
  type: "object",
  properties: {
    recipe_name: { type: "string", description: "Name of the recipe." },
    ingredients: {
      type: "array",
      items: { type: "string" },
      description: "List of ingredients."
    },
    prep_time_minutes: {
      type: "integer",
      description: "Prep time in minutes."
    }
  },
  required: ["recipe_name", "ingredients"]
};

const recipeSchema = z.fromJSONSchema(recipeJsonSchema);

const interaction = await ai.interactions.create({
  model: "gemini-3.5-flash",
  input: "Give me a recipe for banana bread",
  response_format: {
    type: "text",
    mime_type: "application/json",
    schema: recipeJsonSchema
  },
});

const recipe = recipeSchema.parse(JSON.parse(interaction.output_text));
console.log(recipe);

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.5-flash",
    "input": "Give me a recipe for banana bread",
    "response_format": {
      "type": "text",
      "mime_type": "application/json",
      "schema": {
        "type": "object",
        "properties": {
          "recipe_name": { "type": "string", "description": "Name of the recipe." },
          "ingredients": {
            "type": "array",
            "items": { "type": "string" },
            "description": "List of ingredients."
          },
          "prep_time_minutes": {
            "type": "integer",
            "description": "Prep time in minutes."
          }
        },
        "required": ["recipe_name", "ingredients"]
      }
    }
  }'

প্রতিক্রিয়া:

{
  "id": "v1_Chd...",
  "status": "completed",
  "steps": [
    {
      "type": "model_output",
      "content": [
        {
          "type": "text",
          "text": "{\n  \"recipe_name\": \"Classic Banana Bread\",\n  \"ingredients\": [\n    \"3 ripe bananas, mashed\",\n    \"1/3 cup melted butter\",\n    \"3/4 cup sugar\",\n    \"1 egg, beaten\",\n    \"1 teaspoon vanilla extract\",\n    \"1 teaspoon baking soda\",\n    \"Pinch of salt\",\n    \"1.5 cups all-purpose flour\"\n  ],\n  \"prep_time_minutes\": 15\n}"
        }
      ]
    }
  ],
  "object": "interaction",
  "model": "gemini-3.5-flash",
}

আউটপুট টেক্সট ব্লকটিতে অনুরোধ করা স্কিমা অনুযায়ী একটি বৈধ JSON স্ট্রিং থাকে। আরও জটিল কাঠামো এবং রিকার্সিভ স্কিমা কীভাবে সংজ্ঞায়িত করতে হয় তা জানতে, স্ট্রাকচার্ড আউটপুট গাইডটি দেখুন।

৮. সরঞ্জাম ব্যবহার করুন

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

পাইথন

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.5-flash",
    input="Who won the euro 2024?",
    tools=[{"type": "google_search"}]
)

print(interaction.output_text)

# Print citations
for step in interaction.steps:
    if step.type == "model_output":
        for content_block in step.content:
            if content_block.type == "text" and content_block.annotations:
                print("\nCitations:")
                for annotation in content_block.annotations:
                    if annotation.type == "url_citation":
                        print(f"  [{annotation.title}]({annotation.url})")

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  model: "gemini-3.5-flash",
  input: "Who won the euro 2024?",
  tools: [{ type: "google_search" }]
});

console.log(interaction.output_text);

// Print citations
for (const step of interaction.steps) {
  if (step.type === "model_output") {
    for (const contentBlock of step.content) {
      if (contentBlock.type === "text" && contentBlock.annotations) {
        console.log("\nCitations:");
        for (const annotation of contentBlock.annotations) {
          if (annotation.type === "url_citation") {
            console.log(`  [${annotation.title}](${annotation.url})`);
          }
        }
      }
    }
  }
}

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.5-flash",
    "input": "Who won the euro 2024?",
    "tools": [{"type": "google_search"}]
  }'

প্রতিক্রিয়া:

{
  "id": "v1_Chd...",
  "status": "completed",
  "steps": [
    {
      "type": "thought",
      "signature": "EvEFCu4F..."
    },
    {
      "type": "google_search_call",
      "arguments": {
        "queries": ["UEFA Euro 2024 winner"]
      }
    },
    {
      "type": "google_search_result",
      "call_id": "search_001",
      "result": [
        {
          "search_suggestions": "<!-- HTML and CSS search widget -->"
        }
      ]
    },
    {
      "type": "model_output",
      "content": [
        {
          "type": "text",
          "text": "Spain won Euro 2024, defeating England 2-1 in the final.",
          "annotations": [
            {
              "type": "url_citation",
              "url": "https://www.uefa.com/euro2024",
              "title": "uefa.com",
              "start_index": 0,
              "end_index": 56
            }
          ]
        }
      ]
    }
  ],
  "object": "interaction",
  "model": "gemini-3.5-flash",
}

অনুসন্ধানের ধাপগুলো ইন্টারঅ্যাকশন হিস্ট্রির মধ্যে বিস্তারিতভাবে উল্লেখ করা থাকে এবং চূড়ান্ত আউটপুটে ওয়েব উৎস নির্দেশকারী ইনলাইন সাইটেশন অন্তর্ভুক্ত থাকে।

আপনি গুগল সার্চ গ্রাউন্ডিং গাইড থেকে সার্চ সাইটেশন কীভাবে এক্সট্র্যাক্ট করতে হয় তা শিখতে পারেন, অথবা টুল কম্বিনেশন গাইড থেকে একাধিক টুল কীভাবে একত্রিত করতে হয় তা দেখতে পারেন।

কোড এক্সিকিউশন

একটি সুরক্ষিত স্যান্ডবক্সযুক্ত Borg পরিবেশে পাইথন কোড চালান।

URL প্রসঙ্গ

ওয়েবপেজের কন্টেন্টে রেসপন্সগুলোকে গ্রাউন্ড করতে পাবলিক ওয়েব ইউআরএলগুলো সরাসরি পাস করুন।

ফাইল অনুসন্ধান

আপলোড করা নথি এবং মিডিয়া ফাইলগুলির মধ্যে সূচীকরণ ও অনুসন্ধান করুন।

গুগল ম্যাপস

বাস্তব ভূ-স্থানিক এবং অবস্থান ডেটাতে ভূমির প্রতিক্রিয়া।

কম্পিউটার ব্যবহার

ব্রাউজার অটোমেশন এবং স্ক্রিন ইন্টারঅ্যাকশন।

৯. আপনার নিজের ফাংশনগুলোর নামকরণ করুন

ফাংশন কলিং আপনাকে আপনার কোডের সাথে মডেলকে সংযুক্ত করার সুযোগ দেয়। আপনি একটি ফাংশনের নাম এবং প্যারামিটার ঘোষণা করেন, মডেল সিদ্ধান্ত নেয় কখন এটিকে কল করতে হবে এবং স্ট্রাকচার্ড আর্গুমেন্ট রিটার্ন করে, আর আপনি এটিকে স্থানীয়ভাবে এক্সিকিউট করে ফলাফলটি ফেরত পাঠান।

পাইথন

import json
from google import genai

client = genai.Client()

weather_tool = {
    "type": "function",
    "name": "get_current_temperature",
    "description": "Gets the current temperature for a given location.",
    "parameters": {
        "type": "object",
        "properties": {
            "location": {
                "type": "string",
                "description": "The city name, e.g. San Francisco",
            },
        },
        "required": ["location"],
    },
}

available_functions = {
    "get_current_temperature": lambda location: {
        "location": location, "temperature": "22", "unit": "celsius"
    },
}

user_input = "What is the temperature in London?"
previous_id = None

while True:
    interaction = client.interactions.create(
        model="gemini-3.5-flash",
        input=user_input,
        tools=[weather_tool],
        previous_interaction_id=previous_id,
    )

    function_results = []
    for step in interaction.steps:
        if step.type == "function_call":
            result = available_functions[step.name](**step.arguments)
            print(f"Called {step.name}({step.arguments}) → {result}")
            function_results.append({
                "type": "function_result",
                "name": step.name,
                "call_id": step.id,
                "result": [{"type": "text", "text": json.dumps(result)}],
            })

    if not function_results:
        break

    user_input = function_results
    previous_id = interaction.id

print(interaction.output_text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const weatherTool = {
  type: "function",
  name: "get_current_temperature",
  description: "Gets the current temperature for a given location.",
  parameters: {
    type: "object",
    properties: {
      location: {
        type: "string",
        description: "The city name, e.g. San Francisco",
      },
    },
    required: ["location"],
  },
};

const availableFunctions = {
  get_current_temperature: ({ location }) => ({
    location, temperature: "22", unit: "celsius"
  }),
};

let input = "What is the temperature in London?";
let previousId = null;
let interaction;

while (true) {
  interaction = await ai.interactions.create({
    model: "gemini-3.5-flash",
    input,
    tools: [weatherTool],
    previous_interaction_id: previousId,
  });

  const functionResults = [];
  for (const step of interaction.steps) {
    if (step.type === "function_call") {
      const result = availableFunctions[step.name](step.arguments);
      console.log(`Called ${step.name}(${JSON.stringify(step.arguments)}) →`, result);
      functionResults.push({
        type: "function_result",
        name: step.name,
        call_id: step.id,
        result: [{ type: "text", text: JSON.stringify(result) }],
      });
    }
  }

  if (functionResults.length === 0) break;

  input = functionResults;
  previousId = interaction.id;
}

console.log(interaction.output_text);

বিশ্রাম

# Turn 1: Send prompt with function declaration
RESPONSE1=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.5-flash",
    "input": "What is the temperature in London?",
    "tools": [{
      "type": "function",
      "name": "get_current_temperature",
      "description": "Gets the current temperature for a given location.",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {"type": "string", "description": "The city name"}
        },
        "required": ["location"]
      }
    }]
  }')

INTERACTION_ID=$(echo "$RESPONSE1" | jq -r '.id')
FC_NAME=$(echo "$RESPONSE1" | jq -r '.steps[] | select(.type=="function_call") | .name')
FC_ID=$(echo "$RESPONSE1" | jq -r '.steps[] | select(.type=="function_call") | .id')
echo "Function: $FC_NAME, Call ID: $FC_ID"

# Turn 2: Send function result back
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.5-flash",
    "previous_interaction_id": "'$INTERACTION_ID'",
    "input": [{
      "type": "function_result",
      "name": "'$FC_NAME'",
      "call_id": "'$FC_ID'",
      "result": [{"type": "text", "text": "{\"location\": \"London\", \"temperature\": \"22\", \"unit\": \"celsius\"}"}]
    }],
    "tools": [{
      "type": "function",
      "name": "get_current_temperature",
      "description": "Gets the current temperature for a given location.",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {"type": "string", "description": "The city name"}
        },
        "required": ["location"]
      }
    }]
  }'

রাষ্ট্রহীন

আপনি ক্লায়েন্ট সাইডে কথোপকথনের ইতিহাস পরিচালনা করে এবং store=false সেট করার মাধ্যমেও স্টেটলেস মোডে ফাংশন কলিং ব্যবহার করতে পারেন। স্টেটলেস মোডে, আপনাকে প্রতিটি পরবর্তী অনুরোধের input ফিল্ডে কথোপকথনের সম্পূর্ণ ইতিহাস অবশ্যই পাস করতে হবে। এই ইতিহাসে অবশ্যই অন্তর্ভুক্ত থাকতে হবে:

  1. প্রাথমিক user_input ধাপ।
  2. টার্ন ১-এ মডেল দ্বারা তৈরি সমস্ত ধাপ ( thought এবং function_call ধাপ সহ) ঠিক যেমনভাবে পাওয়া গিয়েছিল, সেভাবেই ফেরত দেওয়া হয়েছে।
  3. function_result স্টেপটিতে আপনার সম্পাদিত ফাংশনের আউটপুট থাকে।

পাইথন

import json
from google import genai

client = genai.Client()

weather_tool = {
    "type": "function",
    "name": "get_current_temperature",
    "description": "Gets the current temperature for a given location.",
    "parameters": {
        "type": "object",
        "properties": {
            "location": {
                "type": "string",
                "description": "The city name, e.g. San Francisco",
            },
        },
        "required": ["location"],
    },
}

available_functions = {
    "get_current_temperature": lambda location: {
        "location": location, "temperature": "22", "unit": "celsius"
    },
}

history = [
    {
        "type": "user_input",
        "content": [{"type": "text", "text": "What is the temperature in London?"}]
    }
]

while True:
    interaction = client.interactions.create(
        model="gemini-3.5-flash",
        store=False,
        input=history,
        tools=[weather_tool],
    )

    function_results = []
    for step in interaction.steps:
        history.append(step.model_dump())
        if step.type == "function_call":
            result = available_functions[step.name](**step.arguments)
            print(f"Called {step.name}({step.arguments}) → {result}")
            fn_result = {
                "type": "function_result",
                "name": step.name,
                "call_id": step.id,
                "result": [{"type": "text", "text": json.dumps(result)}],
            }
            function_results.append(fn_result)
            history.append(fn_result)

    if not function_results:
        break

print(interaction.output_text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const weatherTool = {
  type: "function",
  name: "get_current_temperature",
  description: "Gets the current temperature for a given location.",
  parameters: {
    type: "object",
    properties: {
      location: {
        type: "string",
        description: "The city name, e.g. San Francisco",
      },
    },
    required: ["location"],
  },
};

const availableFunctions = {
  get_current_temperature: ({ location }) => ({
    location, temperature: "22", unit: "celsius"
  }),
};

const history = [
  {
    type: "user_input",
    content: [{ type: "text", text: "What is the temperature in London?" }]
  }
];

let interaction;

while (true) {
  interaction = await ai.interactions.create({
    model: "gemini-3.5-flash",
    store: false,
    input: history,
    tools: [weatherTool],
  });

  const functionResults = [];
  for (const step of interaction.steps) {
    history.push(step);
    if (step.type === "function_call") {
      const result = availableFunctions[step.name](step.arguments);
      console.log(`Called ${step.name}(${JSON.stringify(step.arguments)}) →`, result);
      const fnResult = {
        type: "function_result",
        name: step.name,
        call_id: step.id,
        result: [{ type: "text", text: JSON.stringify(result) }],
      };
      functionResults.push(fnResult);
      history.push(fnResult);
    }
  }

  if (functionResults.length === 0) break;
}

console.log(interaction.output_text);

বিশ্রাম

# Turn 1: Send request with tools and store: false
RESPONSE1=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.5-flash",
    "store": false,
    "input": [
      {
        "type": "user_input",
        "content": "What is the temperature in London?"
      }
    ],
    "tools": [{
      "type": "function",
      "name": "get_current_temperature",
      "description": "Gets the current temperature for a given location.",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {"type": "string", "description": "The city name"}
        },
        "required": ["location"]
      }
    }]
  }')

# Extract model steps (thought, function_call)
MODEL_STEPS=$(echo "$RESPONSE1" | jq '.steps')
FC_NAME=$(echo "$RESPONSE1" | jq -r '.steps[] | select(.type=="function_call") | .name')
FC_ID=$(echo "$RESPONSE1" | jq -r '.steps[] | select(.type=="function_call") | .id')
echo "Function: $FC_NAME, Call ID: $FC_ID"

# Assume local execution returns:
RESULT="{\"location\": \"London\", \"temperature\": \"22\", \"unit\": \"celsius\"}"

# Reconstruct history for Turn 2
HISTORY=$(jq -n \
  --argjson first_input '[{"type": "user_input", "content": "What is the temperature in London?"}]' \
  --argjson model_steps "$MODEL_STEPS" \
  --arg fc_name "$FC_NAME" \
  --arg fc_id "$FC_ID" \
  --arg result "$RESULT" \
  '$first_input + $model_steps + [{"type": "function_result", "name": $fc_name, "call_id": $fc_id, "result": [{"type": "text", "text": $result}]}]')

# Turn 2: Send the full history
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d "{
    \"model\": \"gemini-3.5-flash\",
    \"store\": false,
    \"input\": $HISTORY,
    \"tools\": [{
      \"type\": \"function\",
      \"name\": \"get_current_temperature\",
      \"description\": \"Gets the current temperature for a given location.\",
      \"parameters\": {
        \"type\": \"object\",
        \"properties\": {
          \"location\": {\"type\": \"string\", \"description\": \"The city name\"}
        },
        \"required\": [\"location\"]
      }
    }]
  }"

প্রতিক্রিয়া:

টার্ন ১ চলাকালীন, মডেলটি requires_action স্ট্যাটাস এবং function_call স্টেপ সহ একটি প্রতিক্রিয়া ফেরত দেয়:

{
  "id": "v1_Chd...",
  "status": "requires_action",
  "steps": [
    {
      "type": "function_call",
      "id": "call_abc123",
      "name": "get_current_temperature",
      "arguments": {
        "location": "London"
      }
    }
  ],
  "object": "interaction",
  "model": "gemini-3.5-flash"
}

আপনি স্থানীয়ভাবে ফাংশনটি রান করে ফলাফল জমা দেওয়ার পর (টার্ন ২), চূড়ান্ত সম্পন্ন ইন্টারঅ্যাকশনটি ফেরত আসে:

{
  "id": "v1_Chd...",
  "status": "completed",
  "steps": [
    {
      "type": "function_call",
      "id": "call_abc123",
      "name": "get_current_temperature",
      "arguments": {
        "location": "London"
      }
    },
    {
      "type": "model_output",
      "content": [
        {
          "type": "text",
          "text": "The temperature in London is currently 22°C."
        }
      ]
    }
  ],
  "object": "interaction",
  "model": "gemini-3.5-flash",
}

প্যারালাল ফাংশন কলিং বা ফাংশন চয়েস মোডের মতো উন্নত ফিচারগুলোর জন্য, ফাংশন কলিং গাইডটি দেখুন।

১০. একটি পরিচালিত এজেন্ট চালান

ম্যানেজড এজেন্টগুলো একটি রিমোট স্যান্ডবক্সে চলে এবং কোড এক্সিকিউশন ও ফাইল ম্যানেজমেন্টের মতো টুলগুলো ব্যবহারের সুযোগ পায়। model পরিবর্তে একটি agent পাস করুন এবং environment="remote" সেট করুন।

পাইথন

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    agent="antigravity-preview-05-2026",
    input="Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.",
    environment="remote",
)
print(f"Environment: {interaction.environment_id}")
print(interaction.output_text)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  agent: "antigravity-preview-05-2026",
  input: "Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.",
  environment: "remote",
});
console.log(`Environment: ${interaction.environment_id}`);
console.log(interaction.output_text);

বিশ্রাম

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "agent": "antigravity-preview-05-2026",
    "input": "Write a Python script that generates the first 20 Fibonacci numbers and saves them to fibonacci.txt. Then read the file and print its contents.",
    "environment": "remote"
  }'

এছাড়াও আপনি আপনার নিজস্ব নির্দেশাবলী, দক্ষতা এবং ডেটা উৎস ব্যবহার করে কাস্টম এজেন্ট তৈরি ও সংরক্ষণ করতে পারেন।

কুইকস্টার্ট

আপনার প্রথম এজেন্ট কলটি করুন, উত্তরগুলো স্ট্রিম করুন এবং একটি কাস্টম এজেন্ট তৈরি করুন।

অ্যান্টিগ্র্যাভিটি এজেন্ট

ডিফল্ট এজেন্টের সক্ষমতা, সরঞ্জাম, বহুবিধ ইনপুট এবং মূল্য নির্ধারণ।

এআই স্টুডিওতে এজেন্ট

কোড না লিখে এজেন্টদের প্রোটোটাইপিং করার জন্য একটি ভিজ্যুয়াল প্লেগ্রাউন্ড।

১১. ব্যাকগ্রাউন্ডে টাস্ক চালান

দীর্ঘ কাজগুলো অ্যাসিঙ্ক্রোনাসভাবে চালানোর জন্য background=True সেট করুন। interactions.get() ব্যবহার করে ফলাফলের জন্য পোল করুন।

পাইথন

import time
from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.5-flash",
    input="Write a detailed analysis of the impact of artificial intelligence on modern healthcare.",
    background=True,
)
print(f"Started background task: {interaction.id}")
print(f"Status: {interaction.status}")

# Poll for completion
while True:
    result = client.interactions.get(interaction.id)
    print(f"Status: {result.status}")
    if result.status == "completed":
        print(f"\nResult:\n{result.output_text}")
        break
    elif result.status == "failed":
        print(f"Failed: {result.error}")
        break
    time.sleep(5)

জাভাস্ক্রিপ্ট

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const interaction = await ai.interactions.create({
  model: "gemini-3.5-flash",
  input: "Write a detailed analysis of the impact of artificial intelligence on modern healthcare.",
  background: true,
});
console.log(`Started background task: ${interaction.id}`);
console.log(`Status: ${interaction.status}`);

// Poll for completion
while (true) {
  const result = await ai.interactions.get(interaction.id);
  console.log(`Status: ${result.status}`);
  if (result.status === "completed") {
    console.log(`\nResult:\n${result.output_text}`);
    break;
  } else if (result.status === "failed") {
    console.log(`Failed: ${result.error}`);
    break;
  }
  await new Promise(r => setTimeout(r, 5000));
}

বিশ্রাম

# Start a background task
RESPONSE=$(curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "gemini-3.5-flash",
    "input": "Write a detailed analysis of the impact of artificial intelligence on modern healthcare.",
    "background": true
  }')

INTERACTION_ID=$(echo "$RESPONSE" | jq -r '.id')
echo "Started background task: $INTERACTION_ID"

# Poll for completion
while true; do
  RESULT=$(curl -s "https://generativelanguage.googleapis.com/v1beta/interactions/$INTERACTION_ID" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H "Api-Revision: 2026-05-20")
  STATUS=$(echo "$RESULT" | jq -r '.status')
  echo "Status: $STATUS"
  if [ "$STATUS" = "completed" ]; then
    echo "$RESULT" | jq -r '.steps[] | select(.type=="model_output") | .content[] | select(.type=="text") | .text'
    break
  elif [ "$STATUS" = "failed" ]; then
    echo "Failed"
    break
  fi
  sleep 5
done

প্রতিক্রিয়া:

প্রাথমিক প্রতিক্রিয়াটি অবিলম্বে in_progress স্ট্যাটাস সহ ফিরে আসে:

{
  "id": "v1_abc123",
  "status": "in_progress",
  "object": "interaction",
  "model": "gemini-3.5-flash"
}

ব্যাকগ্রাউন্ড টাস্কটি সম্পূর্ণরূপে সম্পাদিত হয়ে গেলে, ইন্টারঅ্যাকশন অবস্থা পরীক্ষা করলে নিম্নলিখিত ফলাফল পাওয়া যায়:

{
  "id": "v1_abc123",
  "status": "completed",
  "steps": [
    {
      "type": "model_output",
      "content": [
        {
          "type": "text",
          "text": "Artificial intelligence has transformed modern healthcare in several..."
        }
      ]
    }
  ],
  "object": "interaction",
  "model": "gemini-3.5-flash",
}

ব্যাকগ্রাউন্ড এক্সিকিউশন গাইডে মডেল এবং এজেন্টগুলোকে অ্যাসিঙ্ক্রোনাসভাবে চালানোর বিষয়ে পড়ুন।

এরপর কী?

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