El problema
La API de Gemini devuelve respuestas frecuentes 429 (límite de velocidad) y 503 (error del servidor), especialmente durante las horas pico. Los agentes que utilizan Gemini para conectarse a tierra pierden la capacidad de búsqueda durante los cortes y, por defecto, presentan respuestas alucinadas.
La solucion de Scavio
Agregue una capa de middleware que detecte errores de Gemini y enrute consultas básicas a una API de búsqueda. El middleware envuelve la llamada de Gemini, captura 429/503 respuestas y recurre a la búsqueda de Scavio. Cuando Gemini se recupera, el middleware vuelve a funcionar automáticamente según las comprobaciones de estado.
Antes
Antes de la alternativa, un agente de soporte que utilizaba la conexión a tierra de Gemini le dijo a un cliente el precio incorrecto del producto durante una interrupción de Gemini. El agente alucinó con un precio de $49/mes cuando el precio real era $79/mes. El cliente presentó una reclamación 3 días después.
Después
Después de agregar el respaldo, las interrupciones de Gemini dirigen las consultas de puesta a tierra a la búsqueda de Scavio. Durante una interrupción de 3 horas con 847 consultas, todos los usuarios obtienen respuestas precisas de los resultados de búsqueda. Costo: $4,24 para las consultas alternativas. Los registros de middleware muestran que la tasa de error de Gemini alcanzó un máximo del 65% durante la interrupción.
Para quien es
Desarrolladores de agentes que utilizan la API de Gemini para conectarse a tierra y que necesitan un respaldo confiable durante la limitación de velocidad y los errores del servidor de Gemini.
Beneficios clave
- Cero alucinaciones durante los apagones de Gemini
- Respaldo y recuperación automáticos sin cambios de código
- El respaldo de la API de búsqueda cuesta centavos por hora de interrupción
- El seguimiento de la salud identifica la degradación temprana de Géminis
- Funciona con cualquier marco de agente basado en Gemini
Ejemplo en Python
import requests, os, time
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
class GeminiFallback:
def __init__(self):
self.gemini_healthy = True
self.last_check = 0
def search(self, query: str) -> dict:
if self.gemini_healthy:
try:
# Try Gemini grounding first
# gemini_result = call_gemini(query)
# return gemini_result
pass
except Exception:
self.gemini_healthy = False
self.last_check = time.time()
# Fallback to Scavio
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}, timeout=10).json()
# Health check every 5 minutes
if time.time() - self.last_check > 300:
self.gemini_healthy = True
self.last_check = time.time()
return {'source': 'scavio_fallback',
'results': r.get('organic_results', [])[:3]}
fb = GeminiFallback()
result = fb.search('current mortgage rate 2026')
print(f"Source: {result['source']}, Results: {len(result['results'])}")Ejemplo en JavaScript
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
class GeminiFallback {
constructor() { this.healthy = true; this.lastCheck = 0; }
async search(query) {
if (this.healthy) {
try { /* const r = await callGemini(query); return r; */ } catch {
this.healthy = false; this.lastCheck = Date.now();
}
}
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({ platform: 'google', query })
}).then(r => r.json());
if (Date.now() - this.lastCheck > 300000) { this.healthy = true; this.lastCheck = Date.now(); }
return { source: 'scavio_fallback', results: (r.organic_results || []).slice(0, 3) };
}
}
const fb = new GeminiFallback();
const r = await fb.search('current mortgage rate 2026');
console.log(`${r.source}: ${r.results.length} results`);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA