Latencia y coste por paso
Mida el uso de tokens y el tiempo transcurrido por nodo para encontrar los pasos lentos y costosos.
Latencia y coste por paso es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.
¿Por qué métricas por paso?
La latencia y el coste totales indican que el sistema es lento o caro, pero no qué paso es lento o caro. Medir cada paso es necesario para corregirlo.
Registro de la latencia
Añádala a cada span:
start = time.time()
# ... do work ...
span.duration_ms = (time.time() - start) * 1000Categorías de latencia
Pasos lentos habituales en los agentes:
- Llamada al LLM: de 500 ms a 10 s
- Búsqueda web: de 200 ms a 2 s
- Embedding: de 50 ms a 200 ms
- Consulta a la base de datos: de 5 ms a 500 ms
Registro del coste
Para los pasos de LLM, multiplique los tokens por el precio:
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}")
Agregación por traza
Acumule los spans hasta el nivel de la traza:
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
No consulte los promedios: las latencias de los agentes presentan colas largas. Informe de los percentiles:
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))Coste por usuario
Acumule diariamente el coste por user_id:
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 100Coste por nombre de paso
¿Qué pasos concentran la mayor parte del coste? Agrupe por nombre:
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 DESCCascadas de latencia
Para una traza, represente una cascada de spans al estilo de un diagrama de Gantt. La barra más larga es su cuello de botella.
La mayoría de las interfaces de trazas lo representan automáticamente.
Alerta sobre valores atípicos
- Alerta si la latencia p95 se duplica de una semana a otra
- Alerta si el coste diario supera en más de 2 veces el nivel normal
- Alerta si algún usuario individual cuesta más de $X al día
Compare dos modelos
Las métricas por paso permiten comparar modelos mediante pruebas 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")
Rastree la distribución de tokens
Un histograma de los tokens de entrada frente a los de salida revela problemas; por ejemplo, alcanzar max_tokens de forma constante = truncamiento de la salida = error.
¿Por qué percentiles?
¿Por qué informar de la latencia p95 en lugar del promedio?
Resumen
Latencia y coste por paso, agregados por traza y por usuario; percentiles en lugar de promedios; alertas sobre valores atípicos. Este es su panel.
Preguntas frecuentes
¿La lección «Latencia y coste por paso» es gratis?
Sí — el texto completo de «Latencia y coste por paso» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.
¿Qué aprenderé en «Latencia y coste por paso»?
Mida el uso de tokens y el tiempo transcurrido por nodo para encontrar los pasos lentos y costosos. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Agents?
No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Latencia y coste por paso»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Agents?
Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Por qué necesita trazas para los agentes
- Registrar llamadas a herramientas y entradas/salidas
- Latencia y coste por paso
- Visualizar ejecuciones de agentes (Langfuse, LangSmith)