Un agent de recherche sur le Web
Combinez un outil de recherche, un outil de récupération et un LLM pour étudier un sujet et rédiger un résumé sourcé.
Un agent de recherche sur le Web est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Objectif du projet
Créez un agent qui étudie un sujet en effectuant des recherches sur le Web, en récupérant des pages et en rédigeant un résumé sourcé — comme une petite version de Perplexity.
Outils nécessaires
- search — interroger une API de recherche (Tavily, Serper, Brave) et renvoyer les résultats
- fetch_url — télécharger une page et renvoyer son texte nettoyé
- answer — l’agent rédige le résumé final avec des citations
Step 1: Search Tool
import requests
def search(query: str, k: int = 5) -> list[dict]:
r = requests.post(
'https://api.tavily.com/search',
json={'api_key': TAVILY_KEY, 'query': query, 'max_results': k}
)
return r.json()['results'] # list of {url, title, snippet}Step 2: Fetch Tool
from bs4 import BeautifulSoup
def fetch_url(url: str) -> str:
r = requests.get(url, timeout=10)
soup = BeautifulSoup(r.text, 'html.parser')
for tag in soup(['script', 'style', 'nav', 'footer']):
tag.decompose()
return soup.get_text(separator='\n', strip=True)[:5000] # truncateStep 3: Tool Definitions
tools = [
{'type': 'function', 'function': {
'name': 'search',
'description': 'Search the web for a query, return top results with URLs',
'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}
}},
{'type': 'function', 'function': {
'name': 'fetch_url',
'description': 'Download the text of a URL',
'parameters': {'type': 'object', 'properties': {'url': {'type': 'string'}}, 'required': ['url']}
}}
]
import json
print(json.dumps(tools, indent=2))
Step 4: The Agent Loop
def research(question, max_steps=8):
messages = [
{'role': 'system', 'content': 'You are a research agent. Use search and fetch_url to gather facts. Cite each claim with a URL.'},
{'role': 'user', 'content': question}
]
for _ in range(max_steps):
r = oai.chat.completions.create(model='gpt-4o-mini', messages=messages, tools=tools)
msg = r.choices[0].message
messages.append(msg)
if not msg.tool_calls:
return msg.content
for tc in msg.tool_calls:
result = dispatch(tc)
messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})
return 'Step limit reached'Tool Dispatcher
def dispatch(tc):
args = json.loads(tc.function.arguments)
if tc.function.name == 'search':
return search(**args)
if tc.function.name == 'fetch_url':
return fetch_url(**args)
return {'error': 'unknown tool'}Ajouter une limite d’étapes
Sans limite, l’agent peut boucler indéfiniment. max_steps=8 est une valeur par défaut raisonnable.
Tronquer les pages récupérées
La plupart des pages font plus de 50 Ko — c’est beaucoup trop. Tronquez-les à 5 000 caractères (environ 1 300 tokens). Le modèle a rarement besoin de davantage.
Respecter robots.txt
La navigation en production doit respecter robots.txt et les conditions d’utilisation du site. En cas de doute, utilisez un service géré de recherche et de récupération.
Mettre les résultats en cache
La même requête et la même URL seront souvent demandées. Mettez les résultats en cache dans Redis pendant une heure :
@lru_cache(maxsize=1000)
def cached_fetch(url):
return fetch_url(url)Gérer les échecs
Les erreurs réseau sont courantes. Renvoyez l’erreur au modèle afin qu’il puisse essayer une autre source :
try:
return fetch_url(url)
except Exception as e:
return {'error': f'Could not fetch {url}: {e}'}Forcer les citations
Terminez le prompt système par : « Votre réponse finale doit inclure les URL de chaque affirmation, par exemple [1] https://... » — et envisagez de vérifier le schéma de sortie.
Surveiller le coût
Les agents de recherche sont coûteux — de 5 à 15 appels d’outils par question, chacun récupérant plusieurs kilo-octets. Définissez une limite budgétaire par requête.
Limite d’étapes
Pourquoi définir une limite max_steps sur la boucle de l’agent ?
Récapitulatif
Recherche + récupération + LLM + limite d’étapes = un agent de recherche fonctionnel en 50 lignes. Un excellent troisième projet.
Questions Fréquemment Posées
La leçon « Un agent de recherche sur le Web » est-elle gratuite ?
Oui — le texte complet de « Un agent de recherche sur le Web » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Un agent de recherche sur le Web » ?
Combinez un outil de recherche, un outil de récupération et un LLM pour étudier un sujet et rédiger un résumé sourcé. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Agents ?
Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Un agent de recherche sur le Web » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?
Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Un robot de questions-réponses sur vos documents
- Un agent explicateur de code
- Un agent de recherche sur le Web
- Un assistant SQL pour votre DB