Le problème
Chaque framework d'agent (LangChain, CrewAI, AutoGen, LangGraph) nécessite des outils de recherche définis différemment. Les développeurs écrivent la même logique de recherche quatre fois avec des signatures de wrapper différentes, et chaque wrapper a ses propres bugs.
La solution Scavio
Écrivez une fonction de recherche centrale qui appelle Scavio, puis enveloppez-la avec des adaptateurs légers pour chaque framework. La fonction centrale gère l'authentification, la gestion des erreurs et la normalisation des résultats. Les adaptateurs de framework font 3 à 5 lignes chacun.
Avant
Quatre implémentations d'outil de recherche différentes sur quatre frameworks d'agents. Un bug dans l'analyse des résultats existe dans deux d'entre eux mais pas dans les deux autres.
Après
Une fonction de recherche centrale avec quatre wrappers légers. Corrigez un bug une fois, tous les frameworks en bénéficient.
À qui cela s'adresse
Les développeurs créant des agents IA sur plusieurs frameworks qui veulent un outil de recherche unique et fiable fonctionnant partout.
Avantages clés
- Une fonction de recherche dessert tous les frameworks d'agents
- Des adaptateurs légers pour LangChain, CrewAI, AutoGen, LangGraph
- Gestion centralisée des erreurs et logique de réessai
- Format de résultat cohérent pour tous les agents
- Ajoutez de nouveaux frameworks avec 3 à 5 lignes de code d'adaptateur
Exemple 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"))Exemple 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);Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA
YouTube
Recherche de vidéos avec transcriptions et métadonnées
Communauté, publications et commentaires imbriqués de n'importe quel subreddit
Amazon
Recherche de produits avec prix, notes et avis