Sentinelle de Budget
Prévient les facturations surprises en suivant l'utilisation des tokens et les coûts en temps réel, avec des limites strictes configurables et des callbacks d'avertissement.
const guard = new Guardian({
budget: {
model: 'gpt-4o-mini',
maxTokens: 2000,
maxCostUSD: 0.05,
onWarning: (usage) => console.warn(`Budget à ${Math.round(usage.totalTokens / 2000 * 100)}%`),
// Appelé lorsque l'utilisation dépasse 80% de la limite
},
});
const result = await guard.protect(callFn, prompt);
console.log(result.meta.budget);
// { inputTokens: 312, outputTokens: 89, totalTokens: 401, estimatedCostUSD: 0.000060, model: 'gpt-4o-mini' }Modèles Supportés et Prix (par 1M tokens)
| Modèle | Entrée | Sortie |
|---|---|---|
gpt-4o |
2,50 $ | 10,00 $ |
gpt-4o-mini |
0,15 $ | 0,60 $ |
gpt-4-turbo |
10,00 $ | 30,00 $ |
gpt-3.5-turbo |
0,50 $ | 1,50 $ |
claude-3-5-sonnet-20241022 |
3,00 $ | 15,00 $ |
claude-3-5-haiku-20241022 |
0,80 $ | 4,00 $ |
claude-3-opus-20240229 |
15,00 $ | 75,00 $ |
gemini-1.5-pro |
1,25 $ | 5,00 $ |
gemini-1.5-flash |
0,075 $ | 0,30 $ |
gemini-2.0-flash |
0,10 $ | 0,40 $ |
Utilisation Autonome
import { buildUsage, calculateCost } from '@edwinfom/ai-guard/budget';
const usage = buildUsage(312, 89, 'gpt-4o-mini');
// { inputTokens: 312, outputTokens: 89, totalTokens: 401, estimatedCostUSD: 0.000060 }
const cost = calculateCost(1000, 500, 'claude-3-5-sonnet-20241022');
// { estimatedCostUSD: 0.0105 }Gestion des Erreurs
Lorsqu'une limite stricte est dépassée, une erreur BudgetError est levée :
import { BudgetError } from '@edwinfom/ai-guard';
try {
await guard.protect(callFn, longPrompt);
} catch (err) {
if (err instanceof BudgetError) {
console.log(err.code); // 'BUDGET_EXCEEDED'
console.log(err.context); // { totalTokens: 2001, maxTokens: 2000, ... }
return Response.json({ error: 'Service temporairement limité.' }, { status: 429 });
}
}