0Pricing
AI Agents · Lezione

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 read

LLM 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

  1. Strumenti idempotenti ed effetti collaterali
  2. Retry con exponential backoff
  3. Timeout e circuit breaker
  4. Convalidare gli output degli strumenti (Pydantic)
← Torna a AI Agents