Skip to content
Esta página fue generada y traducida con asistencia de IA. Si encuentra alguna imprecisión, no dude en ayudar a mejorarla. Editar en GitHub

Seguimiento de costos

PRX incluye un sistema de seguimiento de costos integrado que monitorea el consumo de tokens y el gasto en API a traves de todos los proveedores LLM. El CostTracker acumula el uso por solicitud, por sesion y por proveedor -- dandote visibilidad completa de como tus agentes consumen recursos de API.

Vision general

Cada solicitud LLM en PRX genera un registro TokenUsage que contiene tokens de entrada, tokens de salida y el costo asociado. Estos registros son agregados por el CostTracker y pueden consultarse para informes, aplicacion de presupuestos y deteccion de anomalias.

LLM Request

    ├── Provider returns usage metadata
    │   (input_tokens, output_tokens, cache hits)


TokenUsage record created

    ├── Accumulated into CostTracker
    │   ├── Per-request breakdown
    │   ├── Per-session totals
    │   ├── Per-provider totals
    │   └── Per-model totals

    ├── Budget check (if limits configured)
    │   ├── Under budget → continue
    │   └── Over budget → warning / hard stop

    └── Written to observability pipeline
        (metrics, logs, tracing spans)

Configuracion

Habilita y configura el seguimiento de costos en config.toml:

toml
[cost]
enabled = true

# Currency for display purposes (does not affect calculations).
currency = "USD"

# How often to flush accumulated costs to persistent storage.
flush_interval_secs = 60

# Persist cost data across restarts.
persist = true
persist_path = "~/.local/share/openprx/cost.db"

Limites de presupuesto

Establece limites de gasto para prevenir costos desbocados:

toml
[cost.budget]
# Daily spending limit across all providers.
daily_limit = 10.00

# Monthly spending limit.
monthly_limit = 200.00

# Per-session limit (resets when a new session starts).
session_limit = 2.00

# Action when a limit is reached: "warn" or "stop".
# "warn" logs a warning but allows requests to continue.
# "stop" blocks further LLM requests until the period resets.
on_limit = "warn"

Limites por proveedor

Sobreescribe los limites de presupuesto para proveedores especificos:

toml
[cost.budget.providers.openai]
daily_limit = 5.00
monthly_limit = 100.00

[cost.budget.providers.anthropic]
daily_limit = 8.00
monthly_limit = 150.00

Estructura TokenUsage

Cada solicitud LLM produce un registro TokenUsage:

CampoTipoDescripcion
input_tokensu64Numero de tokens en el prompt (sistema + usuario + contexto)
output_tokensu64Numero de tokens en la respuesta del modelo
cache_read_tokensu64Tokens servidos desde cache del proveedor (cache de prompts de Anthropic)
cache_write_tokensu64Tokens escritos en cache del proveedor
total_tokensu64input_tokens + output_tokens
costf64Costo estimado en la moneda configurada
providerstringNombre del proveedor (ej., "openai", "anthropic")
modelstringIdentificador del modelo (ej., "gpt-4o", "claude-sonnet-4-20250514")
timestampdatetimeCuando se realizo la solicitud
session_idstringSesion del agente que genero la solicitud

CostTracker

El CostTracker es el punto central de agregacion para todo el uso de tokens. Mantiene totales acumulados por proveedor, por modelo, por sesion, diarios (se reinicia a medianoche UTC) y mensuales (se reinicia el dia 1). El rastreador es thread-safe y se actualiza despues de cada respuesta LLM.

Datos de precios

PRX mantiene una tabla de precios integrada para proveedores y modelos comunes. Los precios se definen por millon de tokens:

ProveedorModeloEntrada (por 1M)Salida (por 1M)
OpenAIgpt-4o$2.50$10.00
OpenAIgpt-4o-mini$0.15$0.60
OpenAIo3$10.00$40.00
Anthropicclaude-sonnet-4-20250514$3.00$15.00
Anthropicclaude-haiku-35-20241022$0.80$4.00
Anthropicclaude-opus-4-20250514$15.00$75.00
Googlegemini-2.0-flash$0.075$0.30
DeepSeekdeepseek-chat$0.14$0.28

Precios personalizados

Sobreescribe o agrega precios para modelos que no estan en la tabla integrada:

toml
[cost.pricing."openai/gpt-4o"]
input_per_million = 2.50
output_per_million = 10.00

[cost.pricing."custom/my-model"]
input_per_million = 1.00
output_per_million = 3.00

Para modelos auto-alojados (Ollama, vLLM) donde las llamadas API son gratuitas, establece el precio en cero:

toml
[cost.pricing."ollama/llama3"]
input_per_million = 0.0
output_per_million = 0.0

Informes de uso

Comandos CLI

bash
# View current session cost summary
prx cost

# View daily breakdown
prx cost --period daily

# View monthly breakdown by provider
prx cost --period monthly --group-by provider

# View costs for a specific date range
prx cost --from 2026-03-01 --to 2026-03-15

# Export to CSV
prx cost --period monthly --format csv > costs.csv

# Export to JSON (for programmatic consumption)
prx cost --period daily --format json

Ejemplo de salida

PRX Cost Report (2026-03-21)
════════════════════════════════════════════════════
Provider     Model                   Tokens (in/out)    Cost
─────────────────────────────────────────────────────────────
anthropic    claude-sonnet-4-20250514      45.2K / 12.8K    $0.33
openai       gpt-4o                  22.1K / 8.4K     $0.14
openai       gpt-4o-mini              8.3K / 3.1K     $0.00
─────────────────────────────────────────────────────────────
Total                                75.6K / 24.3K    $0.47

Budget Status:
  Session: $0.47 / $2.00 (23.5%)
  Daily:   $3.82 / $10.00 (38.2%)
  Monthly: $42.15 / $200.00 (21.1%)

Alertas de presupuesto

Cuando el costo se acerca a un limite de presupuesto, PRX toma accion segun la configuracion on_limit:

Umbralon_limit = "warn"on_limit = "stop"
80% del limiteRegistrar advertenciaRegistrar advertencia
100% del limiteRegistrar error, continuarBloquear solicitudes LLM, notificar al usuario
Reinicio del limite (nuevo dia/mes)Contadores reiniciadosContadores reiniciados, solicitudes desbloqueadas

Las alertas de presupuesto tambien se emiten como eventos de observabilidad. Cuando las metricas de Prometheus estan habilitadas, se exportan los siguientes gauges:

prx_cost_daily_total{currency="USD"} 3.82
prx_cost_monthly_total{currency="USD"} 42.15
prx_cost_session_total{currency="USD"} 0.47
prx_cost_budget_daily_remaining{currency="USD"} 6.18
prx_cost_budget_monthly_remaining{currency="USD"} 157.85

Integracion con observabilidad

Los datos de costo se integran con la pila de observabilidad de PRX:

  • Prometheus -- conteos de tokens y gauges de costo por proveedor/modelo
  • OpenTelemetry -- atributos de span prx.tokens.input, prx.tokens.output, prx.cost
  • Logs -- costo por solicitud registrado a nivel DEBUG, advertencias de presupuesto a nivel WARN

Notas de seguridad

  • Los datos de costo pueden revelar patrones de uso. Restringe el acceso a los informes de costo en despliegues multi-usuario.
  • La base de datos persistente de costos (cost.db) contiene historial de uso. Incluyela en tu estrategia de respaldo.
  • Los limites de presupuesto se aplican localmente. No interactuan con los limites de gasto del lado del proveedor. Configura ambos para defensa en profundidad.

Paginas relacionadas

Released under the Apache-2.0 License.