الاستناد إلى "خرائط Google"

تتيح ميزة "التحقّق من المصادر باستخدام Google Maps" ربط نموذج Gemini بالبيانات الجغرافية المكانية من Google Maps لكي تتمكّن من إنشاء وظائف تراعي الموقع الجغرافي في تطبيقاتك.

توفّر ميزة "التحقّق من المصادر باستخدام Google Maps" المزايا التالية:

  • زيادة الدقة الواقعية: يمكنك تقليل هلوسة النماذج من خلال الاستناد في الردود إلى قاعدة بيانات Google التي تضم أكثر من 250 مليون مكان ونشاط تجاري في العالم الحقيقي.
  • الوصول إلى المعلومات في الوقت الفعلي: يمكنك الإجابة عن الأسئلة باستخدام بيانات مباشرة، مثل ساعات العمل الحالية وحالة محطات شحن المركبات الكهربائية في الوقت الفعلي.
  • تقديم المصادر: يمكنك تعزيز ثقة المستخدمين من خلال عرض مصادر وروابط Google Maps للأماكن مباشرةً بجانب الادعاءات المستندة إلى الموقع الجغرافي في النموذج.

النماذج المتوافقة

  • gemini-4-carbon
  • gemini-4-argon
  • gemini-3.8-flash
  • ‫gemini-3.5-flash-lite (والإصدار الأقدم gemini-3.1-flash-lite)

تتيح نماذج Gemini 3.x Flash القديمة ذات الاستخدام العام هذه الإمكانية، ولكن لا يُنصح باستخدامها بعد الآن بسبب تواريخ الإيقاف القادمة و/أو التوجيه التلقائي إلى النماذج الأحدث.

اللغات المتاحة

يمكنك الاطّلاع على اللغات المتاحة لنماذج Gemini.

التحقّق من صحة ردود النموذج باستخدام Google Maps

انقر على مزوّد خدمة Gemini API للاطّلاع على المحتوى والرمز البرمجي الخاصَّين بمزوّد الخدمة على هذه الصفحة.

عند إنشاء مثيل GenerativeModel، قدِّم GoogleMaps كـ tool يمكن للنموذج استخدامه لإنشاء ردّه.

Swift


import CoreLocation
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: [.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" فقط عندما يكون لحالة الاستخدام سياق جغرافي واضح.

  • تقديم الموقع الجغرافي للمستخدم: للحصول على الردود الأكثر صلة وتخصيصًا (وعندما يكون الموقع الجغرافي للمستخدم معروفًا)، يجب تضمين الموقع الجغرافي للمستخدم (باستخدام خط العرض وخط الطول من خلال latLng) في إعدادات أداة "الربط بمصادر موثوقة" باستخدام Google Maps.

  • إبلاغ المستخدمين النهائيين: يجب إبلاغ المستخدمين النهائيين بوضوح بأنّ بيانات "Google Maps" تُستخدم للإجابة عن طلبات بحثهم. إنّ تزويد المستخدمين النهائيين بالمصادر من "Google Maps" هو شرط لاستخدام الخدمة في ما يتعلّق بأداة "التحقّق من المصادر باستخدام Google Maps".

استخدام خصائص الأماكن في الطلبات

يسرد هذا القسم سمات الأماكن المستخدَمة لوصف المواقع الجغرافية والمستخدَمة من خلال ميزة "التحقّق من المصدر باستخدام Google Maps" لإنشاء الردود. تُستخدم هذه السمات لتحديد أنواع الأسئلة التي يمكن الإجابة عنها من خلال ميزة "الربط بمصادر موثوقة باستخدام Google Maps".

أمثلة على سمات الأماكن

تقدّم هذه القائمة عيّنة أبجدية من السمات حول الأماكن التي يمكن لنموذجك استخدامها لإنشاء الردود.

  • العنوان
  • الإيصال إلى السيارة
  • بطاقة السحب الآلي
  • المسافة
  • موقف سيارات مجاني
  • موسيقى حية
  • قائمة طعام للأطفال
  • ساعات العمل
  • خيارات الدفع (مثل نقدًا أو بطاقة ائتمان)
  • الإجابة المتعلقة بالمكان
  • يُسمح باصطحاب الحيوانات الأليفة
  • تقديم البيرة
  • يقدّم المكان المأكولات النباتية
  • أنشطة مناسبة لأصحاب الكراسي المتحرّكة
  • Wifi

إجابات الأماكن هي ردّ من ميزة "التحقّق من المصادر باستخدام Google Maps" استنادًا إلى المعلومات المستمَدة من مراجعات المستخدمين.

أمثلة على الطلبات التي تستخدم سمات الأماكن

تستخدم الأمثلة التالية سمات الأماكن في الطلبات حول أنواع مختلفة من الأماكن. تستخدم ميزة "التحقّق من المصدر" في Google Maps السمات لفهم نيتك، ثم تقدّم إجابات ذات صلة استنادًا إلى البيانات المرتبطة بالأماكن في Google Maps.

  • التخطيط لعشاء عائلي: يمكنك تحديد ما إذا كان المطعم مناسبًا للعائلة وما إذا كان يقدّم خدمة ملائمة.

    • مثال على طلب: هل مطعم "The Italian Place" مناسب للأطفال، وهل يقدّم خدمة الوجبات الجاهزة؟ ما هو تقييمها؟
  • التحقّق من ميزات تسهيل الاستخدام لصديق: يمكنك تحديد ما إذا كان الموقع الجغرافي يلبي احتياجات محددة لتسهيل الاستخدام.

    • مثال على طلب: أريد مطعمًا فيه مدخل مناسب لأصحاب الكراسي المتحرّكة.
  • العثور على مكان لتناول وجبة خفيفة في وقت متأخر من الليل: يمكنك العثور على مؤسسة مفتوحة تقدّم وجبة معيّنة خلال وقت محدّد.

    • مثال على طلب: هل مطعم "برغر جوينت" مفتوح الآن؟ هل يقدّم هذا المكان العشاء؟ ما هي ساعات العمل يوم الجمعة؟
  • لقاء عميل لتناول القهوة: تقييم مدى ملاءمة مقهى لاجتماع عمل استنادًا إلى وسائل الراحة والعروض وخيارات الدفع.

    • مثال على طلب: هل يتوفّر Wi-Fi في "مقهى السنترال"؟ هل يقدّم هذا المكان القهوة؟ ما هو مستوى الأسعار في هذا المكان، وهل يقبل بطاقات الائتمان؟

يُرجى العِلم أنّ المعلومات الواردة في نتائج 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. يتضمّن هذا الردّ ما يلي:

    • الإجابة النصية للنموذج
    • عنصر groundingMetadata يتضمّن نتائج ومصادر Google Maps

يُرجى العِلم أنّ توفير Google Maps كأداة للنموذج لا يتطلّب من النموذج استخدام أداة Google Maps دائمًا لإنشاء ردّه. في هذه الحالات، لن يحتوي الردّ على عنصر groundingMetadata، وبالتالي لن يكون نتيجة مستندة إلى المصادر في Google Maps.

فهم النتائج المستندة إلى المصادر

إذا استند النموذج في ردّه إلى نتائج "Google Maps"، سيتضمّن الردّ عنصر groundingMetadata يحتوي على بيانات منظَّمة ضرورية للتحقّق من الادعاءات وإنشاء تجربة غنية بالمصادر في تطبيقك.

يحتوي عنصر groundingMetadata في نتيجة مستندة إلى مصادر موثوقة من Google Maps على المعلومات التالية:

  • ‫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]
          }
        ]
      }
    }
  ]
}

متطلبات استخدام الخدمة

يصف هذا القسم متطلبات استخدام خدمة "التحقّق من المصادر باستخدام Google Maps" لمقدّم خدمة "Gemini API" الذي اخترته: 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 Grounded Result:

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.
  • صورة من عنوان URL المصدر (og:image).

لمزيد من المعلومات حول بعض مزوّدي البيانات في Google Maps وبنود الترخيص الخاصة بهم، يُرجى الاطّلاع على الإشعارات القانونية لخدمتَي "خرائط Google" و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) يجب الحفاظ على تباين يسهّل الوصول إلى المحتوى (4.5:1) مع الخلفية.
    حجم الخط الحدّ الأدنى لحجم الخط: 12 بكسل مستقل عن الكثافة
    الحدّ الأقصى لحجم الخط: 16 بكسل مستقل عن الكثافة
    للتعرّف على البكسل المستقل عن الكثافة، يُرجى الاطّلاع على وحدات حجم الخط على موقع 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

لا تنطبق القيود المفروضة على التخزين المؤقت في "بنود استخدام خرائط Google كمصدر" على هذه البيانات.

الأنشطة والمناطق المحظورة

تفرض ميزة "التحقّق من المصادر باستخدام Google Maps" قيودًا إضافية على بعض المحتوى والأنشطة للحفاظ على منصة آمنة وموثوقة. بالإضافة إلى قيود الاستخدام الواردة في "البنود" لمقدّم خدمة Gemini API الذي اخترته: Gemini Developer API أو Agent Platform Gemini API (formerly Vertex AI) (يُرجى الاطّلاع على قسم بنود الخدمة ضمن "البنود الخاصة بالخدمة").

  • لن تستخدم ميزة "التحقّق من المصادر باستخدام Google Maps" في الأنشطة العالية الخطورة، بما في ذلك خدمات الاستجابة لحالات الطوارئ.

  • لن توزّع أو تسوّق تطبيقك الذي يوفّر ميزة "الاستناد إلى مصدر" باستخدام "Google Maps" في منطقة محظورة. لمزيد من المعلومات، يُرجى الاطّلاع على المناطق المحظورة في "منصة خرائط Google". وقد يتم تعديل قائمة "المناطق المحظورة" من حين لآخر.

النتائج المستندة إلى مصادر موثوقة وتتبُّع استخدام الذكاء الاصطناعي في وحدة تحكّم Firebase

إذا فعّلت ميزة تتبُّع استخدام الذكاء الاصطناعي في وحدة تحكّم Firebase، يتم تخزين الردود في Cloud Logging. بشكل تلقائي، يتم الاحتفاظ بهذه البيانات لمدة 30 يومًا.

تقع على عاتقك مسؤولية التأكّد من أنّ فترة الاحتفاظ بالبيانات هذه، أو أي فترة مخصّصة تحدّدها، تتوافق تمامًا مع حالة الاستخدام المحدّدة وأي متطلبات امتثال إضافية لمقدّم خدمة Gemini API الذي اخترته: Gemini Developer API أو Agent Platform Gemini API (formerly Vertex AI) (يُرجى الاطّلاع على قسم بنود الخدمة ضمن البنود الخاصة بالخدمة). قد تحتاج إلى تعديل فترة الاحتفاظ بالبيانات في Cloud Logging لتلبية هذه المتطلبات.

الأسعار وسقف الاستخدام

تعتمد أسعار ميزة "التحقّق من المصدر باستخدام Google Maps" على طلبات البحث. يتم احتساب الطلب ضمن حصة Google Maps فقط عندما يعرض الطلب بنجاح نتيجة واحدة على الأقل من نتائج Google Maps المستندة إلى المصادر (أي أنّ الردّ يحتوي على مصدر واحد على الأقل من Google Maps). إذا تم إرسال طلبات بحث متعددة إلى Google Maps من طلب واحد، يتم احتسابها كطلب واحد ضمن الحد الأقصى للمعدّل.

احرص على مراجعة التفاصيل حول الأسعار وتوفّر النماذج والحدود القصوى لميزة "الربط بمصادر موثوقة" باستخدام Google Maps في مستندات مقدّم خدمة Gemini API الذي اخترته: Gemini Developer API | Agent Platform Gemini API (formerly Vertex AI).