Proveedores y modelos soportados
AIUsage normaliza el consumo recibido de cada proveedor a un formato único:
{
"provider": "openai",
"model": "gpt-4o",
"units": {
"inputTokens": 312,
"outputTokens": 184,
"reasoningTokens": 0,
"cacheReadTokens": 0,
"cacheWriteTokens": 0,
"seconds": 0,
"units": 0
},
"rawUsage": { /* payload original del proveedor, para auditoría */ }
}
Proveedores
| Proveedor | Unidad principal | Particularidades |
|---|---|---|
| OpenAI | tokens | Reporta reasoning (o1) y cache. |
| Anthropic | tokens | Cache de contexto con costo diferenciado. |
| DeepSeek | tokens | OpenAI-compatible. |
| Groq | tokens | Inferencia rápida, sin reasoning. |
| Mistral | tokens | OpenAI-compatible. |
| Custom | depende | Vos definís el mapeo. |
normalizeUsage
Cada adapter de proveedor implementa normalizeUsage(rawProviderResponse, model) -> UnitUsage. Esto garantiza que el resto del sistema (rollup, pricing, reportes) reciba siempre la misma estructura.
Si el adapter no puede parsear la respuesta, el evento se registra con unitKind: "unknown" y costUsd: 0 para que el reporte lo muestre (Gate 0 = aviso, no bloqueo).
Configuración de credenciales
Cada proveedor se configura con un ProviderConfig:
provider: nombre canónico (openai,anthropic, ...).baseUrl: opcional, para self-hosted o proxys.credentials.secretRef: referencia a la credencial (nunca en plano).
AIUsage toma el cost de la tabla de pricing, no de la respuesta del proveedor. Esto permite definir precios propios por encima o por debajo del oficial.