Limity czasu i circuit breaker
Ograniczaj wywołania LLM i narzędzi ścisłymi limitami czasu oraz używaj circuit breakerów, aby nie przeciążać niedziałającej zależności.
Limity czasu i circuit breaker to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Ograniczanie każdego wywołania zewnętrznego
Każde wywołanie sieciowe musi mieć limit czasu. Bez niego zawieszone połączenie może zamrozić całego agenta.
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
)Wybór realistycznych limitów czasu
Należy zmierzyć rzeczywiste opóźnienie p99 i dodać 25%. Ustawienie limitu czasu na 3 s, gdy p99 wynosi 4 s, powoduje ciągłe fałszywe awarie.
Łączny limit czasu agenta
Należy opakować całe uruchomienie agenta terminem ostatecznym:
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.'Czym jest circuit breaker
Wzorzec: gdy usługa zależna zaczyna zawodzić, należy „otworzyć” obwód — przez pewien czas przestać ją wywoływać. Po okresie schładzania należy automatycznie wznowić działanie.
Stany: CLOSED (normalny) -> OPEN (szybka porażka) -> HALF_OPEN (sondowanie) -> CLOSED (odzyskano sprawność).
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()Po 5 błędach
Po wystąpieniu kolejno fail_max błędów mechanizm breaker otwiera się. Wszystkie kolejne wywołania kończą się natychmiast niepowodzeniem przez reset_timeout sekund — dzięki temu nie przeciążają niesprawnej usługi.
Zwracanie sensownych wartości zastępczych
Gdy breaker jest otwarty, należy zwrócić kontrolowaną wartość zastępczą zamiast doprowadzać do awarii agenta:
try:
result = fragile_call()
except pybreaker.CircuitBreakerError:
result = {'error': 'service-unavailable', 'fallback': 'cached or stale data'}Osobne mechanizmy breaker dla narzędzi
Każda zewnętrzna zależność powinna mieć własny mechanizm breaker — jedna niesprawna usługa nie powinna wpływać na wywołania zdrowej usługi.
Bulkheady
Należy ograniczyć liczbę równoczesnych wywołań dowolnego narzędzia za pomocą semafora — zapobiega to wyczerpaniu wszystkich procesów roboczych przez jedną wolno działającą zależność:
from asyncio import Semaphore
search_sem = Semaphore(10)
async def search(query):
async with search_sem:
return await tavily_search(query)Kontrole stanu
Należy okresowo wysyłać żądania do każdego narzędzia, aby wykrywać problemy, zanim zrobią to użytkownicy:
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}')Udostępnianie użytkownikom stanu
Gdy krytyczne narzędzie jest niedostępne, należy poinformować użytkownika:
if tavily_breaker.current_state == 'open':
return 'Web search is temporarily unavailable.'Dlaczego używać circuit breaker
Dlaczego należy używać circuit breaker w przypadku niestabilnej usługi zewnętrznej?
Podsumowanie
Limity czasu dla każdego wywołania. Osobne mechanizmy circuit breaker dla narzędzi. Bulkheady do obsługi współbieżności. Kontrole stanu. Komunikaty z kontrolowanymi wartościami zastępczymi.
Często zadawane pytania
Czy lekcja „Limity czasu i circuit breaker” jest bezpłatna?
Tak — pełny tekst „Limity czasu i circuit breaker” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Limity czasu i circuit breaker”?
Ograniczaj wywołania LLM i narzędzi ścisłymi limitami czasu oraz używaj circuit breakerów, aby nie przeciążać niedziałającej zależności. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Limity czasu i circuit breaker”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Idempotentne narzędzia i efekty uboczne
- Ponowienia z wykładniczym wycofaniem
- Limity czasu i circuit breaker
- Walidowanie danych wyjściowych narzędzi (Pydantic)