Usage Meter

TsgcAIUsageMeter compte les tokens de chaque requête que ton application envoie à un modèle de langage et les convertit en argent. Affecte-le à TsgcAIChat.UsageMeter, donne-lui une liste de prix et un budget, et un utilisateur qui atteint le budget est refusé avant l'envoi de la requête suivante.

TsgcAIUsageMeter

Des prix par fournisseur et par modèle, des totaux cumulés par utilisateur et par session, des budgets globaux, quotidiens ou mensuels qui peuvent bloquer une requête, et des exports vers CSV, n'importe quel TDataSet et un collecteur OpenTelemetry.

Classe du composant

TsgcAIUsageMeter

Rôle

Coûts en tokens, budgets et export de l'usage

Famille

Chat et agents

Plateformes

Windows, macOS, Linux, iOS et Android

Éditions. TsgcAIUsageMeter est livré dans sgcAI, dans sgcWebSockets Enterprise et dans All-Access, les mêmes éditions que TsgcAIChat. Nouveauté de la version 2026.11.0. sgcAI est autonome : il inclut le runtime sgcWebSockets Core sur lequel le composant repose. Disponible pour Delphi 7 à Delphi 13 et C++ Builder.

Chiffrer chaque requête, plafonner chaque utilisateur

Ajoute un prix, ajoute un budget, affecte le compteur au chat. Chaque requête du chat, et celle d'un agent qui l'utilise, est comptée.

uses
  sgcAI, sgcAI_Chat, sgcAI_UsageMeter;

procedure TForm1.MeterUsage;
var
  oPrice: TsgcAIUsagePrice;
  oBudget: TsgcAIUsageBudget;
begin
  oPrice := sgcAIUsageMeter1.Prices.Add; // or Prices.LoadFromFile('prices.json')
  oPrice.Provider := 'openai';
  oPrice.Model := 'gpt-5*';
  oPrice.InputPerMillion := 1.25;
  oPrice.OutputPerMillion := 10;
  oPrice.CachedPerMillion := 0.125;

  oBudget := sgcAIUsageMeter1.Budgets.Add; // every user can spend 2 USD a day
  oBudget.Scope := aubsUser;
  oBudget.Period := aubpDay;
  oBudget.MaxCost := 2;
  sgcAIUsageMeter1.OnBudgetExceeded := DoBudgetExceeded;

  // optional: one OpenTelemetry span per request
  sgcAIUsageMeter1.OpenTelemetry.Enabled := True;
  sgcAIUsageMeter1.OpenTelemetry.Endpoint := 'http://localhost:4318';

  sgcAIChat1.UserId := 'user-1';
  sgcAIChat1.UsageMeter := sgcAIUsageMeter1;
  Memo1.Lines.Add(sgcAIChat1.Chat('Hello'));

  Memo1.Lines.Add(Format('user-1 spent %.6f %s and %d tokens',
    [sgcAIUsageMeter1.TotalCost('user-1'), sgcAIUsageMeter1.Currency,
    sgcAIUsageMeter1.TotalTokens('user-1')]));
  sgcAIUsageMeter1.SaveToCSV('usage.csv');
end;

procedure TForm1.DoBudgetExceeded(Sender: TObject;
  const aBudget: TsgcAIUsageBudget; const aKey: string; aCost: Double;
  aTokens: Int64);
begin
  Memo1.Lines.Add(Format('Budget "%s" reached by %s: %.4f USD',
    [aBudget.DisplayName, aKey, aCost]));
end;

Propriétés et méthodes clés

Les membres que tu utilises le plus souvent.

Prix

Prices contient le prix par million de tokens d'entrée, de sortie et en cache de chaque fournisseur et modèle. Les motifs de modèle comme gpt-5* sont acceptés et la correspondance la plus précise l'emporte. Prices.LoadFromFile et LoadFromJSON chargent une liste de prix. Les tokens en cache sont facturés avec CachedPerMillion.

Totaux

TotalCost et TotalTokens retournent les totaux de l'ensemble, d'un utilisateur, d'une session ou d'un utilisateur dans une session. Records et RecordCount listent les dernières requêtes (jusqu'à MaxRecords) sans modifier les totaux, Clear remet tout à zéro.

Budgets

Chaque élément de Budgets possède un Scope (aubsGlobal, aubsUser ou aubsSession), une Key facultative, une Period (aubpTotal, aubpDay ou aubpMonth) et une limite MaxCost ou MaxTokens. Avec BlockWhenExceeded, la requête suivante est refusée avant d'être envoyée.

Export

SaveToCSV et ToCSV écrivent une ligne par requête avec l'horodatage, le fournisseur, le modèle, l'utilisateur, la session, les tokens et le coût. ExportToDataSet ajoute les enregistrements à n'importe quel TDataSet dont les noms de champs correspondent.

OpenTelemetry

Avec OpenTelemetry.Enabled, chaque requête devient un span OTLP/HTTP suivant les conventions sémantiques GenAI : fournisseur, modèle, tokens d'entrée, de sortie et en cache, utilisateur et session. Un thread d'arrière-plan l'envoie, le chat n'attend donc jamais le collecteur.

Événements

OnRecord se déclenche pour chaque requête chiffrée. OnBudgetExceeded se déclenche une fois par budget, clé et période quand la limite est atteinte. Les requêtes traitées par un fournisseur de fallback sont chiffrées avec le fournisseur et le modèle qui ont répondu.

Spécifications et références

Les sources faisant autorité pour les services et protocoles utilisés par ce composant.

Pour aller plus loin

Aide en ligneRéférence complète de l'API et guide d'utilisation des composants sgcAI.
Tous les composants sgcAIParcours la matrice complète des fonctionnalités de chaque composant sgcAI.
Télécharger l'essai gratuitEssaie-le avec tes propres clés API.
TarifsLicences Single, Team et Site, code source complet.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Prêt à te lancer ?

Télécharge l'essai gratuit et sache ce que coûte chaque utilisateur de tes fonctions d'IA.