Grounding z użyciem wyszukiwarki Google łączy model Gemini z dostępnymi publicznie treściami internetowymi w czasie rzeczywistym. Dzięki temu model może podawać dokładniejsze i aktualniejsze odpowiedzi oraz cytować weryfikowalne źródła informacji, które nie są dostępne w jego zbiorze wiedzy.
Grounding z użyciem wyszukiwarki Google ma te zalety:
- Zwiększanie dokładności: zmniejsz skłonność modelu do halucynowania, opierając odpowiedzi na informacjach ze świata rzeczywistego.
- Dostęp do informacji w czasie rzeczywistym: odpowiadaj na pytania dotyczące ostatnich wydarzeń i tematów.
- Podawanie cytatów: buduj zaufanie użytkowników lub umożliwiaj im przeglądanie odpowiednich witryn, wyświetlając źródła twierdzeń modelu.
- Wykonywanie bardziej złożonych zadań: pobieranie artefaktów i odpowiednich obrazów, filmów lub innych multimediów, które pomagają w wykonywaniu zadań wymagających rozumowania.
- Ulepszanie odpowiedzi w określonych regionach lub językach: znajdowanie informacji dotyczących konkretnych regionów lub pomoc w dokładnym tłumaczeniu treści.
Pamiętaj, że funkcja Grounding w wyszukiwarce Google jest dostępna na urządzeniach z iOS, Androidem i w przeglądarce. W przyszłych wersjach udostępnimy go w przypadku Fluttera i Unity.
Obsługiwane modele
gemini-2.5-pro
gemini-2.5-flash
gemini-2.5-flash-lite-preview-06-17
gemini-2.0-flash-001
(i jego automatycznie aktualizowany aliasgemini-2.0-flash
)gemini-2.0-flash-live-preview-04-09
Obsługiwane języki
Zobacz obsługiwane języki w przypadku Geminimodeli.
Grounding modelu z użyciem wyszukiwarki Google
Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod dostawcy. |
Podczas tworzenia instancji GenerativeModel
podaj GoogleSearch
jako tool
, którego model może użyć do wygenerowania odpowiedzi.
Swift
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
Obsługa Fluttera zostanie wprowadzona w następnej wersji.
Unity
Obsługa Unity zostanie wprowadzona w następnej wersji.
Dowiedz się, jak wybrać model odpowiednie do Twojego przypadku użycia i aplikacji.
Aby uzyskać optymalne wyniki, użyj temperatury 1.0
(jest to wartość domyślna dla wszystkich modeli 2.5). Dowiedz się, jak ustawić temperaturę w konfiguracji modelu.
Jak działa grounding z użyciem wyszukiwarki Google
Gdy używasz narzędzia GoogleSearch
, model automatycznie obsługuje cały przepływ pracy związany z wyszukiwaniem, przetwarzaniem i cytowaniem informacji.
Model działa w ten sposób:
- Otrzymywanie prompta: aplikacja wysyła prompta do modelu Gemini z włączonym narzędziem
GoogleSearch
. - Analiza promptu: model analizuje prompt i określa, czy wyszukiwarka Google może ulepszyć swoją odpowiedź.
- Wysyłanie zapytań do wyszukiwarki Google: w razie potrzeby model automatycznie generuje i wykonuje jedno lub kilka zapytań.
- Przetwarzanie wyników wyszukiwania: model przetwarza wyniki wyszukiwania w Google i formułuje odpowiedź na pierwotny prompt.
- Zwróć „wynik oparty na wyszukiwarce”: model zwraca końcową, przyjazną dla użytkownika odpowiedź opartą na wynikach wyszukiwania w Google. Ta odpowiedź
zawiera tekstową odpowiedź modelu i
groundingMetadata
z zapytaniami, wynikami wyszukiwania w internecie i cytatami.
Pamiętaj, że udostępnienie wyszukiwarki Google jako narzędzia dla modelu nie wymaga, aby model zawsze używał tego narzędzia do generowania odpowiedzi. W takich przypadkach odpowiedź nie będzie zawierać obiektu groundingMetadata
, a więc nie będzie „wynikiem opartym na źródłach”.
Interpretowanie wyniku opartego na informacjach
Jeśli model opiera swoją odpowiedź na wynikach wyszukiwania w Google, zawiera ona obiekt groundingMetadata
, który zawiera uporządkowane dane niezbędne do weryfikacji twierdzeń i tworzenia w aplikacji rozbudowanych cytatów.
Obiekt groundingMetadata
w „wyniku z uzasadnieniem” zawiera te informacje:
webSearchQueries
: tablica z zapytaniami wysłanymi do wyszukiwarki Google. Te informacje przydają się podczas debugowania i poznawania procesu rozumowania modelu.searchEntryPoint
: zawiera kod HTML i CSS potrzebny do renderowania wymaganych „sugestii wyszukiwania w Google”. Musisz przestrzegać wymagań dotyczących korzystania z funkcji „Uziemienie w wyszukiwarce Google” w przypadku wybranego dostawcy interfejsu API:Gemini Developer API lub Vertex AI Gemini API (patrz sekcja Warunki usługi w Warunkach korzystania z konkretnych usług). Dowiedz się, jak używać i wyświetlać wynik oparty na informacjach (poniżej).groundingChunks
: tablica obiektów zawierających źródła internetowe (uri
ititle
).groundingSupports
: tablica fragmentów do połączenia odpowiedzi modelutext
ze źródłami wgroundingChunks
. Każdy fragment łączy tekstsegment
(zdefiniowany przezstartIndex
iendIndex
) z co najmniej 1groundingChunkIndices
. To pole pomaga tworzyć cytaty w tekście. Dowiedz się, jak używać i wyświetlać wynik oparty na informacjach, na dalszych stronach.
Oto przykładowa odpowiedź, która zawiera obiekt 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]
}
]
}
}
]
}
Używanie i wyświetlanie wyniku opartego na informacjach
Jeśli model użyje narzędzia wyszukiwarki Google do wygenerowania odpowiedzi, w odpowiedzi znajdzie się groundingMetadata
obiekt.
Jest to wymagane w przypadku wyświetlania sugestii wyszukiwania Google i zalecane w przypadku wyświetlania cytatów.
Wyświetlanie tych informacji nie tylko pomaga spełnić wymagania dotyczące korzystania z narzędzia Wyszukiwarka Google, ale też umożliwia Tobie i Twoim użytkownikom weryfikowanie odpowiedzi oraz otwiera nowe możliwości dalszego uczenia się.
(Wymagane) Wyświetlanie sugestii wyszukiwarki Google
Jeśli odpowiedź zawiera „Sugestie wyszukiwarki Google”, musisz spełnić wymagania dotyczące korzystania z „groundingu przy użyciu wyszukiwarki Google”, które obejmują sposób wyświetlania sugestii wyszukiwarki Google.
Obiekt groundingMetadata
zawiera „sugestie wyszukiwania w Google”, a konkretnie pole searchEntryPoint
, które ma pole renderedContent
zawierające zgodny kod HTML i CSS, który musisz wdrożyć, aby wyświetlać sugestie wyszukiwania w aplikacji.
Zapoznaj się ze szczegółowymi informacjami o wymaganiach dotyczących wyświetlania i działania sugestii w wyszukiwarce Google w dokumentacji Google Cloud. Pamiętaj, że chociaż te szczegółowe wskazówki znajdują się w dokumentacji Vertex AI Gemini API, dotyczą one również dostawcy Gemini Developer API.
Przykłady kodu znajdziesz w dalszej części tej sekcji.
(Zalecane) Wyświetl cytaty
Obiekt groundingMetadata
zawiera uporządkowane dane cytowania, a konkretnie pola groundingSupports
i groundingChunks
. Użyj tych informacji, aby połączyć stwierdzenia modelu bezpośrednio z ich źródłami w interfejsie (w tekście i w formie zbiorczej).
Przykłady kodu znajdziesz w dalszej części tej sekcji.
Przykładowe fragmenty kodu
Te przykłady kodu zawierają ogólne wzorce używania i wyświetlania wyniku opartego na informacjach. Twoim obowiązkiem jest jednak dopilnowanie, aby wdrożone przez Ciebie rozwiązanie było zgodne z wymaganiami.
Swift
// ...
// 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
Obsługa Fluttera zostanie wprowadzona w następnej wersji.
Unity
Obsługa Unity zostanie wprowadzona w następnej wersji.
Wyniki oparte na faktach i monitorowanie AI w konsoli Firebase
Jeśli włączysz monitorowanie AI w Firebasekonsoli, odpowiedzi będą przechowywane w Cloud Logging. Domyślnie okres przechowywania tych danych wynosi 30 dni.
Twoim obowiązkiem jest dopilnowanie, aby ten okres przechowywania lub dowolny okres niestandardowy, który ustawisz, był w pełni zgodny z Twoim konkretnym przypadkiem użycia i wszelkimi dodatkowymi wymaganiami dotyczącymi zgodności w przypadku wybranego Gemini APIdostawcy:Gemini Developer API lub Vertex AI Gemini API (patrz sekcja Warunki korzystania z usługi w Warunkach dodatkowych dotyczących poszczególnych usług). Aby spełnić te wymagania, może być konieczne dostosowanie okresu przechowywania w Cloud Logging.
Ceny i limity
Zapoznaj się z cennikiem, dostępnością modeli i limitami dotyczącymi ugruntowania w wyszukiwarce Google w dokumentacji wybranego Gemini API dostawcy:Gemini Developer API | Vertex AI Gemini API.