AI-agenter · Lektion

Timeouts og circuit breakers

Begræns LLM- og værktøjskald med strikse timeouts, og brug circuit breakers til at stoppe gentagne kald til en ustabil afhængighed.

Lektion 3 af 415 trin

Timeouts og circuit breakers er en gratis AI-agenter-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i AI-agenter, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AI-agenter-kurset indeholder 4 lektioner i alt.

Dele af denne lektion er endnu ikke oversat og vises på engelsk.

Sæt en grænse for alle eksterne kald

Alle netværkskald skal have en tidsgrænse. Uden en sådan kan en fastlåst forbindelse fryse hele agenten.

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
)

Vælg realistiske tidsgrænser

Mål den virkelige p99-latenstid, og læg 25 % til. Hvis du sætter tidsgrænsen til 3 sekunder, når p99 er 4 sekunder, får du konstante falske fejl.

Samlet tidsgrænse for agenten

Pak hele agentkørslen ind i en deadline:

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.'

Hvad er en kredsløbsafbryder?

Mønster: Når en underliggende tjeneste begynder at fejle, skal du "åbne" kredsløbet — og stoppe med at kalde den i et stykke tid. Gendan automatisk efter en afkølingsperiode.

Tilstande: CLOSED (normal) -> OPEN (fejl hurtigt) -> HALF_OPEN (prob) -> CLOSED (gendannet).

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()

Efter 5 fejl

Når der i træk er registreret fail_max fejl, åbner afbryderen. Alle efterfølgende kald fejler øjeblikkeligt i reset_timeout sekunder — så du undgår at overbelaste en syg tjeneste.

Returnér fornuftige reserveløsninger

Når afbryderen er åben, skal du returnere en kontrolleret reserveløsning i stedet for at få agenten til at gå ned:

try:
    result = fragile_call()
except pybreaker.CircuitBreakerError:
    result = {'error': 'service-unavailable', 'fallback': 'cached or stale data'}

Afbrydere pr. værktøj

Hver ekstern afhængighed bør have sin egen afbryder — én defekt tjeneste bør ikke påvirke kald til en sund tjeneste.

Skotter

Begræns antallet af samtidige kald til hvert værktøj med en semafor — så én langsom afhængighed ikke opbruger alle arbejdere:

from asyncio import Semaphore
search_sem = Semaphore(10)

async def search(query):
    async with search_sem:
        return await tavily_search(query)

Sundhedstjek

Ping hvert værktøj med jævne mellemrum for at opdage problemer, før brugerne gør det:

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}')

Vis status for brugerne

Når et kritisk værktøj er nede, skal du fortælle brugeren:

if tavily_breaker.current_state == 'open':
    return 'Web search is temporarily unavailable.'

Hvorfor bruge kredsløbsafbrydere?

Hvorfor bruge en kredsløbsafbryder på en ustabil ekstern tjeneste?

Opsummering

Tidsgrænser for hvert kald. Kredsløbsafbrydere pr. værktøj. Skotter til samtidighed. Sundhedstjek. Meddelelser med kontrollerede reserveløsninger.

Gratis at komme i gang

Lær AI-agenter med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
60
Lektioner
239

Ofte stillede spørgsmål

Er lektionen “Timeouts og circuit breakers” gratis?

Ja — hele teksten til “Timeouts og circuit breakers” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af AI-agenter-kurset, skal du opgradere til CoddyKit PRO. AI-agenter-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Timeouts og circuit breakers”?

Begræns LLM- og værktøjskald med strikse timeouts, og brug circuit breakers til at stoppe gentagne kald til en ustabil afhængighed. Du øver dig i AI-agenter med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på AI-agenter?

Der kræves ingen tidligere erfaring. AI-agenter på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Timeouts og circuit breakers”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne AI-agenter-lektion?

Ja. Alle AI-agenter-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Idempotente værktøjer og sideeffekter
  2. Retries med eksponentiel backoff
  3. Timeouts og circuit breakers
  4. Validering af værktøjsoutput (Pydantic)
← Tilbage til AI-agenter