Resumen
Try un primary search proveedor, fall back to un secondary on timeout o error, y registro cual proveedor served cada solicitud. Useful for agents ese necesita confiable search sin manual intervention cuando un proveedor goes down.
Desencadenador
Agent search solicitud
Programación
On-demand (per agent solicitud)
Pasos del flujo de trabajo
Call primary proveedor
Enviar consulta to primary search API con un 5-segundo timeout.
Verificar respuesta validity
Verify respuesta contiene resultados y estado es 200.
Fallback on failure
Si primary fails o times out, call secondary proveedor.
Log proveedor usado
Record cual proveedor served el solicitud for cost seguimiento.
Implementacion en Python
import requests, os, time
H = {"x-api-key": os.environ["SCAVIO_API_KEY"]}
def search_with_fallback(query, platform="google"):
try:
r = requests.post("https://api.scavio.dev/api/v1/search",
headers=H, json={"platform": platform, "query": query}, timeout=5)
r.raise_for_status()
return {"provider": "scavio", "results": r.json()}
except Exception:
pass
# Fallback: Brave Search API
try:
r2 = requests.get("https://api.search.brave.com/res/v1/web/search",
headers={"X-Subscription-Token": os.environ["BRAVE_KEY"]},
params={"q": query}, timeout=5)
r2.raise_for_status()
return {"provider": "brave", "results": r2.json()}
except Exception:
return {"provider": "none", "results": []}
result = search_with_fallback("best CRM tools 2026")
print(f"Served by: {result['provider']}")Implementacion en JavaScript
const search = async (query) => {
try {
const r = 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}), signal: AbortSignal.timeout(5000)
});
if (r.ok) return {provider: "scavio", results: await r.json()};
} catch {}
try {
const r2 = await fetch(`https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(query)}`, {
headers: {"X-Subscription-Token": process.env.BRAVE_KEY}, signal: AbortSignal.timeout(5000)
});
if (r2.ok) return {provider: "brave", results: await r2.json()};
} catch {}
return {provider: "none", results: []};
};Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA