Un agent de recherche autonome accepte un sujet, effectue plusieurs recherches web, collecte et déduplique les sources, puis synthétise les résultats dans un rapport structuré — le tout sans intervention humaine. Ce modèle est précieux pour la veille concurrentielle, les résumés de littérature académique et l'analyse concurrentielle. Ce tutoriel construit un tel agent en Python pur et avec l'API Scavio, sans s'appuyer sur un framework d'agent complet. L'agent émet des requêtes de recherche séquentielles, extrait les faits clés des extraits SERP et les formate en un rapport markdown.
Prérequis
- Python 3.10 ou supérieur
- bibliothèque requests installée
- Une clé API Scavio
- Une clé API OpenAI pour l'étape de synthèse (optionnelle)
Parcours
Étape 1: Définir le plan de recherche
Décomposer le sujet de recherche en une liste de requêtes de recherche. Un bon agent de recherche génère 3 à 5 requêtes couvrant différents aspects du sujet.
def make_queries(topic: str) -> list[str]:
return [
topic,
f"{topic} latest developments 2026",
f"{topic} key players market",
f"{topic} challenges limitations",
]Étape 2: Collecter les résultats de recherche pour chaque requête
Appeler l'API Scavio pour chaque requête et fusionner les résultats organiques en une seule liste dédupliquée indexée par URL.
def collect_results(queries: list[str]) -> dict:
seen = {}
for query in queries:
data = search_google(query)
for r in data.get("organic_results", []):
seen[r["link"]] = r
return seenÉtape 3: Extraire les faits des extraits
Construire une liste plate de tuples (titre, extrait, url) à partir des résultats dédupliqués pour une utilisation dans la génération du rapport.
def extract_facts(results: dict) -> list[tuple]:
facts = []
for url, r in results.items():
if r.get("snippet"):
facts.append((r["title"], r["snippet"], url))
return factsÉtape 4: Rédiger le rapport
Formater les faits collectés en un rapport markdown simple. Optionnellement, passer les faits à un LLM pour synthèse.
def write_report(topic: str, facts: list[tuple]) -> str:
lines = [f"# Research Report: {topic}\n"]
for title, snippet, url in facts[:10]:
lines.append(f"## {title}")
lines.append(snippet)
lines.append(f"Source: {url}\n")
return "\n".join(lines)Exemple Python
import os
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
def search_google(query: str) -> dict:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": query, "country_code": "us"})
r.raise_for_status()
return r.json()
def research(topic: str) -> str:
queries = [topic, f"{topic} 2026 trends", f"{topic} challenges"]
seen = {}
for q in queries:
for r in search_google(q).get("organic_results", []):
seen[r["link"]] = r
lines = [f"# {topic}\n"]
for r in list(seen.values())[:10]:
lines.append(f"## {r['title']}")
lines.append(r.get("snippet", ""))
lines.append(f"{r['link']}\n")
return "\n".join(lines)
if __name__ == "__main__":
report = research("large language model inference optimization")
print(report)Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
async function searchGoogle(query) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query, country_code: "us" })
});
return res.json();
}
async function research(topic) {
const queries = [topic, `${topic} 2026 trends`, `${topic} challenges`];
const seen = new Map();
for (const q of queries) {
const data = await searchGoogle(q);
for (const r of data.organic_results || []) {
seen.set(r.link, r);
}
}
const results = [...seen.values()].slice(0, 10);
return results.map(r => `## ${r.title}\n${r.snippet || ""}\n${r.link}`).join("\n\n");
}
research("AI inference optimization").then(console.log).catch(console.error);Sortie attendue
# Research Report: AI inference optimization
## Faster LLM Inference Techniques in 2026
Quantization, speculative decoding, and model distillation have reduced...
Source: https://example.com/llm-inference
## Key Players in AI Inference Hardware
NVIDIA, AMD, and Groq continue to dominate...
Source: https://example.com/inference-hardware