Заземление с помощью Google Поиска

Интеграция с поиском Google позволяет модели Gemini подключаться к веб-контенту в режиме реального времени и работать со всеми доступными языками. Это дает Gemini возможность давать более точные ответы и ссылаться на проверенные источники, выходящие за рамки ее собственных знаний.

Заземление помогает создавать приложения, которые могут:

  • Повышение точности фактов: уменьшение количества иллюзорных моделей за счет того, что ответы основываются на информации из реального мира.
  • Получайте доступ к информации в режиме реального времени: отвечайте на вопросы о последних событиях и темах.
  • Укажите источники: укрепите доверие пользователей, показав ссылки на источники утверждений, содержащихся в модели.

Python

from google import genai
from google.genai import types

client = genai.Client()

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

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

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

print(response.text)

JavaScript

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

const ai = new GoogleGenAI({});

const groundingTool = {
  googleSearch: {},
};

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

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

console.log(response.text);

ОТДЫХ

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

Более подробную информацию можно получить, воспользовавшись блокнотом инструмента «Поиск» .

Как работает заземление с помощью поиска Google.

При включении инструмента google_search модель автоматически обрабатывает весь рабочий процесс поиска, обработки и цитирования информации.

Обзор заземления

  1. Запрос пользователя: Ваше приложение отправляет запрос пользователя в API Gemini с включенным инструментом google_search .
  2. Анализ запроса: Модель анализирует запрос и определяет, может ли поиск в Google улучшить ответ.
  3. Поиск Google: При необходимости модель автоматически генерирует один или несколько поисковых запросов и выполняет их.
  4. Обработка результатов поиска: Модель обрабатывает результаты поиска, синтезирует информацию и формирует ответ.
  5. Ответ, основанный на результатах поиска: API возвращает окончательный, удобный для пользователя ответ, основанный на результатах поиска. Этот ответ включает текстовый ответ модели и groundingMetadata содержащие поисковые запросы, результаты веб-поиска и цитаты.

Понимание реакции заземления

Когда ответ успешно подтверждается, он включает поле groundingMetadata . Эти структурированные данные необходимы для проверки утверждений и создания удобной системы цитирования в вашем приложении.

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

API Gemini возвращает следующую информацию вместе с параметром groundingMetadata :

  • webSearchQueries : Массив использованных поисковых запросов. Это полезно для отладки и понимания процесса рассуждений модели.
  • searchEntryPoint : Содержит HTML и CSS для отображения необходимых поисковых подсказок. Полные требования к использованию подробно изложены в Условиях предоставления услуг .
  • groundingChunks : Массив объектов, содержащих веб-источники ( uri и title ).
  • groundingSupports : Массив фрагментов для связи text ответа модели с источниками в groundingChunks . Каждый фрагмент связывает segment текста (определяемый параметрами startIndex и endIndex ) с одним или несколькими groundingChunkIndices . Это ключ к созданию встроенных цитат.

Функция сопоставления данных с результатами поиска Google также может использоваться в сочетании с инструментом контекстного анализа URL-адресов для сопоставления ответов как с общедоступными веб-данными, так и с конкретными предоставленными вами URL-адресами.

Указание источников с помощью внутритекстовых ссылок

API возвращает структурированные данные цитирования, предоставляя вам полный контроль над тем, как вы отображаете источники в пользовательском интерфейсе. Вы можете использовать поля groundingSupports и groundingChunks для прямой привязки утверждений модели к их источникам. Вот распространенный шаблон обработки метаданных для создания ответа с встроенными, кликабельными цитатами.

Python

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

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

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

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

    return text

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

JavaScript

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

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

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

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

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

    return text;
}

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

Новый ответ с внутритекстовыми ссылками будет выглядеть следующим образом:

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

Цены

При использовании функции Grounding с поиском Google в Gemini 3 ваш проект оплачивается за каждый поисковый запрос, который модель решает выполнить. Если модель решает выполнить несколько поисковых запросов для ответа на один запрос (например, поиск "UEFA Euro 2024 winner" и "Spain vs England Euro 2024 final score" в рамках одного вызова API), это считается двумя оплачиваемыми использованиями инструмента для этого запроса. В целях выставления счетов мы игнорируем пустые поисковые запросы при подсчете уникальных запросов. Эта модель выставления счетов применяется только к моделям Gemini 3; при использовании функции Grounding с моделями Gemini 2.5 или более старыми версиями ваш проект оплачивается за каждый запрос.

Подробную информацию о ценах см. на странице цен Gemini API .

Поддерживаемые модели

Экспериментальные и предварительные модели в комплект не входят. С их возможностями можно ознакомиться на странице обзора моделей .

Модель Освоение основ поиска Google
Gemini 2.5 Pro ✔️
Вспышка Gemini 2.5 ✔️
Фонарь Gemini 2.5 Flash-Lite ✔️
Gemini 2.0 Flash ✔️

Поддерживаемые комбинации инструментов

Вы можете использовать функцию Grounding с поиском Google в сочетании с другими инструментами, такими как выполнение кода и контекст URL-адреса, для решения более сложных задач.

Что дальше?