Limites de tempo e disjuntores
Limite chamadas a LLMs e ferramentas com timeouts rigorosos e utilize disjuntores para parar de sobrecarregar uma dependência com problemas.
Limites de tempo e disjuntores é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Limitar todas as chamadas externas
Toda chamada de rede deve ter um tempo limite. Sem ele, uma conexão travada pode congelar todo o agente.
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
)Escolher tempos limite realistas
Meça a latência p99 no mundo real e adicione 25%. Definir tempo limite = 3 s quando p99 é 4 s causa falhas falsas constantes.
Tempo limite total do agente
Envolva toda a execução do agente com um prazo:
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.'O que é um disjuntor de circuito?
Padrão: quando um serviço downstream começa a falhar, "abra" o circuito — pare de chamá-lo por algum tempo. Recupere-se automaticamente após um período de espera.
Estados: CLOSED (normal) -> OPEN (falha rápida) -> SEMIABERTO (sondagem) -> CLOSED (recuperado).
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()Após 5 falhas
Quando fail_max erros ocorrem consecutivamente, o disjuntor abre. Todas as chamadas seguintes falham imediatamente durante reset_timeout segundos, evitando que você sobrecarregue um serviço com problemas.
Retornar alternativas adequadas
Quando o disjuntor estiver aberto, retorne uma alternativa controlada em vez de fazer o agente falhar:
try:
result = fragile_call()
except pybreaker.CircuitBreakerError:
result = {'error': 'service-unavailable', 'fallback': 'cached or stale data'}Disjuntores por ferramenta
Cada dependência externa deve ter seu próprio disjuntor — um serviço com problemas não deve afetar as chamadas para um serviço saudável.
Compartimentos isolados
Limite o número de chamadas simultâneas para qualquer ferramenta usando um semáforo — isso evita que uma dependência lenta esgote todos os processos de trabalho:
from asyncio import Semaphore
search_sem = Semaphore(10)
async def search(query):
async with search_sem:
return await tavily_search(query)Verificações de integridade
Faça ping periodicamente em cada ferramenta para detectar problemas antes dos usuários:
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}')Mostrar o status aos usuários
Quando uma ferramenta crítica estiver indisponível, informe ao usuário:
if tavily_breaker.current_state == 'open':
return 'Web search is temporarily unavailable.'Por que usar um disjuntor de circuito?
Por que usar um disjuntor de circuito em um serviço externo instável?
Recapitulação
Tempos limite em todas as chamadas. Disjuntores por ferramenta. Compartimentos isolados para concorrência. Verificações de integridade. Mensagens de alternativa controlada.
Perguntas Frequentes
A aula “Limites de tempo e disjuntores” é grátis?
Sim — o texto completo de “Limites de tempo e disjuntores” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “Limites de tempo e disjuntores”?
Limite chamadas a LLMs e ferramentas com timeouts rigorosos e utilize disjuntores para parar de sobrecarregar uma dependência com problemas. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Limites de tempo e disjuntores”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Ferramentas idempotentes e efeitos colaterais
- Novas tentativas com recuo exponencial
- Limites de tempo e disjuntores
- Validando saídas de ferramentas (Pydantic)