La fundamentación con la Búsqueda de Google conecta el modelo de Gemini con el contenido web en tiempo real y funciona con todos los idiomas disponibles. Esto permite que Gemini proporcione respuestas más precisas y cite fuentes verificables más allá de su fecha límite de conocimiento.
La fundamentación te ayuda a crear aplicaciones que pueden hacer lo siguiente:
- Aumentar la exactitud fáctica: Reduce las alucinaciones del modelo basando las respuestas en información del mundo real.
- Accede a información en tiempo real: Responde preguntas sobre eventos y temas recientes.
Proporciona citas: Genera confianza en los usuarios mostrando las fuentes de las afirmaciones del modelo.
Python
from google import genai
from google.genai import types
# Configure the client
client = genai.Client()
# Define the grounding tool
grounding_tool = types.Tool(
google_search=types.GoogleSearch()
)
# Configure generation settings
config = types.GenerateContentConfig(
tools=[grounding_tool]
)
# Make the request
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="Who won the euro 2024?",
config=config,
)
# Print the grounded response
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
// Configure the client
const ai = new GoogleGenAI({});
// Define the grounding tool
const groundingTool = {
googleSearch: {},
};
// Configure generation settings
const config = {
tools: [groundingTool],
};
// Make the request
const response = await ai.models.generateContent({
model: "gemini-2.5-flash",
contents: "Who won the euro 2024?",
config,
});
// Print the grounded response
console.log(response.text);
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash: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": {}
}
]
}'
Si quieres obtener más información, prueba el notebook de la herramienta de búsqueda.
Cómo funciona la fundamentación con la Búsqueda de Google
Cuando habilitas la herramienta google_search
, el modelo controla automáticamente todo el flujo de trabajo de búsqueda, procesamiento y citación de información.
- Instrucción del usuario: Tu aplicación envía una instrucción del usuario a la API de Gemini con la herramienta
google_search
habilitada. - Análisis de la instrucción: El modelo analiza la instrucción y determina si la Búsqueda de Google puede mejorar la respuesta.
- Búsqueda de Google: Si es necesario, el modelo genera automáticamente una o varias búsquedas y las ejecuta.
- Procesamiento de los resultados de la búsqueda: El modelo procesa los resultados de la búsqueda, sintetiza la información y formula una respuesta.
- Respuesta fundamentada: La API devuelve una respuesta final y fácil de usar que se basa en los resultados de la búsqueda. Esta respuesta incluye la respuesta de texto del modelo y
groundingMetadata
con las búsquedas, los resultados web y las citas.
Cómo comprender la respuesta de fundamentación
Cuando una respuesta se fundamenta correctamente, incluye un campo groundingMetadata
. Estos datos estructurados son esenciales para verificar las afirmaciones y crear una experiencia de citas enriquecida en tu aplicación.
{
"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]
}
]
}
}
]
}
La API de Gemini devuelve la siguiente información con el groundingMetadata
:
webSearchQueries
: Es un array de las búsquedas utilizadas. Esto es útil para depurar y comprender el proceso de razonamiento del modelo.searchEntryPoint
: Contiene el código HTML y CSS para renderizar las sugerencias de búsqueda requeridas. Los requisitos de uso completos se detallan en las Condiciones del Servicio.groundingChunks
: Es un array de objetos que contiene las fuentes web (uri
ytitle
).groundingSupports
: Es un array de fragmentos para conectar la respuesta del modelotext
a las fuentes engroundingChunks
. Cada fragmento vincula un textosegment
(definido porstartIndex
yendIndex
) a uno o másgroundingChunkIndices
. Esta es la clave para crear citas intercaladas.
La fundamentación con la Búsqueda de Google también se puede usar en combinación con la herramienta de contexto de URL para fundamentar las respuestas tanto en los datos web públicos como en las URLs específicas que proporciones.
Cómo atribuir fuentes con citas intercaladas
La API devuelve datos de citas estructurados, lo que te brinda un control completo sobre cómo mostrar las fuentes en tu interfaz de usuario. Puedes usar los campos groundingSupports
y groundingChunks
para vincular las declaraciones del modelo directamente a sus fuentes. A continuación, se muestra un patrón común para procesar los metadatos y crear una respuesta con citas intercaladas en las que se puede hacer clic.
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);
La nueva respuesta con citas intercaladas se verá de la siguiente manera:
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:/...)
Precios
Cuando usas la Fundamentación con la Búsqueda de Google, se te factura el proyecto por cada solicitud a la API que incluye la herramienta google_search
. Si el modelo decide ejecutar varias búsquedas para responder una sola instrucción (por ejemplo, buscar "UEFA Euro 2024 winner"
y "Spain vs England Euro 2024 final score"
en la misma llamada a la API), esto se considera un solo uso facturable de la herramienta para esa solicitud.
Para obtener información detallada sobre los precios, consulta la página de precios de la API de Gemini.
Modelos compatibles
No se incluyen los modelos experimentales ni los de vista previa. Puedes encontrar sus capacidades en la página de descripción general del modelo.
Modelo | Fundamentación con la Búsqueda de Google |
---|---|
Gemini 2.5 Pro | ✔️ |
Gemini 2.5 Flash | ✔️ |
Gemini 2.5 Flash-Lite | ✔️ |
Gemini 2.0 Flash | ✔️ |
Gemini 1.5 Pro | ✔️ |
Gemini 1.5 Flash | ✔️ |
Fundamentación con los modelos de Gemini 1.5 (heredado)
Si bien la herramienta google_search
se recomienda para Gemini 2.0 y versiones posteriores, Gemini 1.5 admite una herramienta heredada llamada google_search_retrieval
. Esta herramienta proporciona un modo dynamic
que permite que el modelo decida si debe realizar una búsqueda según su confianza en que la instrucción requiere información actualizada. Si la confianza del modelo supera un dynamic_threshold
que establezcas (un valor entre 0.0 y 1.0), se realizará una búsqueda.
Python
# Note: This is a legacy approach for Gemini 1.5 models.
# The 'google_search' tool is recommended for all new development.
import os
from google import genai
from google.genai import types
client = genai.Client()
retrieval_tool = types.Tool(
google_search_retrieval=types.GoogleSearchRetrieval(
dynamic_retrieval_config=types.DynamicRetrievalConfig(
mode=types.DynamicRetrievalConfigMode.MODE_DYNAMIC,
dynamic_threshold=0.7 # Only search if confidence > 70%
)
)
)
config = types.GenerateContentConfig(
tools=[retrieval_tool]
)
response = client.models.generate_content(
model='gemini-1.5-flash',
contents="Who won the euro 2024?",
config=config,
)
print(response.text)
if not response.candidates[0].grounding_metadata:
print("\nModel answered from its own knowledge.")
JavaScript
// Note: This is a legacy approach for Gemini 1.5 models.
// The 'googleSearch' tool is recommended for all new development.
import { GoogleGenAI, DynamicRetrievalConfigMode } from "@google/genai";
const ai = new GoogleGenAI({});
const retrievalTool = {
googleSearchRetrieval: {
dynamicRetrievalConfig: {
mode: DynamicRetrievalConfigMode.MODE_DYNAMIC,
dynamicThreshold: 0.7, // Only search if confidence > 70%
},
},
};
const config = {
tools: [retrievalTool],
};
const response = await ai.models.generateContent({
model: "gemini-1.5-flash",
contents: "Who won the euro 2024?",
config,
});
console.log(response.text);
if (!response.candidates?.[0]?.groundingMetadata) {
console.log("\nModel answered from its own knowledge.");
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash: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_retrieval": {
"dynamic_retrieval_config": {
"mode": "MODE_DYNAMIC",
"dynamic_threshold": 0.7
}
}
}]
}'
¿Qué sigue?
- Prueba la guía de soluciones de Fundamentación con la Búsqueda de Google en la API de Gemini.
- Obtén más información sobre otras herramientas disponibles, como Llamada a función.
- Aprende a aumentar las instrucciones con URLs específicas usando la herramienta de contexto de URL.