Google অনুসন্ধানের সাথে গ্রাউন্ডিং

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

গ্রাউন্ডিং আপনাকে এমন অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে যা:

  • তথ্যগত নির্ভুলতা বৃদ্ধি করুন: বাস্তব জগতের তথ্যের উপর ভিত্তি করে প্রতিক্রিয়া তৈরি করে মডেলের বিভ্রম হ্রাস করুন।
  • তাৎক্ষণিক তথ্য জানুন: সাম্প্রতিক ঘটনা ও বিষয়াবলী সম্পর্কে প্রশ্নের উত্তর দিন।
  • তথ্যসূত্র প্রদান করুন: মডেলের দাবিগুলোর উৎস দেখিয়ে ব্যবহারকারীর আস্থা তৈরি করুন।

পাইথন

from google import genai
from google.genai import types

client = genai.Client()

grounding_tool = types.Tool(
    google_search=types.GoogleSearch()
)

config = types.GenerateContentConfig(
    tools=[grounding_tool]
)

response = client.models.generate_content(
    model="gemini-3-flash-preview",
    contents="Who won the euro 2024?",
    config=config,
)

print(response.text)

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

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

const ai = new GoogleGenAI({});

const groundingTool = {
  googleSearch: {},
};

const config = {
  tools: [groundingTool],
};

const response = await ai.models.generateContent({
  model: "gemini-3-flash-preview",
  contents: "Who won the euro 2024?",
  config,
});

console.log(response.text);

বিশ্রাম

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{
    "contents": [
      {
        "parts": [
          {"text": "Who won the euro 2024?"}
        ]
      }
    ],
    "tools": [
      {
        "google_search": {}
      }
    ]
  }'

আপনি সার্চ টুল নোটবুকটি ব্যবহার করে আরও জানতে পারেন।

গুগল সার্চের মাধ্যমে গ্রাউন্ডিং কীভাবে কাজ করে

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

গ্রাউন্ডিং-ওভারভিউ

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

গ্রাউন্ডিং প্রতিক্রিয়া বোঝা

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

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "Spain won Euro 2024, defeating England 2-1 in the final. This victory marks Spain's record fourth European Championship title."
          }
        ],
        "role": "model"
      },
      "groundingMetadata": {
        "webSearchQueries": [
          "UEFA Euro 2024 winner",
          "who won euro 2024"
        ],
        "searchEntryPoint": {
          "renderedContent": "<!-- HTML and CSS for the search widget -->"
        },
        "groundingChunks": [
          {"web": {"uri": "https://vertexaisearch.cloud.google.com.....", "title": "aljazeera.com"}},
          {"web": {"uri": "https://vertexaisearch.cloud.google.com.....", "title": "uefa.com"}}
        ],
        "groundingSupports": [
          {
            "segment": {"startIndex": 0, "endIndex": 85, "text": "Spain won Euro 2024, defeatin..."},
            "groundingChunkIndices": [0]
          },
          {
            "segment": {"startIndex": 86, "endIndex": 210, "text": "This victory marks Spain's..."},
            "groundingChunkIndices": [0, 1]
          }
        ]
      }
    }
  ]
}

জেমিনি এপিআই groundingMetadata সাথে নিম্নলিখিত তথ্য ফেরত দেয়:

  • webSearchQueries : ব্যবহৃত সার্চ কোয়েরিগুলোর অ্যারে। এটি ডিবাগিং এবং মডেলের যুক্তি প্রক্রিয়া বোঝার জন্য সহায়ক।
  • searchEntryPoint : প্রয়োজনীয় সার্চ সাজেশনগুলো রেন্ডার করার জন্য HTML এবং CSS ধারণ করে। ব্যবহারের সম্পূর্ণ শর্তাবলী পরিষেবার শর্তাবলীতে বিস্তারিতভাবে উল্লেখ করা আছে।
  • groundingChunks : ওয়েব উৎসগুলো ( uri এবং title ) ধারণকারী অবজেক্টের অ্যারে।
  • groundingSupports : মডেল রেসপন্স text groundingChunks এর সোর্সগুলোর সাথে সংযুক্ত করার জন্য চাঙ্কগুলোর একটি অ্যারে। প্রতিটি চাঙ্ক একটি টেক্সট segment (যা startIndex এবং endIndex দ্বারা সংজ্ঞায়িত) এক বা একাধিক groundingChunkIndices এর সাথে লিঙ্ক করে। ইনলাইন সাইটেশন তৈরির জন্য এটিই মূল চাবিকাঠি।

গুগল সার্চের গ্রাউন্ডিং টুলটি ইউআরএল কনটেক্সট টুলের সাথে একত্রে ব্যবহার করে পাবলিক ওয়েব ডেটা এবং আপনার দেওয়া নির্দিষ্ট ইউআরএল—উভয়ের ভিত্তিতেই রেসপন্সকে গ্রাউন্ড করা যায়।

ইনলাইন উদ্ধৃতির মাধ্যমে উৎসের উল্লেখ করা

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

পাইথন

def add_citations(response):
    text = response.text
    supports = response.candidates[0].grounding_metadata.grounding_supports
    chunks = response.candidates[0].grounding_metadata.grounding_chunks

    # Sort supports by end_index in descending order to avoid shifting issues when inserting.
    sorted_supports = sorted(supports, key=lambda s: s.segment.end_index, reverse=True)

    for support in sorted_supports:
        end_index = support.segment.end_index
        if support.grounding_chunk_indices:
            # Create citation string like [1](link1)[2](link2)
            citation_links = []
            for i in support.grounding_chunk_indices:
                if i < len(chunks):
                    uri = chunks[i].web.uri
                    citation_links.append(f"[{i + 1}]({uri})")

            citation_string = ", ".join(citation_links)
            text = text[:end_index] + citation_string + text[end_index:]

    return text

# Assuming response with grounding metadata
text_with_citations = add_citations(response)
print(text_with_citations)

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

function addCitations(response) {
    let text = response.text;
    const supports = response.candidates[0]?.groundingMetadata?.groundingSupports;
    const chunks = response.candidates[0]?.groundingMetadata?.groundingChunks;

    // Sort supports by end_index in descending order to avoid shifting issues when inserting.
    const sortedSupports = [...supports].sort(
        (a, b) => (b.segment?.endIndex ?? 0) - (a.segment?.endIndex ?? 0),
    );

    for (const support of sortedSupports) {
        const endIndex = support.segment?.endIndex;
        if (endIndex === undefined || !support.groundingChunkIndices?.length) {
        continue;
        }

        const citationLinks = support.groundingChunkIndices
        .map(i => {
            const uri = chunks[i]?.web?.uri;
            if (uri) {
            return `[${i + 1}](${uri})`;
            }
            return null;
        })
        .filter(Boolean);

        if (citationLinks.length > 0) {
        const citationString = citationLinks.join(", ");
        text = text.slice(0, endIndex) + citationString + text.slice(endIndex);
        }
    }

    return text;
}

const textWithCitations = addCitations(response);
console.log(textWithCitations);

ইনলাইন উদ্ধৃতি সহ নতুন উত্তরটি দেখতে এইরকম হবে:

Spain won Euro 2024, defeating England 2-1 in the final.[1](https:/...), [2](https:/...), [4](https:/...), [5](https:/...) This victory marks Spain's record-breaking fourth European Championship title.[5]((https:/...), [2](https:/...), [3](https:/...), [4](https:/...)

মূল্য নির্ধারণ

আপনি যখন জেমিনি ৩-এর সাথে গুগল সার্চ ব্যবহার করেন, তখন মডেল দ্বারা সম্পাদিত প্রতিটি সার্চ কোয়েরির জন্য আপনার প্রোজেক্টের বিল করা হয়। যদি মডেল একটিমাত্র প্রম্পটের উত্তর দেওয়ার জন্য একাধিক সার্চ কোয়েরি সম্পাদন করার সিদ্ধান্ত নেয় (উদাহরণস্বরূপ, একই এপিআই কলের মধ্যে "UEFA Euro 2024 winner" এবং "Spain vs England Euro 2024 final score" সার্চ করা), তবে সেই অনুরোধের জন্য এটিকে টুলটির দুটি বিলযোগ্য ব্যবহার হিসাবে গণ্য করা হবে। বিলিংয়ের উদ্দেশ্যে, ইউনিক কোয়েরি গণনা করার সময় আমরা খালি ওয়েব সার্চ কোয়েরিগুলোকে উপেক্ষা করি। এই বিলিং মডেলটি শুধুমাত্র জেমিনি ৩ মডেলের জন্য প্রযোজ্য; আপনি যখন জেমিনি ২.৫ বা পুরোনো মডেলের সাথে সার্চ গ্রাউন্ডিং ব্যবহার করবেন, তখন আপনার প্রোজেক্টের বিল প্রতিটি প্রম্পটের জন্য করা হবে।

মূল্য সংক্রান্ত বিস্তারিত তথ্যের জন্য, জেমিনি এপিআই মূল্য তালিকা পৃষ্ঠাটি দেখুন।

সমর্থিত মডেল

আপনি মডেল ওভারভিউ পৃষ্ঠায় সম্পূর্ণ বৈশিষ্ট্যসমূহ খুঁজে পেতে পারেন।

মডেল গুগল সার্চের মাধ্যমে গ্রাউন্ডিং
জেমিনি ৩.১ ফ্ল্যাশ ইমেজ প্রিভিউ ✔️
জেমিনি ৩.১ প্রো প্রিভিউ ✔️
জেমিনি ৩ প্রো ছবির প্রিভিউ ✔️
জেমিনি ৩ ফ্ল্যাশ প্রিভিউ ✔️
জেমিনি ২.৫ প্রো ✔️
জেমিনি ২.৫ ফ্ল্যাশ ✔️
জেমিনি ২.৫ ফ্ল্যাশ-লাইট ✔️
জেমিনি ২.০ ফ্ল্যাশ ✔️

সমর্থিত টুল সংমিশ্রণ

আরও জটিল ব্যবহারের ক্ষেত্রগুলিকে শক্তিশালী করতে আপনি কোড এক্সিকিউশন এবং ইউআরএল কনটেক্সটের মতো অন্যান্য টুলের সাথে গ্রাউন্ডিং উইথ গুগল সার্চ ব্যবহার করতে পারেন।

জেমিনি ৩ মডেলগুলো বিল্ট-ইন টুল (যেমন গুগল সার্চের মাধ্যমে গ্রাউন্ডিং) এবং কাস্টম টুল (ফাংশন কলিং) একত্রিত করা সমর্থন করে। টুল কম্বিনেশন পেজে এ বিষয়ে আরও জানুন।

এরপর কী?