Délais d’expiration et disjoncteurs
Limitez strictement la durée des appels au LLM et aux outils, et utilisez des disjoncteurs pour éviter de solliciter sans cesse une dépendance défaillante.
Délais d’expiration et disjoncteurs 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.
Limiter chaque appel externe
Chaque appel réseau doit avoir un délai d’attente. Sans cela, une connexion bloquée peut geler tout l’agent.
HTTP Timeouts
import requests
response = requests.get(url, timeout=(3, 10)) # 3s connect, 10s readLLM Timeouts
from openai import OpenAI
client = OpenAI(timeout=30.0)
# Or per call:
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
timeout=30.0
)Choisir des délais d’attente réalistes
Mesurez la latence p99 en conditions réelles et ajoutez 25 %. Définir timeout = 3 s lorsque p99 vaut 4 s provoque des échecs erronés constants.
Délai d’attente total de l’agent
Entourez toute l’exécution de l’agent d’une échéance :
import asyncio
async def run_agent_with_deadline(query, deadline_s=60):
try:
return await asyncio.wait_for(run_agent(query), timeout=deadline_s)
except asyncio.TimeoutError:
return 'Sorry, this is taking too long. Please try again.'Qu’est-ce qu’un coupe-circuit ?
Modèle : lorsqu’un service en aval commence à échouer, « ouvrez » le circuit — cessez de l’appeler pendant un certain temps. Récupérez automatiquement après une période de refroidissement.
États : CLOSED (fonctionnement normal) -> OPEN (échec rapide) -> SEMI_OUVERT (sondage) -> CLOSED (récupération).
Implementing with pybreaker
# pip install pybreaker
import pybreaker
breaker = pybreaker.CircuitBreaker(fail_max=5, reset_timeout=60)
@breaker
def fragile_call():
return requests.get(url, timeout=5).json()Après 5 échecs
Une fois que fail_max erreurs consécutives ont été atteintes, le coupe-circuit s’ouvre. Tous les appels suivants échouent immédiatement pendant reset_timeout secondes, ce qui vous évite de marteler un service défaillant.
Renvoyer des solutions de repli pertinentes
Lorsque le coupe-circuit est ouvert, renvoyez une solution de repli élégante au lieu de faire planter l’agent :
try:
result = fragile_call()
except pybreaker.CircuitBreakerError:
result = {'error': 'service-unavailable', 'fallback': 'cached or stale data'}Coupe-circuits par outil
Chaque dépendance externe doit avoir son propre coupe-circuit : un service défaillant ne doit pas affecter les appels vers un service sain.
Cloisonnement
Limitez le nombre d’appels simultanés vers un même outil à l’aide d’un sémaphore : cela empêche une dépendance lente d’épuiser tous les processus :
from asyncio import Semaphore
search_sem = Semaphore(10)
async def search(query):
async with search_sem:
return await tavily_search(query)Vérifications d’état
Envoyez périodiquement une requête ping à chaque outil afin de détecter les problèmes avant les utilisateurs :
async def health_check():
for tool in [tavily, openai, vector_db]:
try:
await tool.ping()
except Exception as e:
alert(f'{tool.name} unhealthy: {e}')Afficher l’état aux utilisateurs
Lorsqu’un outil critique est indisponible, dites-le à l’utilisateur :
if tavily_breaker.current_state == 'open':
return 'Web search is temporarily unavailable.'Pourquoi utiliser un coupe-circuit ?
Pourquoi utiliser un coupe-circuit sur un service externe instable ?
Récapitulatif
Des délais d’attente pour chaque appel. Des coupe-circuits par outil. Un cloisonnement pour la concurrence. Des vérifications d’état. Des messages de repli élégants.
Questions Fréquemment Posées
La leçon « Délais d’expiration et disjoncteurs » est-elle gratuite ?
Oui — le texte complet de « Délais d’expiration et disjoncteurs » 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 « Délais d’expiration et disjoncteurs » ?
Limitez strictement la durée des appels au LLM et aux outils, et utilisez des disjoncteurs pour éviter de solliciter sans cesse une dépendance défaillante. 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 « Délais d’expiration et disjoncteurs » ?
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
- Outils idempotents et effets de bord
- Nouvelles tentatives avec temporisation exponentielle
- Délais d’expiration et disjoncteurs
- Valider les sorties des outils (Pydantic)