Compare las API de búsqueda directamente dentro de Claude Code enviando consultas idénticas a cada proveedor y midiendo la latencia, el recuento de resultados y la relevancia de los fragmentos. Este enfoque le permite evaluar proveedores en el mismo entorno que utilizará su agente. Scavio sirve como participante de referencia y como referencia multiplataforma, ya que una clave API cubre Google, YouTube, Reddit, Amazon y Walmart. Este tutorial crea un arnés de evaluación comparativa que produce una tabla de comparación con latencias p50/p95 y puntuaciones de calidad de los resultados.
Requisitos previos
- Claude Code o Claude Desktop con MCP configurado
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
Guia paso a paso
Paso 1: Configurar el arnés de referencia
Defina las consultas que se probarán y las métricas que se recopilarán para cada llamada a la API.
import requests, os, time, statistics
API_KEY = os.environ['SCAVIO_API_KEY']
ENDPOINT = 'https://api.scavio.dev/api/v1/search'
TEST_QUERIES = [
'best crm for startups 2026',
'python web scraping tutorial',
'react vs vue performance comparison',
'how to deploy fastapi on aws',
]
def benchmark_query(query: str) -> dict:
start = time.monotonic()
resp = requests.post(ENDPOINT, headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': query}, timeout=15)
latency = (time.monotonic() - start) * 1000
data = resp.json()
results = data.get('organic_results', [])
return {'query': query, 'latency_ms': round(latency, 1), 'result_count': len(results), 'status': resp.status_code}Paso 2: Ejecutar múltiples iteraciones
Ejecute cada consulta varias veces para obtener mediciones de latencia estables.
def run_benchmark(queries: list, iterations: int = 3) -> list:
all_results = []
for query in queries:
latencies = []
for _ in range(iterations):
result = benchmark_query(query)
latencies.append(result['latency_ms'])
time.sleep(0.5)
all_results.append({
'query': query,
'p50_ms': round(statistics.median(latencies), 1),
'p95_ms': round(sorted(latencies)[int(len(latencies) * 0.95)], 1),
'avg_results': result['result_count'],
})
return all_resultsPaso 3: Relevancia del resultado de la puntuación
Utilice una heurística simple de superposición de palabras clave para calificar qué tan relevantes son los fragmentos devueltos para la consulta.
def relevance_score(query: str, results: list) -> float:
query_terms = set(query.lower().split())
scores = []
for r in results[:5]:
snippet = (r.get('snippet', '') + ' ' + r.get('title', '')).lower()
overlap = sum(1 for t in query_terms if t in snippet)
scores.append(overlap / max(len(query_terms), 1))
return round(sum(scores) / max(len(scores), 1), 2)
# Add relevance to benchmark:
def benchmark_with_relevance(query: str) -> dict:
resp = requests.post(ENDPOINT, headers={'x-api-key': API_KEY},
json={'platform': 'google', 'query': query}, timeout=15)
data = resp.json()
results = data.get('organic_results', [])
return {'query': query, 'relevance': relevance_score(query, results), 'count': len(results)}Paso 4: Generar la tabla comparativa
Imprima una tabla formateada que compare la latencia, el recuento de resultados y las puntuaciones de relevancia.
def print_benchmark_table(results: list):
print(f'{"Query":<40} {"p50 (ms)":>10} {"p95 (ms)":>10} {"Results":>8}')
print('-' * 72)
for r in results:
print(f'{r["query"][:38]:<40} {r["p50_ms"]:>10} {r["p95_ms"]:>10} {r["avg_results"]:>8}')
latencies = [r['p50_ms'] for r in results]
print(f'\nOverall p50: {statistics.median(latencies):.1f}ms')
results = run_benchmark(TEST_QUERIES)
print_benchmark_table(results)Ejemplo en Python
import requests, os, time, statistics
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def bench(query, n=3):
times = []
for _ in range(n):
t = time.monotonic()
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}, timeout=15)
times.append((time.monotonic() - t) * 1000)
return {'query': query, 'p50': round(statistics.median(times), 1), 'count': len(r.json().get('organic_results', []))}
for q in ['best crm 2026', 'python web scraping']:
print(bench(q))Ejemplo en JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function bench(query, n = 3) {
const times = [];
let count = 0;
for (let i = 0; i < n; i++) {
const t = performance.now();
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H, body: JSON.stringify({platform: 'google', query})
});
times.push(performance.now() - t);
count = ((await r.json()).organic_results || []).length;
}
times.sort((a, b) => a - b);
return {query, p50: times[Math.floor(times.length / 2)].toFixed(1), count};
}
bench('best crm 2026').then(console.log);Salida esperada
A benchmark table showing p50/p95 latency in milliseconds, result count, and relevance scores for each test query across the Scavio API.