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.
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 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
)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.
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
- Idempotente værktøjer og sideeffekter
- Retries med eksponentiel backoff
- Timeouts og circuit breakers
- Validering af værktøjsoutput (Pydantic)