Desde abril de 2026, Gemini 2.0 Flash tiene un error intermitente: la conexión a tierra de google_search devuelve resultados vacíos o se niega a activarse por completo. La regresión de la imagen de marzo de 2026 empeoró las cosas. Flash no invoca de manera confiable la búsqueda, especialmente cuando también se registran herramientas externas. Este tutorial crea una capa de detección y respaldo para que su agente siempre obtenga resultados de búsqueda.
Requisitos previos
- Credenciales de Google AI Studio o Vertex AI
- Clave API de Scavio
- Python 3.8+
Guia paso a paso
Paso 1: Llama a Gemini con conexión a tierra de google_search
Configure la llamada Gemini estándar con la conexión a tierra habilitada.
import google.generativeai as genai
import os
genai.configure(api_key=os.environ['GEMINI_API_KEY'])
model = genai.GenerativeModel('gemini-2.0-flash',
tools=[genai.Tool(google_search=genai.GoogleSearch())])
def gemini_search(query):
response = model.generate_content(query)
return responsePaso 2: Detectar resultados de búsqueda vacíos o fallidos
Compruebe si Gemini realmente realizó una llamada de búsqueda. El error de abril de 2026 devuelve candidatos sin metadatos básicos.
def search_failed(response):
# No grounding metadata = search did not trigger
if not hasattr(response, 'candidates') or not response.candidates:
return True
candidate = response.candidates[0]
grounding = getattr(candidate, 'grounding_metadata', None)
if not grounding or not grounding.grounding_chunks:
return True
# Empty chunks = search triggered but returned nothing
return len(grounding.grounding_chunks) == 0Paso 3: Ruta a Scavio en caso de fallo
Cuando la búsqueda de Gemini falla, extraiga la consulta y llame a Scavio.
import requests
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def search_with_fallback(query):
response = gemini_search(query)
if search_failed(response):
results = requests.post('https://api.scavio.dev/api/v1/search',
headers=H,
json={'platform': 'google', 'query': query}).json()
return {'source': 'scavio', 'results': results}
return {'source': 'gemini', 'response': response}Paso 4: Tasas de fallos de registro para el seguimiento
Realice un seguimiento de la frecuencia con la que falla la búsqueda de Gemini para saber cuándo Google soluciona el error.
import json, datetime
def log_search_event(query, source, failed):
with open('search_fallback_log.jsonl', 'a') as f:
f.write(json.dumps({
'ts': datetime.datetime.now().isoformat(),
'query': query, 'source': source, 'gemini_failed': failed
}) + '\n')Ejemplo en Python
import os, requests
import google.generativeai as genai
genai.configure(api_key=os.environ['GEMINI_API_KEY'])
model = genai.GenerativeModel('gemini-2.0-flash',
tools=[genai.Tool(google_search=genai.GoogleSearch())])
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def search(query):
resp = model.generate_content(query)
grounding = getattr(resp.candidates[0], 'grounding_metadata', None) if resp.candidates else None
if not grounding or not grounding.grounding_chunks:
return requests.post('https://api.scavio.dev/api/v1/search',
headers=H, json={'platform': 'google', 'query': query}).json()
return respEjemplo en JavaScript
const res = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'google', query: userQuery})
});
const fallbackResults = await res.json();Salida esperada
Agent that always returns search results: Gemini grounding when it works, Scavio API when Gemini fails. JSONL log of failure rates for monitoring.