El problema
Cada marco de agente (LangChain, CrewAI, AutoGen, LangGraph) necesita herramientas de búsqueda definidas de manera diferente. Los desarrolladores escriben la misma lógica de búsqueda cuatro veces con diferentes firmas de contenedor, y cada contenedor tiene sus propios errores.
La solucion de Scavio
Escriba una función de búsqueda principal que llame a Scavio y luego envuélvala con adaptadores delgados para cada marco. La función principal maneja la autenticación, el manejo de errores y la normalización de resultados. Los adaptadores de marco tienen de 3 a 5 líneas cada uno.
Antes
Cuatro implementaciones de herramientas de búsqueda diferentes en cuatro marcos de agentes. Existe un error en el análisis de resultados en dos de ellos, pero no en los otros dos.
Después
Una función de búsqueda central con cuatro envoltorios finos. Corrija un error una vez, todos los marcos obtienen la solución.
Para quien es
Desarrolladores que crean agentes de IA en múltiples marcos y desean una herramienta de búsqueda única y confiable que funcione en todas partes.
Beneficios clave
- Una función de búsqueda sirve a todos los marcos de agentes
- Adaptadores delgados para LangChain, CrewAI, AutoGen, LangGraph
- Manejo de errores centralizado y lógica de reintento
- Formato de resultados coherente en todos los agentes
- Agregue nuevos marcos con 3-5 líneas de código de adaptador
Ejemplo en Python
import requests, os
from typing import Optional
API_KEY = os.environ["SCAVIO_API_KEY"]
def core_search(query: str, platform: str = "google", limit: int = 10) -> dict:
"""Core search function. All framework adapters call this."""
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY, "Content-Type": "application/json"},
json={"query": query, "platform": platform, "country_code": "us"},
timeout=15,
)
if resp.status_code != 200:
return {"error": f"HTTP {resp.status_code}", "results": []}
data = resp.json()
return {
"results": [
{"title": r.get("title", ""), "url": r.get("link", ""), "snippet": r.get("snippet", "")}
for r in data.get("organic_results", [])[:limit]
]
}
# LangChain adapter
def langchain_search(query: str) -> str:
results = core_search(query)
return "\n".join(f"{r['title']}: {r['snippet']}" for r in results["results"])
# CrewAI adapter
def crewai_search(query: str) -> str:
return langchain_search(query) # Same string format works
# AutoGen adapter
def autogen_search(query: str) -> dict:
return core_search(query) # AutoGen prefers dict
print(langchain_search("python web frameworks 2026"))Ejemplo en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function coreSearch(query, platform='google', limit=10) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query, platform, country_code:'us'})});
const d = await r.json();
return {results:(d.organic_results||[]).slice(0,limit).map(r=>({title:r.title, url:r.link, snippet:r.snippet}))};
}
// Framework adapters
const langchainSearch = async (q) => (await coreSearch(q)).results.map(r=>r.title+': '+r.snippet).join('\n');
const result = await langchainSearch('python web frameworks 2026');
console.log(result);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
YouTube
Búsqueda de videos con transcripciones y metadatos
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit
Amazon
Búsqueda de productos con precios, calificaciones y reseñas