Timeout e circuit breaker
Limiti le chiamate LLM e agli strumenti con timeout rigorosi e utilizzi circuit breaker per evitare di sovraccaricare una dipendenza malfunzionante.
Timeout e circuit breaker è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Limitare ogni chiamata esterna
Ogni chiamata di rete deve avere un timeout. Senza timeout, una connessione bloccata può congelare l'intero agente.
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
)Scegliere timeout realistici
Misuri la latenza p99 nel mondo reale e aggiunga il 25%. Impostare timeout = 3 s quando il p99 è 4 s causa continui falsi errori.
Timeout totale dell'agente
Avvolga l'intera esecuzione dell'agente in una scadenza:
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.'Che cos'è un circuit breaker?
Pattern: quando un servizio downstream inizia a non funzionare, "apra" il circuito, cioè smetta di chiamarlo per un certo periodo. Il ripristino avviene automaticamente dopo un periodo di raffreddamento.
Stati: CLOSED (normale) -> OPEN (fallimento immediato) -> HALF_OPEN (sonda) -> CLOSED (ripristinato).
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()Dopo 5 errori
Quando si verificano consecutivamente fail_max errori, il breaker si apre. Tutte le chiamate successive falliscono immediatamente per reset_timeout secondi, evitando di sovraccaricare un servizio in difficoltà.
Restituire fallback sensati
Quando il breaker è aperto, restituisca un fallback appropriato invece di mandare in errore l'agente:
try:
result = fragile_call()
except pybreaker.CircuitBreakerError:
result = {'error': 'service-unavailable', 'fallback': 'cached or stale data'}Breaker per ogni strumento
Ogni dipendenza esterna dovrebbe avere il proprio breaker: un servizio non funzionante non dovrebbe influire sulle chiamate a uno sano.
Bulkhead
Limiti con un semaforo il numero di chiamate simultanee a un determinato strumento: ciò impedisce a una dipendenza lenta di esaurire tutti i worker:
from asyncio import Semaphore
search_sem = Semaphore(10)
async def search(query):
async with search_sem:
return await tavily_search(query)Controlli di integrità
Esegua periodicamente il ping di ogni strumento per rilevare i problemi prima degli utenti:
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}')Mostrare lo stato agli utenti
Quando uno strumento critico non è disponibile, informi l'utente:
if tavily_breaker.current_state == 'open':
return 'Web search is temporarily unavailable.'Perché usare un circuit breaker?
Perché utilizzare un circuit breaker con un servizio esterno instabile?
Riepilogo
Timeout per ogni chiamata. Circuit breaker per ogni strumento. Bulkhead per la concorrenza. Controlli di integrità. Messaggi di fallback appropriati.
Domande Frequenti
La lezione «Timeout e circuit breaker» è gratuita?
Sì — il testo completo di «Timeout e circuit breaker» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «Timeout e circuit breaker»?
Limiti le chiamate LLM e agli strumenti con timeout rigorosi e utilizzi circuit breaker per evitare di sovraccaricare una dipendenza malfunzionante. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Timeout e circuit breaker»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Strumenti idempotenti ed effetti collaterali
- Retry con exponential backoff
- Timeout e circuit breaker
- Convalidare gli output degli strumenti (Pydantic)