Latência e custo por etapa
Meça o uso de tokens e o tempo decorrido por nó para encontrar as etapas lentas e caras.
Latência e custo por etapa é 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.
Por que usar métricas por etapa?
A latência e o custo totais informam que o sistema está lento ou caro — mas não informam qual etapa está lenta ou cara. A medição por etapa é necessária para corrigi-la.
Registrando a latência
Adicione isso a cada span:
start = time.time()
# ... do work ...
span.duration_ms = (time.time() - start) * 1000Categorias de latência
Etapas geralmente lentas em agentes:
- Chamada de LLM — 500 ms a 10 s
- Pesquisa na Web — 200 ms a 2 s
- Incorporação — 50 ms a 200 ms
- Consulta ao banco de dados — 5 ms a 500 ms
Registrando o custo
Para etapas de LLM, multiplique os tokens pelo preço:
PRICES = {
'gpt-4o-mini': {'in': 0.150 / 1e6, 'out': 0.600 / 1e6},
'gpt-4o': {'in': 2.50 / 1e6, 'out': 10.00 / 1e6},
'claude-sonnet-4-5': {'in': 3.00 / 1e6, 'out': 15.00 / 1e6}
}
def compute_cost(model, tokens_in, tokens_out):
p = PRICES[model]
return tokens_in * p['in'] + tokens_out * p['out']
cost = compute_cost('gpt-4o-mini', 1000, 500)
print(f"Cost for 1000 in / 500 out tokens on gpt-4o-mini: ${cost:.6f}")
Agregação por trace
Some os spans até o nível do trace:
def trace_metrics(spans):
return {
'duration_ms': sum(s.duration_ms for s in spans),
'cost_usd': sum(s.cost_usd or 0 for s in spans),
'tokens': sum((s.tokens_in or 0) + (s.tokens_out or 0) for s in spans),
'step_count': len(spans)
}
from types import SimpleNamespace
spans = [
SimpleNamespace(duration_ms=120, cost_usd=0.002, tokens_in=100, tokens_out=50),
SimpleNamespace(duration_ms=340, cost_usd=0.005, tokens_in=200, tokens_out=80),
]
print(trace_metrics(spans))
p50 / p95 / p99
Não observe as médias — as latências de agentes têm caudas longas. Informe os percentis:
import numpy as np
durations = [t.duration_ms for t in last_1000_traces]
print('p50:', np.percentile(durations, 50))
print('p95:', np.percentile(durations, 95))
print('p99:', np.percentile(durations, 99))Custo por usuário
Some o custo por user_id diariamente:
SELECT user_id, SUM(cost_usd) AS daily_cost
FROM traces
WHERE created_at::date = current_date
GROUP BY user_id
ORDER BY daily_cost DESC
LIMIT 100Custo por nome da etapa
Quais etapas dominam o custo? Agrupe por nome:
SELECT name, SUM(cost_usd) AS total
FROM spans
WHERE trace_id IN (SELECT id FROM traces WHERE created_at::date = current_date)
GROUP BY name
ORDER BY total DESCCascatas de latência
Para um trace, faça um gráfico em cascata dos spans no estilo de um diagrama de Gantt. A barra mais longa é o seu gargalo.
A maioria das interfaces de rastreamento faz isso automaticamente.
Alerta para valores atípicos
- Gere um alerta se a latência p95 dobrar de uma semana para a outra
- Gere um alerta se o custo diário ultrapassar 2 vezes o normal
- Gere um alerta se algum usuário individual custar mais de $X por dia
Compare dois modelos
As métricas por etapa permitem comparar modelos por meio de um teste A/B:
# Run 100 traces with gpt-4o-mini and 100 with haiku
# Compare p95 latency and average cost
# Pick the winner for the use case
print("Run 100 traces with gpt-4o-mini and 100 with haiku")
print("Compare p95 latency and average cost")
print("Pick the winner for the use case")
Acompanhe a distribuição de tokens
Um histograma dos tokens de entrada e de saída revela problemas: por exemplo, atingir max_tokens de forma consistente = truncamento da saída = erro.
Por que usar percentis?
Por que informar a latência p95 em vez da média?
Recapitulação
Latência e custo por etapa, agregados por trace e por usuário; percentis, não médias; alertas para valores atípicos. Esse é o seu painel.
Perguntas Frequentes
A aula “Latência e custo por etapa” é grátis?
Sim — o texto completo de “Latência e custo por etapa” é 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 “Latência e custo por etapa”?
Meça o uso de tokens e o tempo decorrido por nó para encontrar as etapas lentas e caras. 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 “Latência e custo por etapa”?
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
- Por que o rastreamento é necessário para agentes
- Registrando chamadas de ferramentas e entradas/saídas
- Latência e custo por etapa
- Visualizando execuções de agentes (Langfuse, LangSmith)