Google Maps की मदद से ग्राउंडिंग करना

Google Maps के साथ ग्राउंडिंग करने से, Google Maps मॉडल को Google Maps से मिले जियोस्पेशल डेटा से कनेक्ट किया जाता है. इससे, अपने ऐप्लिकेशन में जगह की जानकारी के हिसाब से काम करने वाली सुविधाएं बनाई जा सकती हैं.Gemini

Google Maps के साथ ग्राउंडिंग करने से ये फ़ायदे मिलते हैं:

  • जवाबों में तथ्यों को ज़्यादा सटीक बनाएं: Google के डेटाबेस में मौजूद, असल दुनिया की 25 करोड़ से ज़्यादा जगहों और कारोबारों के डेटा के आधार पर जवाब दें. इससे मॉडल के भ्रमित होने की संभावना कम हो जाती है.
  • रीयल-टाइम में जानकारी ऐक्सेस करना: लाइव डेटा का इस्तेमाल करके सवालों के जवाब देना. जैसे, कारोबार के खुले होने का मौजूदा समय और ईवी चार्जिंग स्टेशन की रीयल-टाइम स्थिति.
  • विज़ुअल कॉन्टेक्स्ट उपलब्ध कराएं: मॉडल के लोकेशन के आधार पर किए गए दावों के साथ-साथ, इंटरैक्टिव मैप विजेट, फ़ोटो, और Street View को सीधे तौर पर इंटिग्रेट करके, उपयोगकर्ता का भरोसा जीतें.

इन मॉडल के साथ काम करता है

  • gemini-3.1-pro-preview
  • gemini-3.5-flash
  • gemini-3.1-flash-lite
  • gemini-2.5-pro
  • gemini-2.5-flash
  • gemini-2.5-flash-lite

यह सुविधा इन भाषाओं में काम करती है

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.
    // (Optional) Set `enableWidget` to control whether the response contains a `googleMapsWidgetContextToken`.
    tools: [ { googleMaps: { enableWidget: true } } ],
    // 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',
  ),
);

// 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 कॉन्टेक्स्ट के हिसाब से विजेट रेंडर करें: कॉन्टेक्स्ट के हिसाब से विजेट को कॉन्टेक्स्ट टोकन, googleMapsWidgetContextToken का इस्तेमाल करके रेंडर किया जाता है. यह Gemini API रिस्पॉन्स में दिखता है और इसका इस्तेमाल Google Maps से विज़ुअल कॉन्टेंट रेंडर करने के लिए किया जा सकता है. कॉन्टेक्स्ट के हिसाब से विजेट के बारे में ज़्यादा जानने के लिए, Google Maps के दस्तावेज़ में Google Maps विजेट के साथ ग्राउंडिंग देखें.

प्रॉम्प्ट में जगह की प्रॉपर्टी इस्तेमाल करना

इस सेक्शन में, जगह की प्रॉपर्टी की सूची दी गई है. इनका इस्तेमाल जगहों के बारे में जानकारी देने के लिए किया जाता है. साथ ही, Google Maps के साथ ग्राउंडिंग की सुविधा इनका इस्तेमाल जवाब जनरेट करने के लिए करती है. इन प्रॉपर्टी का इस्तेमाल यह तय करने के लिए किया जाता है कि Google Maps के साथ ग्राउंडिंग करके किस तरह के सवालों के जवाब दिए जा सकते हैं.

जगह की प्रॉपर्टी के उदाहरण

इस सूची में, जगहों के बारे में प्रॉपर्टी की वर्णमाला के क्रम में सैंपलिंग दी गई है. इनका इस्तेमाल, आपका मॉडल जवाब जनरेट करने के लिए कर सकता है.

  • पता
  • कर्बसाइड पिक अप
  • डेबिट कार्ड
  • दूरी
  • मुफ़्त पार्किंग की सुविधा उपलब्ध है
  • लाइव संगीत
  • बच्चों के लिए मेन्यू
  • खुलने का समय
  • पेमेंट के विकल्प (जैसे, नकद या क्रेडिट कार्ड)
  • जगह के बारे में जवाब
  • पालतू जानवर लाए जा सकते हैं
  • बीयर उपलब्ध
  • यहां शाकाहारी खाना मिलता है
  • व्हीलचेयर की सुविधा है
  • वाई-फ़ाई

जगह के बारे में जवाब, Google Maps के साथ ग्राउंडिंग से मिलने वाला जवाब है. यह जवाब, उपयोगकर्ता की समीक्षाओं से मिली जानकारी के आधार पर दिया जाता है.

जगह की प्रॉपर्टी का इस्तेमाल करने वाले प्रॉम्प्ट के उदाहरण

यहां दिए गए उदाहरणों में, अलग-अलग तरह की जगहों के बारे में प्रॉम्प्ट में जगह की प्रॉपर्टी का इस्तेमाल किया गया है. Google Maps के साथ ग्राउंडिंग करने के लिए, प्रॉपर्टी का इस्तेमाल किया जाता है. इससे Google Maps को आपके इरादे को समझने में मदद मिलती है. इसके बाद, Google Maps में मौजूद जगहों से जुड़े डेटा के आधार पर, आपको काम के जवाब मिलते हैं.

  • परिवार के साथ डिनर का प्लान बनाना: यह पता लगाना कि कोई रेस्टोरेंट परिवार के लिए सही है या नहीं. साथ ही, यह भी पता लगाना कि रेस्टोरेंट में अच्छी सुविधाएं उपलब्ध हैं या नहीं.

    • प्रॉम्प्ट का उदाहरण: क्या "द इटैलियन प्लेस" बच्चों के लिए अच्छा है और क्या वे खाना पैक करके ले जाने की सुविधा देते हैं? इसकी रेटिंग क्या है?
  • दोस्त के लिए ऐक्सेसिबिलिटी की जांच करना: पता लगाएं कि जगह पर ऐक्सेसिबिलिटी से जुड़ी खास ज़रूरतें पूरी होती हैं या नहीं.

    • प्रॉम्प्ट का उदाहरण: मुझे ऐसा रेस्टोरेंट चाहिए जहां व्हिलचेयर से आने-जाने की सुविधा हो.
  • देर रात खाने के लिए कोई जगह ढूंढना: कोई ऐसी जगह ढूंढें जो खुली हो और किसी खास समय पर कोई खास खाना परोसती हो.

    • उदाहरण के लिए प्रॉम्प्ट: क्या "बर्गर जॉइंट" अभी खुला है? क्या वहां डिनर परोसा जाता है? शुक्रवार को कारोबार के खुले होने का समय क्या है?
  • किसी क्लाइंट से कॉफ़ी पर मीटिंग करना: सुविधाओं, ऑफ़र, और पेमेंट के विकल्पों के आधार पर यह आकलन करें कि कोई कैफ़े, बिज़नेस मीटिंग के लिए सही है या नहीं.

    • प्रॉम्प्ट का उदाहरण: क्या "कैफ़े सेंट्रल" में वाई-फ़ाई की सुविधा है? क्या यहां कॉफ़ी मिलती है? उनका प्राइस लेवल क्या है और क्या वे क्रेडिट कार्ड स्वीकार करते हैं?

ध्यान दें कि Google Maps भरोसेमंद स्रोतों से मिली जानकारी में दी गई जानकारी, सड़क की असल स्थितियों से अलग हो सकती है.

Google Maps से जानकारी लेने की सुविधा कैसे काम करती है

मॉडल को GoogleMaps टूल का ऐक्सेस देने पर, वह जानकारी खोजने, उसे प्रोसेस करने, और उसका हवाला देने का पूरा वर्कफ़्लो अपने-आप मैनेज करता है.

यहां मॉडल का वर्कफ़्लो दिया गया है:

  1. प्रॉम्प्ट मिलता है: आपका ऐप्लिकेशन, Gemini मॉडल को GoogleMaps टूल चालू करके एक प्रॉम्प्ट भेजता है.

  2. प्रॉम्प्ट का विश्लेषण करता है: मॉडल, प्रॉम्प्ट का विश्लेषण करता है और यह तय करता है कि क्या Google Maps अपने जवाब को बेहतर बना सकता है. उदाहरण के लिए, अगर प्रॉम्प्ट में भौगोलिक कॉन्टेक्स्ट शामिल है (जैसे, "मेरे आस-पास की कॉफ़ी शॉप", "सैन फ़्रांसिस्को के संग्रहालय").

  3. टूल को चालू करता है: मॉडल, भौगोलिक जानकारी के आधार पर क्वेरी के मकसद को समझता है. इसके बाद, Google Maps टूल की मदद से, जवाब में भरोसेमंद सोर्स से जानकारी शामिल करता है.

  4. Google Maps को क्वेरी भेजता है: Google Maps के साथ भरोसेमंद स्रोतों से जानकारी लेने की सुविधा वाली सेवा, Google Maps से काम की जानकारी के लिए क्वेरी करती है. उदाहरण के लिए, जगहें, समीक्षाएं, फ़ोटो, पते, और कारोबार के खुले होने का समय.

    ज़्यादा काम के और आपकी पसंद के मुताबिक Google Maps नतीजे पाने के लिए, टूल के कॉन्फ़िगरेशन में अक्षांश और देशांतर शामिल किए जा सकते हैं. इसके अलावा, इन्हें सीधे तौर पर प्रॉम्प्ट में भी शामिल किया जा सकता है. यह टूल, टेक्स्ट खोजने वाला टूल है. यह Google Maps पर खोजने की सुविधा की तरह ही काम करता है. जैसे, स्थानीय क्वेरी ("मेरे आस-पास") के लिए निर्देशांकों का इस्तेमाल किया जाएगा. वहीं, खास या गैर-स्थानीय क्वेरी पर, जगह की जानकारी का असर नहीं पड़ेगा.

  5. Google Maps के नतीजों को प्रोसेस करता है: मॉडल, Google Maps के नतीजों को प्रोसेस करता है और ओरिजनल प्रॉम्प्ट के लिए जवाब तैयार करता है.

  6. Google Maps भरोसेमंद नतीजे दिखाता है: मॉडल, उपयोगकर्ता के लिए फ़ायदेमंद और सटीक जवाब देता है. यह जवाब, Google Maps के नतीजों पर आधारित होता है. इस जवाब में ये चीज़ें शामिल होती हैं:

    • मॉडल का टेक्स्ट वाला जवाब.
    • Google Maps नतीजों और सोर्स वाला groundingMetadata ऑब्जेक्ट.
    • (सिर्फ़ वेब SDK टूल के लिए) यह googleMapsWidgetContextToken, वैकल्पिक तौर पर उपलब्ध होता है. इसकी मदद से, अपने ऐप्लिकेशन में कॉन्टेक्स्ट के हिसाब से Google Maps विजेट रेंडर किया जा सकता है, ताकि विज़ुअल इंटरैक्शन किया जा सके. कॉन्टेक्स्ट के हिसाब से काम करने वाले विजेट के बारे में ज़्यादा जानने के लिए, Google Maps के दस्तावेज़ में Google Maps विजेट की मदद से जवाब जनरेट करना लेख पढ़ें.

ध्यान दें कि मॉडल को 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 से लिंक करता है. इस फ़ील्ड की मदद से, सोर्स के इनलाइन लिंक बनाए जा सकते हैं. इस पेज पर, सेवा के इस्तेमाल से जुड़ी ज़रूरी शर्तों को पूरा करने का तरीका जानें.
  • (सिर्फ़ वेब एसडीके के लिए) googleMapsWidgetContextToken: यह एक टेक्स्ट टोकन है. इसका इस्तेमाल, संदर्भ के हिसाब से जगहों की जानकारी देने वाले विजेट को रेंडर करने के लिए किया जा सकता है. यह फ़ील्ड सिर्फ़ तब दिखता है, जब Web SDK का इस्तेमाल किया जा रहा हो और आपने enableWidget पैरामीटर को true पर सेट किया हो.

यहां जवाब का एक उदाहरण दिया गया है, जिसमें 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]
          }
        ],
        "googleMapsWidgetContextToken": "widgetcontent/..."
      }
    }
  ]
}

सेवा के इस्तेमाल से जुड़ी ज़रूरी शर्तें

इस सेक्शन में, चुने गए Gemini API प्रोवाइडर के लिए, Google Maps के साथ ग्राउंडिंग की सुविधा इस्तेमाल करने की ज़रूरी शर्तों के बारे में बताया गया है: Gemini Developer API या Vertex AI Gemini API (सेवा की खास शर्तों में मौजूद सेवा की शर्तें सेक्शन देखें).

उपयोगकर्ताओं को Google Maps सोर्स के बारे में जानकारी देना

हर Google Maps भरोसेमंद नतीजे के साथ, आपको groundingChunks में ऐसे सोर्स मिलेंगे जो हर जवाब की पुष्टि करते हैं. साथ ही, यह मेटाडेटा भी मिलता है:

  • सोर्स यूआरआई
  • शीर्षक
  • आईडी

अपने ऐप्लिकेशन में, 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 फ़ेविकॉन.
  • सोर्स यूआरएल (og:image) से ली गई फ़ोटो.

Google Maps डेटा उपलब्ध कराने वाली कुछ कंपनियों और उनके लाइसेंस की शर्तों के बारे में ज़्यादा जानने के लिए, Google Maps और Google Earth की कानूनी सूचनाएं देखें.

Google Maps टेक्स्ट एट्रिब्यूशन से जुड़े दिशा-निर्देश

टेक्स्ट में Google Maps को सोर्स के तौर पर एट्रिब्यूट करते समय, इन दिशा-निर्देशों का पालन करें:

  • टेक्स्ट Google Maps में किसी भी तरह का बदलाव न करें:

    • टेक्स्ट Google Maps के कैपिटलाइज़ेशन में बदलाव न करें.
    • टेक्स्ट Google Maps को कई लाइनों में रैप न करें.
    • टेक्स्ट Google Maps का अनुवाद किसी दूसरी भाषा में न करें.
    • ब्राउज़र को Google Maps टेक्स्ट का अनुवाद करने से रोकने के लिए, एचटीएमएल एट्रिब्यूट translate="no" का इस्तेमाल करें.
  • यहां दी गई टेबल में बताए गए तरीके से, Google Maps टेक्स्ट को स्टाइल करें:

    प्रॉपर्टी स्टाइल
    फ़ॉन्ट फ़ैमिली Roboto. फ़ॉन्ट लोड करना ज़रूरी नहीं है.
    फ़ॉलबैक फ़ॉन्ट फ़ैमिली आपके प्रॉडक्ट में पहले से इस्तेमाल किया गया कोई भी sans serif बॉडी फ़ॉन्ट या डिफ़ॉल्ट सिस्टम फ़ॉन्ट को चालू करने के लिए "Sans-Serif"
    फ़ॉन्ट स्टाइल सामान्य
    फ़ॉन्ट की मोटाई 400
    फ़ॉन्ट का रंग सफ़ेद, काला (#1F1F1F) या स्लेटी (#5E5E5E). बैकग्राउंड के साथ, सुलभता (4.5:1) के हिसाब से कंट्रास्ट बनाए रखें.
    फ़ॉन्ट का साइज़ कम से कम फ़ॉन्ट साइज़: 12sp
    ज़्यादा से ज़्यादा फ़ॉन्ट साइज़: 16sp
    sp के बारे में जानने के लिए, मटीरियल डिज़ाइन की वेबसाइट पर फ़ॉन्ट साइज़ की इकाइयां देखें.
    स्पेसिंग सामान्य

सीएसएस का उदाहरण

नीचे दी गई सीएसएस, सफ़ेद या हल्के रंग के बैकग्राउंड पर, टेक्स्ट 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 भरोसेमंद सोर्स से मिले जवाब में कॉन्टेक्स्ट टोकन और जगह का आईडी शामिल हो सकता है. जवाब के इस डेटा को कैश मेमोरी में सेव किया जा सकता है, स्टोर किया जा सकता है, और एक्सपोर्ट किया जा सकता है:

  • (सिर्फ़ वेब एसडीके के लिए) googleMapsWidgetContextToken
  • placeId

Google Maps से जानकारी लेने की सुविधा की शर्तों में, कैश मेमोरी में सेव करने से जुड़ी पाबंदियां इस डेटा पर लागू नहीं होती हैं.

पाबंदी वाली गतिविधि और देश/इलाके

Google Maps के साथ बातचीत करने पर, कुछ कॉन्टेंट और गतिविधियों के लिए अतिरिक्त पाबंदियां लगाई जाती हैं. ऐसा इसलिए किया जाता है, ताकि प्लैटफ़ॉर्म को सुरक्षित और भरोसेमंद बनाए रखा जा सके. चुने गए Gemini API प्रोवाइडर की शर्तों में, इस्तेमाल से जुड़ी पाबंदियों के अलावा: Gemini Developer API या Vertex AI Gemini API (सेवा की खास शर्तों में सेवा की शर्तें सेक्शन देखें).

  • ज़्यादा जोखिम वाली गतिविधियों के लिए, Google Maps के साथ ग्राउंडिंग का इस्तेमाल नहीं किया जाएगा. इनमें आपातकालीन सेवाओं से जुड़ी गतिविधियां भी शामिल हैं.

  • आप ऐसे देश या इलाके में, Google Maps के साथ ग्राउंडिंग की सुविधा देने वाले अपने ऐप्लिकेशन का डिस्ट्रिब्यूशन या मार्केटिंग नहीं करेंगे जहां यह सुविधा उपलब्ध नहीं है. ज़्यादा जानकारी के लिए, Google Maps Platform के लिए, पाबंदी वाले देशों या इलाकों की सूची देखें. इस सूची को समय-समय पर अपडेट किया जा सकता है.

Firebase कंसोल में, भरोसेमंद सोर्स से मिले जवाब और एआई की परफ़ॉर्मेंस को मॉनिटर करने की सुविधा

अगर आपने Firebase कंसोल में एआई मॉनिटरिंग की सुविधा चालू की है, तो जवाब Cloud Logging में सेव किए जाते हैं. डिफ़ॉल्ट रूप से, इस डेटा को 30 दिनों तक सेव रखा जाता है.

यह आपकी ज़िम्मेदारी है कि डेटा बनाए रखने की यह अवधि या आपकी ओर से सेट की गई कोई भी कस्टम अवधि, आपके इस्तेमाल के खास उदाहरण और Gemini APIप्रदाता के लिए, अनुपालन से जुड़ी किसी भी अतिरिक्त ज़रूरी शर्त के मुताबिक हो: Gemini Developer API या Vertex AI Gemini API (सेवा की खास शर्तों में सेवा की शर्तें सेक्शन देखें). इन ज़रूरी शर्तों को पूरा करने के लिए, आपको Cloud Logging में डेटा सुरक्षित रखने की अवधि में बदलाव करना पड़ सकता है.

कीमत और दर की सीमाएं

Google Maps की कीमत के हिसाब से जवाब पाने की सुविधा, क्वेरी पर आधारित होती है. किसी अनुरोध को Google Maps के कोटे में तब ही गिना जाता है, जब प्रॉम्प्ट से कम से कम एक Google Maps भरोसेमंद जवाब मिलता है. इसका मतलब है कि जवाब में कम से कम एक Google Maps सोर्स शामिल होता है. अगर किसी एक अनुरोध से Google Maps को कई क्वेरी भेजी जाती हैं, तो उसे दर सीमा के हिसाब से एक अनुरोध माना जाता है.

Gemini API की मदद से ग्राउंडिंग करने की सुविधा के लिए, कीमत, मॉडल की उपलब्धता, और सीमाओं के बारे में जानकारी ज़रूर देखें. यह जानकारी, Gemini API की सेवा देने वाली कंपनी के दस्तावेज़ में दी गई है: Gemini Developer API | Vertex AI Gemini API.Google Maps