زمینه سازی با جستجوی گوگل

زمین‌گیری با جستجوی Google یک مدل Gemini را به محتوای وب هم‌زمان و در دسترس عموم متصل می‌کند. این به مدل اجازه می دهد تا پاسخ های دقیق تر و به روزتری ارائه دهد و منابع قابل تأیید را فراتر از حد دانش خود ذکر کند.

گراندینگ با جستجوی گوگل دارای مزایای زیر است:

  • افزایش دقت واقعی : با استناد به پاسخ‌ها بر اساس اطلاعات دنیای واقعی، توهمات مدل را کاهش دهید.
  • دسترسی به اطلاعات بلادرنگ : به سؤالات مربوط به رویدادها و موضوعات اخیر پاسخ دهید.
  • ارائه نقل‌قول : اعتماد کاربر را ایجاد کنید یا به کاربران اجازه دهید با نشان دادن منابع ادعاهای مدل، سایت‌های مرتبط را مرور کنند.
  • کارهای پیچیده تر را کامل کنید : مصنوعات و تصاویر مرتبط، ویدیوها یا رسانه های دیگر را برای کمک به کارهای استدلالی بازیابی کنید.
  • بهبود پاسخ‌های خاص منطقه یا زبان : اطلاعات مربوط به منطقه را پیدا کنید یا به ترجمه دقیق محتوا کمک کنید.

توجه داشته باشید که پشتیبانی از Grounding for Google Search برای iOS+، Android، Web و Flutter در دسترس است. در نسخه آتی آن برای Unity در دسترس خواهد بود.

مدل های پشتیبانی شده

  • gemini-2.5-pro
  • gemini-2.5-flash
  • gemini-2.5-flash-lite-preview-06-17
  • gemini-2.0-flash-001 (و نام مستعار به روز شده خودکار آن gemini-2.0-flash )
  • gemini-2.0-flash-live-preview-04-09

زبان های پشتیبانی شده

به زبان های پشتیبانی شده برای مدل های Gemini مراجعه کنید.

مدل را با جستجوی Google زمین کنید

برای مشاهده محتوا و کد ارائه دهنده خاص در این صفحه، روی ارائه دهنده API Gemini خود کلیک کنید.

هنگامی که نمونه GenerativeModel ایجاد می کنید، GoogleSearch به عنوان tool ارائه کنید که مدل می تواند از آن برای تولید پاسخ خود استفاده کند.

سویفت


import FirebaseAI

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

// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.generativeModel(
    modelName: "GEMINI_MODEL_NAME",
    // Provide Google Search as a tool that the model can use to generate its response
    tools: [Tool.googleSearch()]
)

let response = try await model.generateContent("Who won the euro 2024?")
print(response.text ?? "No text in response.")

// Make sure to comply with the "Grounding with Google Search" usage requirements,
// which includes how you use and display the grounded result

Kotlin


// 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",
    // Provide Google Search as a tool that the model can use to generate its response
    tools = listOf(Tool.GoogleSearch())
)

val response = model.generateContent("Who won the euro 2024?")
print(response.text)

// Make sure to comply with the "Grounding with Google Search" usage requirements,
// which includes how you use and display the grounded result

Java


// 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 Search as a tool that the model can use to generate its response
                        List.of(Tool.GoogleSearch()));

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

ListenableFuture response = model.generateContent("Who won the euro 2024?");
  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 Search" usage requirements,
// which includes how you use and display the grounded result

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() });

// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(
  ai,
  {
    model: "GEMINI_MODEL_NAME",
    // Provide Google Search as a tool that the model can use to generate its response
    tools: [{ googleSearch: {} }]
  }
);

const result = await model.generateContent("Who won the euro 2024?");

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

// Make sure to comply with the "Grounding with Google Search" usage requirements,
// which includes how you use and display the grounded result

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,
);

// 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 Search as a tool that the model can use to generate its response
  tools: [
    Tool.googleSearch(),
  ],
);

final response = await model.generateContent([Content.text("Who won the euro 2024?")]);
print(response.text);

// Make sure to comply with the "Grounding with Google Search" usage requirements,
// which includes how you use and display the grounded result

وحدت

پشتیبانی از Unity در نسخه بعدی آن منتشر می شود.

نحوه انتخاب مدل را یاد بگیریدمناسب برای مورد استفاده و برنامه شما.

برای نتایج ایده آل، از دمای 1.0 (که پیش فرض برای همه مدل های 2.5 است) استفاده کنید. با نحوه تنظیم دما در پیکربندی مدل آشنا شوید.

نحوه عملکرد زمین با جستجوی Google

وقتی از ابزار GoogleSearch استفاده می کنید، مدل به طور خودکار کل گردش کار جستجو، پردازش و استناد به اطلاعات را مدیریت می کند.

در اینجا گردش کار مدل است:

  1. درخواست دریافت : برنامه شما با فعال بودن ابزار GoogleSearch ، درخواستی را به مدل Gemini ارسال می‌کند.
  2. درخواست تجزیه و تحلیل : مدل درخواست را تجزیه و تحلیل می کند و تعیین می کند که آیا جستجوی Google می تواند پاسخ آن را بهبود بخشد یا خیر.
  3. ارسال پرس و جو به جستجوی Google : در صورت نیاز، مدل به طور خودکار یک یا چند عبارت جستجو را ایجاد کرده و آنها را اجرا می کند.
  4. پردازش نتایج جستجو : مدل نتایج جستجوی Google را پردازش می‌کند و پاسخی به درخواست اصلی فرموله می‌کند.
  5. برگرداندن یک "نتیجه پایه" : این مدل یک پاسخ نهایی و کاربرپسند را که در نتایج جستجوی Google پایه گذاری شده است، برمی گرداند. این پاسخ شامل پاسخ متنی مدل و groundingMetadata با جستارهای جستجو، نتایج وب و نقل قول ها است.

توجه داشته باشید که ارائه جستجوی Google به‌عنوان ابزاری برای مدل، نیازی به استفاده از ابزار جستجوی Google برای ایجاد پاسخ آن ندارد. در این موارد، پاسخ حاوی یک شیء groundingMetadata نخواهد بود و بنابراین یک "نتیجه زمینی" نیست .

نموداری که نشان می‌دهد چگونه اتصال به زمین با جستجوی Google شامل تعامل مدل با جستجوی Google می‌شود

نتیجه پایه را درک کنید

اگر مدل پاسخ خود را در نتایج جستجوی Google مستقر کند، پس پاسخ شامل یک شی groundingMetadata است که حاوی داده های ساختاری است که برای تأیید ادعاها و ایجاد یک تجربه استنادی غنی در برنامه شما ضروری است.

شی groundingMetadata در یک "نتیجه پایه" حاوی اطلاعات زیر است:

  • webSearchQueries : آرایه ای از عبارت های جستجو ارسال شده به جستجوی Google. این اطلاعات برای اشکال زدایی و درک فرآیند استدلال مدل مفید است.

  • searchEntryPoint : حاوی HTML و CSS برای ارائه «پیشنهادات جستجوی Google» مورد نیاز است. شما ملزم به رعایت الزامات استفاده از «پایه‌بندی با جستجوی Google» برای ارائه‌دهنده API انتخابی خود هستید: Gemini Developer API یا Vertex AI Gemini API (به بخش شرایط خدمات در شرایط خاص سرویس مراجعه کنید). در ادامه در این صفحه نحوه استفاده و نمایش یک نتیجه را بیاموزید.

  • groundingChunks : آرایه ای از اشیاء حاوی منابع وب ( uri و title ).

  • groundingSupports : آرایه ای از تکه ها برای اتصال text پاسخ مدل به منابع در groundingChunks . هر تکه یک segment متن (تعریف شده توسط startIndex و endIndex ) را به یک یا چند groundingChunkIndices پیوند می دهد. این فیلد به شما در ایجاد نقل قول های درون خطی کمک می کند. در ادامه در این صفحه نحوه استفاده و نمایش یک نتیجه را بیاموزید.

در اینجا یک پاسخ مثال است که شامل یک شی 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 در پاسخ ارائه می‌کند.

برای نمایش پیشنهادات جستجوی Google و نمایش نقل قول ها توصیه می شود .

علاوه بر رعایت الزامات استفاده از ابزار جستجوی Google، نمایش این اطلاعات به شما و کاربران نهایی شما کمک می‌کند تا پاسخ‌ها را تأیید کنید و راه‌هایی را برای یادگیری بیشتر اضافه کنید.

(الزامی) نمایش پیشنهادات جستجوی Google

اگر پاسخی حاوی «پیشنهادات جستجوی Google» باشد، باید از الزامات استفاده از «پایه‌بندی با جستجوی Google» پیروی کنید، که شامل نحوه نمایش پیشنهادات جستجوی Google نیز می‌شود.

شی groundingMetadata حاوی «پیشنهادات جستجوی Google» است، به‌ویژه فیلد searchEntryPoint ، که دارای یک فیلد renderedContent است که استایل‌بندی سازگار با HTML و CSS را ارائه می‌کند، که باید برای نمایش پیشنهادات جستجو در برنامه خود پیاده‌سازی کنید.

اطلاعات دقیق در مورد الزامات نمایش و رفتار برای پیشنهادات جستجوی Google در اسناد Google Cloud را مرور کنید. توجه داشته باشید که حتی اگر این راهنمایی دقیق در اسناد Vertex AI Gemini API وجود دارد، این راهنمایی برای ارائه دهنده API توسعه دهنده Gemini نیز قابل اجرا است.

نمونه کدهای نمونه را در ادامه این بخش ببینید.

(توصیه می شود) نقل قول ها را نمایش دهید

شی groundingMetadata حاوی داده های استنادی ساختاریافته است، به ویژه فیلدهای groundingSupports و groundingChunks . از این اطلاعات برای پیوند مستقیم عبارات مدل به منابع آنها در UI خود (داخلی و جمعی) استفاده کنید.

نمونه کدهای نمونه را در ادامه این بخش ببینید.

نمونه کدهای نمونه

این نمونه کد الگوهای تعمیم یافته ای را برای استفاده و نمایش نتیجه زمینی ارائه می دهد. با این حال، این مسئولیت شماست که مطمئن شوید اجرای خاص شما با الزامات انطباق مطابقت دارد.

سویفت

// ...

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

// Get the grounding metadata
if let candidate = response.candidates.first,
   let groundingMetadata = candidate.groundingMetadata {
  // REQUIRED - display Google Search suggestions
  // (renderedContent contains HTML and CSS for the search widget)
  if let renderedContent = groundingMetadata.searchEntryPoint?.renderedContent {
    // TODO(developer): Display Google Search suggestions using a WebView
  }

  // RECOMMENDED - display citations
  let groundingChunks = groundingMetadata.groundingChunks
  for chunk in groundingMetadata.groundingChunks {
    if let web = chunk.web {
      let title = web.title  // for example, "uefa.com"
      let uri = web.uri  // for example, "https://vertexaisearch.cloud.google.com..."
      // TODO(developer): show citation in the UI
    }
  }
}

Kotlin

// ...

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

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

// REQUIRED - display Google Search suggestions
// (renderedContent contains HTML and CSS for the search widget)
val renderedContent = groundingMetadata?.searchEntryPoint?.renderedContent
if (renderedContent != null) {
    // TODO(developer): Display Google Search suggestions using a WebView
}

// RECOMMENDED - display citations
val groundingChunks = groundingMetadata?.groundingChunks
groundingChunks?.let { chunks ->
  for (chunk in chunks) {
  	val title = chunk.web?.title  // for example, "uefa.com"
	val uri = chunk.web?.uri  // for example, "https://vertexaisearch.cloud.google.com..."
// TODO(developer): show citation 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) {
    // REQUIRED - display Google Search suggestions
  // (renderedContent contains HTML and CSS for the search widget)
    String renderedContent =
  groundingMetadata.getSearchEntryPoint().getRenderedContent();
    if (renderedContent != null) {
      // TODO(developer): Display Google Search suggestions using a WebView
    }

    // RECOMMENDED - display citations
    List chunks = groundingMetadata.getGroundingChunks();
    if (chunks != null) {
      for(GroundingChunk chunk : chunks) {
        WebGroundingChunk web = chunk.getWeb();
        if (web != null) {
          String title = web.getTitle();  // for example, "uefa.com"
          String uri = web.getUri();  // for example, "https://vertexaisearch.cloud.google.com..."
          // TODO(developer): show citation 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;

// REQUIRED - display Google Search suggestions
// (renderedContent contains HTML and CSS for the search widget)
const renderedContent = groundingMetadata?.searchEntryPoint?.renderedContent;
if (renderedContent) {
  // TODO(developer): render this HTML and CSS in the UI
}

// RECOMMENDED - display citations
const groundingChunks = groundingMetadata?.groundingChunks;
if (groundingChunks) {
  for (const chunk of groundingChunks) {
    const title = chunk.web?.title;  // for example, "uefa.com"
    const uri = chunk.web?.uri;  // for example, "https://vertexaisearch.cloud.google.com..."
    // TODO(developer): show citation in the UI
  }
}

Dart

// ...

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

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

// REQUIRED - display Google Search suggestions
// (renderedContent contains HTML and CSS for the search widget)
final renderedContent = groundingMetadata?.searchEntryPoint?.renderedContent;
if (renderedContent != null) {
    // TODO(developer): Display Google Search suggestions using a WebView
}

// RECOMMENDED - display citations
final groundingChunks = groundingMetadata?.groundingChunks;
if (groundingChunks != null) {
  for (var chunk in groundingChunks) {
    final title = chunk.web?.title;  // for example, "uefa.com"
    final uri = chunk.web?.uri;  // for example, "https://vertexaisearch.cloud.google.com..."
    // TODO(developer): show citation in the UI
  }
}

وحدت

پشتیبانی از Unity در نسخه بعدی آن منتشر می شود.

نتایج پایه و نظارت هوش مصنوعی در کنسول Firebase

اگر نظارت هوش مصنوعی را در کنسول Firebase فعال کرده باشید، پاسخ‌ها در Cloud Logging ذخیره می‌شوند. به طور پیش فرض، این داده ها دارای یک دوره نگهداری 30 روزه هستند.

این مسئولیت شماست که اطمینان حاصل کنید که این دوره نگهداری، یا هر دوره سفارشی که تعیین می‌کنید، کاملاً با موارد استفاده خاص شما و هرگونه الزامات انطباق اضافی برای ارائه‌دهنده API Gemini انتخابی شما مطابقت دارد: Gemini Developer API یا Vertex AI Gemini API (به بخش شرایط خدمات در شرایط خاص سرویس مراجعه کنید). ممکن است لازم باشد دوره نگهداری در Cloud Logging را برای برآورده کردن این الزامات تنظیم کنید .

قیمت و محدودیت

مطمئن شوید که قیمت‌ها، در دسترس بودن مدل، و محدودیت‌های پایه‌گذاری با جستجوی Google را در اسناد ارائه‌دهنده Gemini API انتخابی خود مرور کرده‌اید: Gemini Developer API |Vertex AI Gemini API .