Google Maps-এর মাধ্যমে গ্রাউন্ডিং

Google Maps-এর মাধ্যমে গ্রাউন্ডিং Gemini মডেলকে Google Maps থেকে পাওয়া জিওস্পেশিয়াল ডেটার সাথে কানেক্ট করে, যাতে আপনি নিজের অ্যাপে লোকেশন-সচেতন ফাংশনালিটি বিল্ড করতে পারেন।

Google Maps-এর সাথে গ্রাউন্ডিংয়ের নিম্নলিখিত সুবিধা রয়েছে:

  • ফ্যাকচুয়াল নির্ভুলতা বাড়ানো: Google-এর ২ কোটি ৫০ লক্ষেরও বেশি বাস্তব-জগত সম্পর্কিত স্থান ও ব্যবসা সংক্রান্ত ডেটাবেসের উপর ভিত্তি করে উত্তর দেওয়ার মাধ্যমে মডেলের হ্যালুসিনেশন কমানো।
  • রিয়েল-টাইম তথ্য অ্যাক্সেস করা: লাইভ ডেটা ব্যবহার করে প্রশ্নের উত্তর দেওয়া, যেমন বর্তমান ব্যবসার সময় এবং EV চার্জিং স্টেশনের রিয়েল-টাইম স্ট্যাটাস।
  • সোর্স প্রদান করুন: মডেলের লোকেশন-ভিত্তিক দাবিগুলির ঠিক পাশে Google Maps জায়গার সোর্স ও লিঙ্ক সরাসরি দেখানোর মাধ্যমে ব্যবহারকারীর বিশ্বাস অর্জন করুন।

মানানসই মডেল

  • gemini-3.1-pro-preview
  • gemini-3.8-flash (এবং এর আগের gemini-3.7-flash, gemini-3.6-flash ও gemini-3.5-flash)
  • gemini-3.5-flash-lite (এবং পুরনো gemini-3.1-flash-lite)

সাধারণ-ব্যবহারের Gemini 2.5 মডেলগুলিতে এই কেপেবিলিটি কাজ করে, তবে সেগুলি সবকটিই বাতিল করা হয়েছে।

সমর্থিত ভাষাগুলি

Gemini মডেলের জন্য কাজ করে এমন ভাষা দেখুন।

Google Maps-এর মাধ্যমে মডেলকে গ্রাউন্ড করা

এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট কন্টেন্ট ও কোড দেখতে আপনার Gemini API প্রদানকারীর আইকনে ক্লিক করুন।

আপনি GenerativeModel ইনস্ট্যান্স তৈরি করার সময়, GoogleMaps-কে tool হিসেবে প্রদান করুন যা মডেলটি তার উত্তর তৈরি করতে ব্যবহার করতে পারে।

Swift


import FirebaseAILogic

// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Example: Coordinates for New York City
let latAndLong = CLLocationCoordinate2D(latitude: 40.7128, longitude: -74.0060)

// (Optional) Define a RetrievalConfig to configure the Grounding with Google Maps tool.
// You can optionally provide a location's coordinates and/or a language code
// for more relevant and personalized Google Maps results.
let retrievalConfig = RetrievalConfig(
    location: latAndLong,
    // Example: Language code for English (US).
    languageCode: "en-US"
)

// Wrap the RetrievalConfig inside a ToolConfig.
let toolConfig = ToolConfig(retrievalConfig: retrievalConfig)

// Create a `GenerativeModel` instance with a model that supports your use case.
let model = ai.generativeModel(
    modelName: "GEMINI_MODEL_NAME",
    // Provide Google Maps as a tool that the model can use to generate its response.
    tools: [Tool.googleMaps()],
    // Add the configuration for the Grounding with Google Maps tool
    // (if this optional config was defined above).
    toolConfig: toolConfig
)

let response = try await model.generateContent("restaurants near me?")
print(response.text ?? "No text in response.")

// Make sure to comply with the "Grounding with Google Maps" usage requirements,
// which includes how you meet service usage requirements

Kotlin


// (Optional) Define a RetrievalConfig to configure the Grounding with Google Maps tool.
// You can optionally provide a location's coordinates and/or a language code
// for more relevant and personalized Google Maps results.
val retrievalConfig = RetrievalConfig(
    // Example: Coordinates for New York City
    latLng = LatLng(latitude = 40.7128, longitude = -74.0060),
    // Example: Language code for English (US)
    languageCode = "en-US"
)

// Wrap the RetrievalConfig inside a ToolConfig.
val toolConfig = ToolConfig(
    retrievalConfig = retrievalConfig
)

// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
    modelName = "GEMINI_MODEL_NAME",
    // Add the configuration for the Grounding with Google Maps tool
    // (if this optional config was defined above).
    toolConfig = toolConfig,
    // Provide Google Maps as a tool that the model can use to generate its response.
    tools = listOf(Tool.googleMaps())
)

val response = model.generateContent("restaurants near me?")
print(response.text)

// Make sure to comply with the "Grounding with Google Maps" usage requirements,
// which includes how you meet service usage requirements

Java


// (Optional) Define a ToolConfig to configure the Grounding with Google Maps tool.
// You can optionally provide a location's coordinates and/or a language code
// for more relevant and personalized Google Maps results.
ToolConfig toolConfig = new ToolConfig(
    null,
    new RetrievalConfig(
        // Example: Coordinates for New York City.
        new LatLng(40.7128, -74.0060),
        // Example: Language code for English (US).
       "en-US"
    )
);

// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel("GEMINI_MODEL_NAME",
                        null,
                        null,
                        // Provide Google Maps as a tool that the model can use to generate its response.
                        List.of(Tool.googleMaps()),
                        // Add the configuration for the Grounding with Google Maps tool
                        // (if this optional config was defined above).
                        toolConfig);

// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs.
GenerativeModelFutures model = GenerativeModelFutures.from(ai);

ListenableFuture response = model.generateContent("restaurants near me?");
  Futures.addCallback(response, new FutureCallback() {
      @Override
      public void onSuccess(GenerateContentResponse result) {
          String resultText = result.getText();
          System.out.println(resultText);
      }

      @Override
      public void onFailure(Throwable t) {
          t.printStackTrace();
      }
  }, executor);

// Make sure to comply with the "Grounding with Google Maps" usage requirements,
// which includes how you meet service usage requirements

Web


import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";

// TODO(developer): Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);

// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// (Optional) Define a toolConfig to configure the Grounding with Google Maps tool.
// You can optionally provide a location's coordinates and/or a language code
// for more relevant and personalized Google Maps results.
const toolConfig = {
  retrievalConfig: {
    // Example: Coordinates for New York City
    latLng: {
      latitude: 40.7128,
      longitude: -74.0060
    },
    // Example: Language code for English (US)
    languageCode: 'en-US'
  }
};

// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(
  ai,
  {
    model: "GEMINI_MODEL_NAME",
    // Provide Google Maps as a tool that the model can use to generate its response.
    tools: [ { googleMaps: {} } ],
    // Add the configuration for the Grounding with Google Maps tool
    // (if this optional config was defined above).
    toolConfig
  }
);

const result = await model.generateContent("restaurants near me?");

console.log(result.response.text());

// Make sure to comply with the "Grounding with Google Maps" usage requirements,
// which includes how you meet service usage requirements

Dart


import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_ai/firebase_ai.dart';
import 'firebase_options.dart';

// Initialize FirebaseApp.
await Firebase.initializeApp(
  options: DefaultFirebaseOptions.currentPlatform,
);

// (Optional) Define a ToolConfig to configure the Grounding with Google Maps tool.
// You can optionally provide a location's coordinates and/or a language code
// for more relevant and personalized Google Maps results.
final toolConfig = ToolConfig(
  retrievalConfig: RetrievalConfig(
    // Example: Coordinates for New York City.
    latLng: LatLng(latitude: 40.712728, longitude: -74.006015),
    // Example: Language code for English (US).
    languageCode: 'en-US',
  ),
);

// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports your use case.
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_MODEL_NAME',
  // Provide Google Maps as a tool that the model can use to generate its response.
  tools: [
    Tool.googleMaps(),
  ],
  // Add the configuration for the Grounding with Google Maps tool
  // (if this optional config was defined above).
  toolConfig: toolConfig,
);

final response = await model.generateContent([Content.text("restaurants near me?")]);
print(response.text);

// Make sure to comply with the "Grounding with Google Maps" usage requirements,
// which includes how you meet service usage requirements

Unity


using Firebase;
using Firebase.AI;

// Initialize the Gemini Developer API backend service.
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());

// Example: Coordinates for New York City
var latLng = new LatLng(40.7128, -74.0060);

// (Optional) Define a RetrievalConfig to configure the Grounding with Google Maps tool.
// You can optionally provide a location's coordinates and/or a language code
// for more relevant and personalized Google Maps results.
var retrievalConfig = new RetrievalConfig(latLng, languageCode: "en");

// Wrap the RetrievalConfig inside a ToolConfig.
var toolConfig = new ToolConfig(retrievalConfig: retrievalConfig);

// Create a `GenerativeModel` instance with a model that supports your use case.
var model = ai.GetGenerativeModel(
  modelName: "GEMINI_MODEL_NAME",
  // Provide Google Maps as a tool that the model can use to generate its response.
  tools: new[] { new Tool(new GoogleMaps()) },
  // Add the configuration for the Grounding with Google Maps tool
  // (if this optional config was defined above).
  toolConfig: toolConfig
);

var response = await model.GenerateContentAsync("restaurants near me?");
UnityEngine.Debug.Log(response.Text ?? "No text in response.");

// Make sure to comply with the "Grounding with Google Maps" usage requirements,
// which includes how you meet service usage requirements

আপনার ব্যবহারিক ক্ষেত্র ও অ্যাপের জন্য উপযুক্ত মডেল কীভাবে বেছে নিতে হয় তা জানুন।

ফলাফল উন্নত করার জন্য পেশাদার পদ্ধতি ও পরামর্শ

এই বিভাগে, Google Maps-এর সাথে গ্রাউন্ডিং ব্যবহার করার জন্য কিছু সাধারণ পেশাদার পদ্ধতি এবং ফলাফল উন্নত করতে প্লেস প্রপার্টি-এর সুবিধা কীভাবে নিতে হয় তা বর্ণনা করা হয়েছে।

সাধারণ পেশাদার পদ্ধতি

  • প্রয়োজন হলেই শুধু টুল প্রদান করুন: পারফর্ম্যান্স ও খরচ অপ্টিমাইজ করতে, মডেলকে গ্রাউন্ডিং উইথ Google Maps টুলের অ্যাক্সেস শুধু তখনই দিন যখন ব্যবহারের ক্ষেত্রে স্পষ্ট ভৌগোলিক প্রসঙ্গ থাকে।

  • ব্যবহারকারীর লোকেশন প্রদান করা: সবচেয়ে প্রাসঙ্গিক ও পছন্দমতো উত্তরের জন্য (এবং ব্যবহারকারীর লোকেশন জানা থাকলে), গ্রাউন্ডিংয়ের সাথে Google Maps টুল কনফিগারেশনে ব্যবহারকারীর লোকেশন (latLng-এর মাধ্যমে অক্ষাংশ ও দ্রাঘিমাংশ ব্যবহার করে) যোগ করুন।

  • শেষ ব্যবহারকারীদের জানান: আপনার শেষ ব্যবহারকারীদের স্পষ্টভাবে জানান যে Google Maps ডেটা তাদের কোয়েরির উত্তর দেওয়ার জন্য ব্যবহার করা হচ্ছে। Google Maps থেকে সোর্স ব্যবহারকারীকে প্রদান করা হল Google Maps টুলের মাধ্যমে গ্রাউন্ডিংয়ের জন্য পরিষেবা ব্যবহারের প্রয়োজনীয়তা।

প্রম্পটে জায়গার প্রপার্টি ব্যবহার করা

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

জায়গার প্রপার্টির নমুনা

এই তালিকায়, জায়গার প্রপার্টির বর্ণানুক্রমিক স্যাম্পেল দেওয়া আছে যা আপনার মডেল উত্তর জেনারেট করতে ব্যবহার করতে পারে।

  • ঠিকানা
  • কার্বসাইড পিক-আপ
  • ডেবিট কার্ড
  • দূরত্ব
  • ফ্রি পার্কিং উপলভ্য
  • লাইভ মিউজিক
  • বাচ্চাদের জন্য মেনু
  • খোলা থাকার সময়
  • পেমেন্ট বিকল্প (যেমন ক্যাশ বা ক্রেডিট কার্ড)
  • জায়গা সম্পর্কিত উত্তর
  • পোষ্য প্রাণীদের জন্য উপযুক্ত
  • বিয়ার পরিবেশন করা হয়
  • নিরামিষ খাবার পরিবেশন করা হয়
  • হুইলচেয়ার ব্যবহার করা যায়
  • ওয়াই ফাই

জায়গা সম্পর্কিত উত্তর হল Google Maps-এর মাধ্যমে গ্রাউন্ডিং থেকে পাওয়া উত্তর যা ব্যবহারকারীর রিভিউ থেকে পাওয়া তথ্যের উপর ভিত্তি করে দেওয়া হয়।

জায়গার প্রপার্টি ব্যবহার করে এমন প্রম্পটের উদাহরণ

নিচের উদাহরণগুলিতে বিভিন্ন ধরনের জায়গার ব্যাপারে প্রম্পটে জায়গার প্রপার্টি ব্যবহার করা হয়েছে। Google Maps-এর সাথে গ্রাউন্ডিং আপনার উদ্দেশ্য বোঝার জন্য প্রপার্টি ব্যবহার করে এবং তারপর Google Maps-এ থাকা জায়গার সাথে যুক্ত ডেটার ভিত্তিতে প্রাসঙ্গিক উত্তর দেয়।

  • পরিবারের সাথে ডিনারের পরিকল্পনা করা: কোনও রেস্তোরাঁ পরিবারের জন্য উপযুক্ত কিনা এবং রেস্তোরাঁটি সুবিধাজনক পরিষেবা প্রদান করে কিনা তা নির্ধারণ করুন।

    • প্রম্পটের উদাহরণ: "The Italian Place" কি বাচ্চাদের জন্য ভাল এবং তারা কি টেক-আউট অফার করে? তাদের রেটিং কত?
  • বন্ধুর জন্য অ্যাক্সেসিবিলিটি চেক করা: লোকেশনটি নির্দিষ্ট অ্যাক্সেসিবিলিটি সংক্রান্ত প্রয়োজনীয়তা পূরণ করে কিনা তা নির্ধারণ করুন।

    • প্রম্পটের উদাহরণ: আমার এমন একটি রেস্তোরাঁ প্রয়োজন যেখানে হুইলচেয়ার নিয়ে ঢোকার মতো প্রবেশপথ আছে।
  • দেরাতে খাওয়ার জন্য কোনও জায়গা খোঁজা: নির্দিষ্ট সময়ে নির্দিষ্ট খাবার পরিবেশন করে এমন খোলা দোকান খুঁজুন।

    • প্রম্পটের উদাহরণ: "Burger Joint" কি এখন খোলা আছে? তারা কি ডিনার পরিবেশন করে? শুক্রবার তারা কখন খোলা থাকে?
  • কফি খাওয়ার জন্য ক্লায়েন্টের সাথে দেখা করা: সুযোগ-সুবিধা, অফার ও পেমেন্ট বিকল্পের উপর ভিত্তি করে ব্যবসায়িক মিটিংয়ের জন্য কোনও ক্যাফে উপযুক্ত কিনা তা মূল্যায়ন করুন।

    • প্রম্পটের উদাহরণ: "ক্যাফে সেন্ট্রাল"-এ কি ওয়াই-ফাই আছে? এখানে কি কফি পরিবেশন করা হয়? সেটির দামের লেভেল কত এবং সেখানে কি ক্রেডিট কার্ডে পেমেন্ট করা যায়?

মনে রাখবেন, Google Maps গ্রাউন্ডেড রেজাল্টে দেখানো তথ্য রাস্তার প্রকৃত অবস্থার থেকে আলাদা হতে পারে।

Google Maps-এর মাধ্যমে গ্রাউন্ডিং কীভাবে কাজ করে

আপনি মডেলকে GoogleMaps টুল প্রদান করলে, মডেলটি অটোমেটিক তথ্য খোঁজা, প্রসেস করা এবং উদ্ধৃত করার সম্পূর্ণ ওয়ার্কফ্লো ম্যানেজ করে।

মডেলের ওয়ার্কফ্লো এখানে দেওয়া হল:

  1. প্রম্পট পায়: আপনার অ্যাপ, চালু করা GoogleMaps টুল সহ Gemini মডেলে একটি প্রম্পট পাঠায়।

  2. প্রম্পট বিশ্লেষণ করে: মডেলটি প্রম্পট বিশ্লেষণ করে এবং নির্ধারণ করে যে Google Maps এটির উত্তর উন্নত করতে পারে কিনা, যেমন, প্রম্পটে ভৌগোলিক প্রসঙ্গ থাকলে (যেমন, "আমার কাছাকাছি কফি শপ", "সান ফ্রান্সিসকোর মিউজিয়াম")।

  3. টুলকে ইনভোক করে: মডেলটি ভৌগোলিক ইনটেন্ট শনাক্ত করে, Google Maps টুলের মাধ্যমে গ্রাউন্ডিং ইনভোক করে।

  4. Google Maps-এ কোয়েরি পাঠায়Google Maps: প্রাসঙ্গিক তথ্যের জন্য Google Maps পরিষেবা কোয়েরির Google Maps সাথে গ্রাউন্ডিং (যেমন, জায়গা, রিভিউ, ফটো, ঠিকানা, খোলা ও বন্ধ থাকার সময়)।

    আরও প্রাসঙ্গিক ও পছন্দমতো Google Maps ফলাফল পেতে, আপনি ঐচ্ছিকভাবে টুলের কনফিগে (বা এমনকি সরাসরি প্রম্পটে) অক্ষাংশ ও দ্রাঘিমাংশ যোগ করতে পারেন। টুলটি হল একটি টেক্সচুয়াল সার্চ টুল এবং এটি Google Maps-এ সার্চ করার মতোই কাজ করে। অর্থাৎ, লোকাল কোয়েরি ("আমার কাছাকাছি") কোঅর্ডিনেট ব্যবহার করবে, তবে নির্দিষ্ট বা নন-লোকাল কোয়েরিগুলি স্পষ্ট লোকেশন দ্বারা প্রভাবিত হওয়ার সম্ভাবনা কম।

  5. Google Maps ফলাফল প্রসেস করে: মডেলটি Google Maps ফলাফল প্রসেস করে এবং মূল প্রম্পটের উত্তর তৈরি করে।

  6. Google Maps গ্রাউন্ডেড ফলাফল প্রদান করে: মডেলটি একটি চূড়ান্ত, ব্যবহারকারী-বান্ধব উত্তর প্রদান করে যা Google Maps ফলাফলের উপর ভিত্তি করে তৈরি করা হয়। এই উত্তরে এগুলি অন্তর্ভুক্ত:

    • মডেলের টেক্সট উত্তর।
    • Google Maps ফলাফল ও সোর্স সহ groundingMetadata অবজেক্ট।

মনে রাখবেন, মডেলকে টুল হিসেবে Google Maps প্রদান করার অর্থ এই নয় যে মডেলকে উত্তর তৈরি করার জন্য সবসময় Google Maps টুল ব্যবহার করতে হবে। এইসব ক্ষেত্রে, উত্তরে কোনও groundingMetadata অবজেক্ট থাকে না এবং তাই এটি Google Maps গ্রাউন্ডেড রেজাল্ট নয়।

গ্রাউন্ডেড ফলাফল বোঝা

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

Google Maps গ্রাউন্ডেড রেজাল্টে থাকা groundingMetadata অবজেক্টে নিম্নলিখিত তথ্য থাকে:

  • groundingChunks: maps সোর্স (uri, placeId ও title) সহ অবজেক্টের একটি অ্যারে।
  • groundingSupports: মডেলের উত্তরের সাথে কানেক্ট করার জন্য চঙ্কের একটি অ্যারে text যা groundingChunks-এ সোর্সের সাথে কানেক্ট করে। প্রতিটি চ্যাঙ্ক একটি টেক্সট segment (startIndex ও endIndex দ্বারা সংজ্ঞায়িত) এক বা একাধিক groundingChunkIndices-এর সাথে লিঙ্ক করে। এই ফিল্ড আপনাকে ইনলাইন সোর্স লিঙ্ক তৈরি করতে সাহায্য করে। এই পৃষ্ঠায় পরে পরিষেবা ব্যবহারের প্রয়োজনীয়তা পূরণ করা সম্পর্কে জানুন।

groundingMetadata অবজেক্ট সহ উত্তরের একটি উদাহরণ এখানে দেওয়া হল:

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "CanteenM is an American restaurant with..."
          }
        ],
        "role": "model"
      },
      "groundingMetadata": {
        "groundingChunks": [
          {
            "maps": {
              "uri": "https://maps.google.com/?cid=13100894621228039586",
              "title": "Heaven on 7th Marketplace",
              "placeId": "places/ChIJ0-zA1vBZwokRon0fGj-6z7U"
            }
          }
        ],
        "groundingSupports": [
          {
            "segment": {
              "startIndex": 0,
              "endIndex": 79,
              "text": "CanteenM is an American restaurant with a 4.6-star rating and is open 24 hours."
            },
            "groundingChunkIndices": [0]
          }
        ]
      }
    }
  ]
}

পরিষেবা ব্যবহারের প্রয়োজনীয়তা

এই বিভাগে আপনার বেছে নেওয়া Gemini API প্রোভাইডারের জন্য Google Maps গ্রাউন্ডিংয়ের ক্ষেত্রে পরিষেবা ব্যবহারের প্রয়োজনীয়তা বর্ণনা করা হয়েছে: Gemini Developer API অথবা Agent Platform Gemini API (formerly Vertex AI) (পরিষেবা-নির্দিষ্ট শর্তাবলীর মধ্যে পরিষেবার শর্তাবলী বিভাগ দেখুন)।

Google Maps সোর্স সম্পর্কে ব্যবহারকারীদের জানানো

প্রতিটি Google Maps গ্রাউন্ডেড ফলাফলের সাথে, আপনি প্রতিটি উত্তরের সমর্থনে groundingChunks সোর্স পাবেন। এছাড়াও, নিম্নলিখিত মেটাডেটা ফেরানো হয়:

  • সোর্স URI
  • শিরোনাম
  • আইডি

আপনার অ্যাপে, Google Maps-এর মাধ্যমে গ্রাউন্ডিং থেকে ফলাফল দেখানোর সময়, আপনাকে অবশ্যই সংশ্লিষ্ট Google Maps সোর্স উল্লেখ করতে হবে এবং আপনার ব্যবহারকারীদের নিচে উল্লেখ করা বিষয়গুলি সম্পর্কে জানাতে হবে:

  • Google Maps সোর্সকে অবশ্যই সোর্স দ্বারা সমর্থিত জেনারেট করা কন্টেন্টের ঠিক পরেই রাখতে হবে। এই জেনারেট করা কন্টেন্টকে Google Maps গ্রাউন্ডেড ফলাফল হিসেবেও উল্লেখ করা হয়।

  • Google Maps সোর্স অবশ্যই একটি ব্যবহারকারীর ইন্টার‍্যাকশনের মধ্যে দৃশ্যমান হতে হবে।

Google Maps গ্রাউন্ডেড ফলাফল থেকে সোর্স দেখানোর জন্য কীভাবে ভ্যালু পাবেন তা এখানে দেওয়া হল:

Swift

// ...

// Get the model's response
let text = response.text

// Get the grounding metadata
if let candidate = response.candidates.first,
   let groundingMetadata = candidate.groundingMetadata {

  // Get sources
  let groundingChunks = groundingMetadata.groundingChunks
  for chunk in groundingChunks {
    if let maps = chunk.maps {
      let title = maps.title  // for example, "Heaven on 7th Marketplace"
      let url = maps.url  // for example, "https://maps.google.com/?cid=13100894621228039586"
      let placeId = maps.placeId  // for example, "places/ChIJ0-zA1vBZwokRon0fGj-6z7U"
      // TODO(developer): show source in the UI
    }
  }
}

Kotlin

// ...

// Get the model's response
val text = response.text

// Get the grounding metadata
val groundingMetadata = response.candidates.firstOrNull()?.groundingMetadata

// Get sources
val groundingChunks = groundingMetadata?.groundingChunks
groundingChunks?.let { chunks ->
  for (chunk in chunks) {
    val title = chunk.maps?.title  // for example, "Heaven on 7th Marketplace"
    val uri = chunk.maps?.uri  // for example, "https://maps.google.com/?cid=13100894621228039586"
    val placeId = chunk.maps?.placeId  // for example, "places/ChIJ0-zA1vBZwokRon0fGj-6z7U"
    // TODO(developer): show source in the UI
  }
}

Java

// ...

Futures.addCallback(response, new FutureCallback() {
  @Override
  public void onSuccess(GenerateContentResponse result) {
    // Get the model's response
    String text = result.getText();

    // Get the grounding metadata
    GroundingMetadata groundingMetadata =
        result.getCandidates()[0].getGroundingMetadata();

    if (groundingMetadata != null) {
      // Get sources
      List chunks = groundingMetadata.getGroundingChunks();
      if (chunks != null) {
        for(GroundingChunk chunk : chunks) {
          GoogleMapsGroundingChunk maps = chunk.getMaps();
          if (maps != null) {
            String title = maps.getTitle();  // for example, "Heaven on 7th Marketplace"
            String uri = maps.getUri();  // for example, "https://maps.google.com/?cid=13100894621228039586"
            String placeId = maps.getPlaceId();  // for example, "places/ChIJ0-zA1vBZwokRon0fGj-6z7U"
            // TODO(developer): show sources in the UI
          }
        }
      }
    }
  }

  @Override
  public void onFailure(Throwable t) {
    t.printStackTrace();
  }
}, executor);

Web

// ...

// Get the model's text response
const text = result.response.text();

// Get the grounding metadata
const groundingMetadata = result.response.candidates?.[0]?.groundingMetadata;

// Get sources
const groundingChunks = groundingMetadata?.groundingChunks;
if (groundingChunks) {
  for (const chunk of groundingChunks) {
    const title = chunk.maps?.title;  // for example, "Heaven on 7th Marketplace"
    const uri = chunk.maps?.uri;  // for example, "https://maps.google.com/?cid=13100894621228039586"
    const placeId = chunk.maps?.placeId;  // for example, "places/ChIJ0-zA1vBZwokRon0fGj-6z7U"
    // TODO(developer): show sources in the UI
  }
}

Dart

// ...

// Get the model's response
final text = response.text;

// Get the grounding metadata
final groundingMetadata = response.candidates.first.groundingMetadata;

// Get sources
final groundingChunks = groundingMetadata?.groundingChunks;
if (groundingChunks != null) {
  for (var chunk in groundingChunks) {
    final title = chunk.maps?.title;  // for example, "Heaven on 7th Marketplace"
    final uri = chunk.maps?.uri;  // for example, "https://maps.google.com/?cid=13100894621228039586"
    final placeId = chunk.maps?.placeId;  // for example, "places/ChIJ0-zA1vBZwokRon0fGj-6z7U"
    // TODO(developer): show sources in the UI
  }
}

Unity

// ...

// Get the model's response.
var text = response.Text;

// Get the grounding metadata.
var groundingMetadata = response.Candidates.First().GroundingMetadata;

// Get sources.
if (groundingMetadata != null) {
  foreach(GroundingChunk chunk in groundingMetadata?.GroundingChunks) {
    if (chunk.Maps != null) {
      var title = chunk.Maps?.Title;  // for example, "Heaven on 7th Marketplace"
      var uri = chunk.Maps?.Uri;  // for example, "https://maps.google.com/?cid=13100894621228039586"
      var placeId = chunk.Maps?.PlaceId;  // for example, "places/ChIJ0-zA1vBZwokRon0fGj-6z7U"
      // TODO(developer): show sources in the UI
    }
  }
}

groundingChunks-এর প্রতিটি সোর্সের জন্য, এইসব প্রয়োজনীয়তা মেনে একটি লিঙ্ক প্রিভিউ তৈরি করতে হবে:

  • Google Maps নিম্নলিখিত Google Maps টেক্সট অ্যাট্রিবিউশন নির্দেশিকা মেনে প্রতিটি সোর্সকে অ্যাট্রিবিউট করুন।
  • উত্তরে প্রদান করা সোর্সের শিরোনাম ডিসপ্লে করো।
  • উত্তরে দেওয়া uri ব্যবহার করে সোর্সে লিঙ্ক করুন।

উত্তরের সাথে সোর্স দেখানো প্রম্পট

আপনি সোর্সের ভিউ আড়াল করতে পারবেন।

উত্তর ও সোর্স সহ প্রম্পট আড়াল করা হয়েছে

বিকল্প হিসেবে, আপনি অতিরিক্ত কন্টেন্ট সহ লিঙ্ক প্রিভিউ উন্নত করতে পারেন, যেমন:

  • Google Maps টেক্সট অ্যাট্রিবিউশনের আগে Google Maps ফেভিকন যোগ করা হয়েছে।
  • সোর্স URL (og:image) থেকে নেওয়া একটি ফটো।

Google Maps ডেটা প্রদানকারী ও তাদের লাইসেন্স সংক্রান্ত শর্তাবলী সম্পর্কে আরও জানতে, Google Maps ও Google Earth-এর আইনি বিজ্ঞপ্তি দেখুন।

Google Maps টেক্সট অ্যাট্রিবিউশন নির্দেশিকা

Google Maps টেক্সটের মধ্যে সোর্স অ্যাট্রিবিউট করার সময়, এইসব নির্দেশিকা মেনে চলুন:

  • Google Maps টেক্সটটি কোনওভাবেই পরিবর্তন করবেন না:

    • টেক্সটের ক্যাপিটালাইজেশন পরিবর্তন করবেন না Google Maps।
    • টেক্সট Google Maps একাধিক লাইনে র‍্যাপ করবেন না।
    • Google Maps টেক্সটটি অন্য ভাষায় লোকালাইজ করবেন না।
    • ব্রাউজারকে Google Maps টেক্সট অনুবাদ করা থেকে আটকাতে HTML অ্যাট্রিবিউট translate="no" ব্যবহার করুন।
  • নিচের সারণীতে যেভাবে বর্ণনা করা হয়েছে সেইভাবে Google Maps টেক্সট স্টাইল করুন:

    প্রপার্টি স্টাইল
    ফন্ট ফ্যামিলি Roboto. ফন্ট লোড করা ঐচ্ছিক।
    ফলব্যাক ফন্ট ফ্যামিলি আপনার প্রোডাক্টে আগে থেকেই ব্যবহার করা হয়েছে এমন যেকোনও Sans Serif বডি ফন্ট অথবা ডিফল্ট সিস্টেম ফন্ট ইনভোক করতে "Sans-Serif"
    ফন্ট স্টাইল সাধারণ
    ফন্টের ওজন 400
    ফন্টের রঙ সাদা, কালো (#1F1F1F) বা ধূসর (#5E5E5E)। ব্যাকগ্রাউন্ডের সাথে অ্যাক্সেসযোগ্য (৪.৫:১) কনট্রাস্ট বজায় রাখুন।
    হরফের মাপ ন্যূনতম ফন্ট সাইজ: ১২sp
    সর্বাধিক ফন্ট সাইজ: ১৬sp
    sp সম্পর্কে জানতে, Material Design ওয়েবসাইটে ফন্ট সাইজ ইউনিট দেখুন।
    ব্যবধান সাধারণ

CSS-এর উদাহরণ

নিচের CSS, সাদা বা হালকা ব্যাকগ্রাউন্ডে উপযুক্ত টাইপোগ্রাফিক স্টাইল ও রঙ সহ টেক্সট Google Maps রেন্ডার করে।

@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');

.GMP-attribution {
  font-family: Roboto, Sans-Serif;
  font-style: normal;
  font-weight: 400;
  font-size: 1rem;
  letter-spacing: normal;
  white-space: nowrap;
  color: #5e5e5e;
}

প্লেস আইডির ক্যাশিং

Google Maps গ্রাউন্ডেড ফলাফলে কোনও জায়গার আইডি থাকতে পারে। আপনি নিম্নলিখিত উত্তর সংক্রান্ত ডেটা ক্যাশে, স্টোর ও এক্সপোর্ট করতে পারবেন:

  • placeId

Grounding with Google Maps-এর শর্তাবলীতে ক্যাশিং সংক্রান্ত বিধিনিষেধ এই ডেটার ক্ষেত্রে প্রযোজ্য নয়।

নিষিদ্ধ অ্যাক্টিভিটি ও অঞ্চল

নিরাপদ ও নির্ভরযোগ্য প্ল্যাটফর্ম বজায় রাখতে, Google Maps-এর গ্রাউন্ডিংয়ে নির্দিষ্ট কন্টেন্ট ও অ্যাক্টিভিটির ক্ষেত্রে অতিরিক্ত বিধিনিষেধ আছে। আপনার বেছে নেওয়া Gemini API প্রদানকারীর শর্তাবলীতে ব্যবহারের বিধিনিষেধ ছাড়াও: Gemini Developer API অথবা Agent Platform Gemini API (formerly Vertex AI) (পরিষেবা-নির্দিষ্ট শর্তাবলীর মধ্যে পরিষেবার শর্তাবলী বিভাগ দেখুন)।

  • আপনি জরুরি পরিষেবা সহ Google Maps-এর সাথে গ্রাউন্ডিং ব্যবহার করবেন না উচ্চ ঝুঁকিযুক্ত অ্যাক্টিভিটির জন্য।

  • আপনি নিষিদ্ধ অঞ্চলে Google Maps-এর সাথে গ্রাউন্ডিং অফার করে এমন অ্যাপ্লিকেশন ডিস্ট্রিবিউট বা মার্কেটিং করবেন না। আরও তথ্যের জন্য, Google Maps Platform-এর নিষিদ্ধ অঞ্চল দেখুন। নিষিদ্ধ অঞ্চলের তালিকা মাঝে মাঝে আপডেট করা হতে পারে।

Firebase কনসোলে গ্রাউন্ডেড ফলাফল ও AI মনিটরিং

আপনি যদি Firebase কনসোলে AI মনিটরিং চালু করে থাকেন, তাহলে উত্তরগুলি Cloud Logging-এ সেভ করা হয়। সাধারণত, এই ডেটা ৩০ দিন পর্যন্ত সেভ করে রাখা হয়।

আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে এবং আপনার বেছে নেওয়া Gemini APIপ্রোভাইডারের জন্য যেকোনও অতিরিক্ত সম্মতি সংক্রান্ত প্রয়োজনীয়তার সাথে এই ডেটা ধরে রাখার সময়সীমা বা আপনার সেট করা যেকোনও কাস্টম সময়সীমা যে সম্পূর্ণভাবে সামঞ্জস্যপূর্ণ, তা নিশ্চিত করার দায়িত্ব আপনার: Gemini Developer API অথবা Agent Platform Gemini API (formerly Vertex AI) (পরিষেবা-নির্দিষ্ট শর্তাবলীর মধ্যে পরিষেবার শর্তাবলী বিভাগ দেখুন)। এইসব প্রয়োজনীয়তা পূরণ করতে আপনাকে Cloud Logging-এ ডেটা কতদিন রাখা হবে তা অ্যাডজাস্ট করতে হতে পারে।

মূল্য ও রেট সীমা

Google Maps-এর মাধ্যমে গ্রাউন্ডিং কোয়েরির উপর ভিত্তি করে মূল্য নির্ধারণ করা হয়। কোনও প্রম্পট সফলভাবে অন্তত একটি Google Maps গ্রাউন্ডেড ফলাফল (অর্থাৎ, উত্তরে অন্তত একটি Google Maps সোর্স আছে) রিটার্ন করলে, তবেই কোনও অনুরোধকে Google Maps কোটার মধ্যে গণনা করা হয়। একটি অনুরোধ থেকে Google Maps-এ একাধিক কোয়েরি পাঠানো হলে, তা রেট লিমিটের ক্ষেত্রে একটি অনুরোধ হিসেবে গণনা করা হয়।

আপনার বেছে নেওয়া Gemini API প্রদানকারীর ডকুমেন্টে Google Maps-এর সাথে গ্রাউন্ডিংয়ের দাম, মডেলের উপলভ্যতা ও সীমা সংক্রান্ত বিবরণ পর্যালোচনা করতে ভুলবেন না: Gemini Developer API | Agent Platform Gemini API (formerly Vertex AI).