Aperçu
Choisir un fournisseur d'API de recherche sans tests systématiques mène à des regrets six mois plus tard. Ce workflow exécute des requêtes identiques auprès de plusieurs fournisseurs d'API de recherche, mesure la qualité des résultats, la latence et le coût par requête, et génère un rapport de comparaison. Il teste des cas limites comme les requêtes non anglaises, les recherches de produits et la couverture du knowledge graph afin que vous choisissiez le bon fournisseur du premier coup.
Déclencheur
Évaluation unique, déclenchée manuellement lors de la sélection du fournisseur.
Planification
Unique
Étapes du workflow
Définir un ensemble de requêtes de test
Créer plus de 50 requêtes de test dans différentes catégories : informationnelles, produits, locales, tendances et non anglaises.
Exécuter les requêtes contre chaque fournisseur
Exécuter les mêmes requêtes contre Scavio, Tavily et Exa. Enregistrer les résultats, la latence et le coût.
Évaluer la qualité des résultats
Pour chaque requête, noter la pertinence des 5 premiers résultats sur une échelle de 1 à 5. Suivre quels fournisseurs renvoient des données de Knowledge Graph et d'AI Overview.
Calculer le coût par requête
Calculer le coût réel par requête pour chaque fournisseur en fonction de leur niveau de tarification.
Générer un rapport de comparaison
Produire un tableau markdown avec les scores de qualité, la latence p50/p95, le coût par requête et la couverture des fonctionnalités par fournisseur.
Implémentation Python
import requests, os, json, time
SCAVIO_KEY = os.environ["SCAVIO_API_KEY"]
SH = {"x-api-key": SCAVIO_KEY, "Content-Type": "application/json"}
TEST_QUERIES = [
{"query": "best crm for startups 2026", "category": "informational"},
{"query": "sony wh-1000xm6 price", "category": "product"},
{"query": "python asyncio tutorial", "category": "technical"},
{"query": "restaurants near times square", "category": "local"},
{"query": "latest ai agent frameworks", "category": "trending"},
]
def test_scavio(query: str) -> dict:
start = time.time()
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=SH,
json={"query": query, "country_code": "us"},
timeout=15,
)
latency = time.time() - start
data = resp.json()
return {
"provider": "scavio",
"latency_ms": round(latency * 1000),
"result_count": len(data.get("organic_results", [])),
"has_knowledge_graph": "knowledge_graph" in data,
"has_ai_overview": "ai_overview" in data,
"has_related_questions": "related_questions" in data,
"cost_per_query": 0.005,
}
def run_evaluation():
results = []
for tq in TEST_QUERIES:
scavio_result = test_scavio(tq["query"])
scavio_result["category"] = tq["category"]
scavio_result["query"] = tq["query"]
results.append(scavio_result)
avg_latency = sum(r["latency_ms"] for r in results) / len(results)
avg_results = sum(r["result_count"] for r in results) / len(results)
kg_rate = sum(1 for r in results if r["has_knowledge_graph"]) / len(results)
print(f"Scavio Evaluation ({len(results)} queries):")
print(f" Avg latency: {avg_latency:.0f}ms")
print(f" Avg results: {avg_results:.1f}")
print(f" Knowledge Graph rate: {kg_rate:.0%}")
print(f" Cost: {len(results) * 0.005:.3f} USD")
return results
evaluation = run_evaluation()Implémentation JavaScript
const SH = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const TEST_QUERIES = [
{query:'best crm for startups 2026', category:'informational'},
{query:'sony wh-1000xm6 price', category:'product'},
{query:'python asyncio tutorial', category:'technical'},
{query:'restaurants near times square', category:'local'},
{query:'latest ai agent frameworks', category:'trending'},
];
async function testScavio(query) {
const start = Date.now();
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:SH, body:JSON.stringify({query, country_code:'us'})});
const latency = Date.now() - start;
const data = await r.json();
return {provider:'scavio', latencyMs:latency, resultCount:(data.organic_results||[]).length, hasKg:'knowledge_graph' in data, hasAio:'ai_overview' in data, hasRelated:'related_questions' in data, costPerQuery:0.005};
}
async function runEvaluation() {
const results = [];
for (const tq of TEST_QUERIES) {
const result = await testScavio(tq.query);
result.category = tq.category;
result.query = tq.query;
results.push(result);
}
const avgLatency = results.reduce((s,r)=>s+r.latencyMs,0)/results.length;
const avgResults = results.reduce((s,r)=>s+r.resultCount,0)/results.length;
const kgRate = results.filter(r=>r.hasKg).length/results.length;
console.log('Scavio Evaluation ('+results.length+' queries):');
console.log(' Avg latency: '+avgLatency.toFixed(0)+'ms');
console.log(' Avg results: '+avgResults.toFixed(1));
console.log(' KG rate: '+(kgRate*100).toFixed(0)+'%');
console.log(' Cost: $'+(results.length*0.005).toFixed(3));
return results;
}
const evaluation = await runEvaluation();Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA