0Pricing
AI Agents · Leçon

Clients HTTP pour agents : httpx et requests

Requêtes HTTP synchrones et asynchrones, gestion des sessions et en-têtes.

Clients HTTP pour agents : httpx et requests est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 1 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.

Pourquoi les clients HTTP sont importants pour les agents

Les agents d’IA doivent souvent récupérer des données auprès de sources externes : API, sites Web et services. Un client HTTP fiable est un outil essentiel de la boîte à outils de tout agent.

Python propose deux bibliothèques HTTP populaires : requests (synchrone et simple) et httpx (qui prend en charge les modes synchrone et asynchrone). Il est essentiel de comprendre quand utiliser chacune d’elles pour créer des agents efficaces.

Requête GET de base avec requests

La bibliothèque requests simplifie les appels HTTP. Utilisez requests.get(url) pour récupérer une ressource et examiner la réponse.

Vérifiez toujours le code d’état avant d’utiliser le corps de la réponse, afin d’éviter les échecs silencieux.

import requests

url = 'https://api.example.com/data'
response = requests.get(url)

print(response.status_code)  # 200
print(response.text)         # raw string body
print(response.json())       # parsed JSON dict

Ajouter des en-têtes et définir des délais d’attente

La plupart des API nécessitent des en-têtes d’authentification. Le paramètre headers= vous permet de transmettre un dictionnaire d’en-têtes. Définissez toujours un timeout= pour empêcher votre agent de rester bloqué indéfiniment sur un serveur lent.

import requests

headers = {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
}

response = requests.get(
    'https://api.example.com/items',
    headers=headers,
    timeout=10  # seconds
)

data = response.json()
print(data)

raise_for_status() — Échouer immédiatement en cas d’erreur

response.raise_for_status() déclenche une HTTPError pour les codes d’état 4xx et 5xx. Sans cet appel, une réponse 404 ou 500 est silencieusement considérée comme une réussite.

Il s’agit d’une bonne pratique pour les agents : échouer explicitement afin que l’agent sache s’il doit réessayer ou signaler une erreur.

import requests

try:
    response = requests.get('https://api.example.com/missing', timeout=10)
    response.raise_for_status()  # raises if status >= 400
    data = response.json()
except requests.HTTPError as e:
    print(f'HTTP error: {e}')
except requests.RequestException as e:
    print(f'Network error: {e}')

Introduction à httpx

httpx est un client HTTP moderne dont l’API est identique à celle de requests, avec la prise en charge supplémentaire de l’asynchronisme. Il impose également des délais d’attente par défaut, ce qui le rend plus sûr pour les agents en production.

Installez-le avec pip install httpx. Son utilisation synchrone est presque identique à celle de requests.

import httpx

response = httpx.get(
    'https://api.example.com/data',
    headers={'Authorization': 'Bearer YOUR_KEY'},
    timeout=10.0
)

response.raise_for_status()
data = response.json()
print(data)

HTTP asynchrone avec httpx.AsyncClient

Lorsque votre agent s’exécute dans un contexte asynchrone, par exemple avec FastAPI ou asyncio, utilisez httpx.AsyncClient pour éviter de bloquer la boucle d’événements. Placez-le dans un bloc async with afin de garantir que la connexion est correctement fermée.

import httpx
import asyncio

async def fetch_data(url: str) -> dict:
    async with httpx.AsyncClient(timeout=10.0) as client:
        response = await client.get(
            url,
            headers={'Authorization': 'Bearer YOUR_KEY'}
        )
        response.raise_for_status()
        return response.json()

# result = asyncio.run(fetch_data('https://api.example.com/data'))

Effectuer plusieurs requêtes asynchrones simultanément

L’un des principaux avantages de l’HTTP asynchrone est de pouvoir récupérer plusieurs URL à la fois avec asyncio.gather(). Cela peut accélérer considérablement les agents qui ont besoin de données provenant de plusieurs points de terminaison avant de répondre.

import httpx
import asyncio

async def fetch_all(urls: list) -> list:
    async with httpx.AsyncClient(timeout=10.0) as client:
        tasks = [client.get(url) for url in urls]
        responses = await asyncio.gather(*tasks)
        return [r.json() for r in responses]

urls = [
    'https://api.example.com/item/1',
    'https://api.example.com/item/2',
    'https://api.example.com/item/3'
]
# results = asyncio.run(fetch_all(urls))

Réutiliser les sessions et mettre en commun les connexions

Créer une nouvelle connexion HTTP pour chaque requête est lent. Les deux bibliothèques prennent en charge la mise en commun des connexions : requests.Session et httpx.Client réutilisent les connexions TCP et partagent les en-têtes et les cookies entre les requêtes.

Cela est particulièrement utile pour les agents qui effectuent de nombreux appels vers la même API.

import httpx

# Create once, reuse for many requests
client = httpx.Client(
    base_url='https://api.example.com',
    headers={'Authorization': 'Bearer YOUR_KEY'},
    timeout=10.0
)

response1 = client.get('/users')
response2 = client.get('/items')
response3 = client.get('/orders')

client.close()  # always close when done

Envoyer des requêtes POST avec un corps JSON

Les agents doivent souvent envoyer des données, et pas seulement les lire. Utilisez le paramètre json= pour sérialiser automatiquement un dictionnaire Python et définir l’en-tête Content-Type approprié.

import httpx

payload = {
    'query': 'latest AI news',
    'max_results': 5,
    'language': 'en'
}

response = httpx.post(
    'https://api.example.com/search',
    json=payload,
    headers={'Authorization': 'Bearer YOUR_KEY'},
    timeout=15.0
)

response.raise_for_status()
results = response.json()
print(results['items'])

Analyser la réponse : text, json et content

L’objet de réponse possède trois propriétés principales pour le corps :

  • .text — chaîne décodée (HTML, XML ou texte brut)
  • .json() — analyse le JSON en dictionnaire ou liste Python
  • .content — octets bruts (pour les images ou les fichiers binaires)

Utilisez la propriété appropriée en fonction du type de contenu de l’API.

import httpx

response = httpx.get('https://api.example.com/report', timeout=10.0)

# For JSON APIs
data = response.json()            # dict or list

# For HTML or plain text
html = response.text              # str

# For binary files
image_bytes = response.content    # bytes

print(type(data), type(html), type(image_bytes))

Assembler le tout : outil de récupération HTTP pour un agent

Voici une fonction de récupération complète et réutilisable qu’un agent peut appeler comme outil. Elle gère les erreurs correctement, consigne la requête et renvoie des données structurées.

Ce modèle constitue une base solide pour tout outil d’agent qui récupère des données sur le Web.

import httpx
import logging

logger = logging.getLogger(__name__)

def agent_fetch(url: str, headers: dict = None) -> dict:
    try:
        response = httpx.get(
            url,
            headers=headers or {},
            timeout=10.0
        )
        response.raise_for_status()
        logger.info(f'Fetched {url} -> {response.status_code}')
        return {'success': True, 'data': response.json()}
    except httpx.HTTPStatusError as e:
        return {'success': False, 'error': str(e)}
    except httpx.RequestError as e:
        return {'success': False, 'error': f'Network error: {e}'}

Vérification des connaissances : clients HTTP

Vérifiez votre compréhension des clients HTTP pour les agents.

Récapitulatif : clients HTTP pour les agents

Dans cette leçon, vous avez appris à doter les agents de capacités fiables de récupération HTTP :

  • Utiliser requests pour les récupérations synchrones simples
  • Utiliser httpx.AsyncClient pour les requêtes asynchrones non bloquantes
  • Toujours définir timeout= et appeler raise_for_status()
  • Réutiliser les sessions ou clients pour plusieurs appels vers le même hôte
  • Utiliser .json(), .text ou .content selon le type de réponse

Un outil de récupération bien conçu est la passerelle entre votre agent et le Web.

Questions Fréquemment Posées

La leçon « Clients HTTP pour agents : httpx et requests » est-elle gratuite ?

Oui — le texte complet de « Clients HTTP pour agents : httpx et requests » 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 « Clients HTTP pour agents : httpx et requests » ?

Requêtes HTTP synchrones et asynchrones, gestion des sessions et en-têtes. 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 1 sur 4.

Combien de temps prend la leçon « Clients HTTP pour agents : httpx et requests » ?

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

  1. Clients HTTP pour agents : httpx et requests
  2. Analyser du HTML avec BeautifulSoup
  3. Gérer la pagination et le contenu dynamique
  4. Pratiques de collecte respectueuses
← Retour à AI Agents