0Pricing
AI Agents · Lekcja

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

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

  1. Idempotentne narzędzia i efekty uboczne
  2. Ponowienia z wykładniczym wycofaniem
  3. Limity czasu i circuit breaker
  4. Walidowanie danych wyjściowych narzędzi (Pydantic)
← Powrót do AI Agents