Usage Meter

TsgcAIUsageMeter conta i token di ogni richiesta che la tua applicazione invia a un modello linguistico e li trasforma in denaro. Assegnalo a TsgcAIChat.UsageMeter, dagli un listino prezzi e un budget, e un utente che raggiunge il budget viene rifiutato prima dell'invio della richiesta successiva.

TsgcAIUsageMeter

Prezzi per provider e modello, totali progressivi per utente e sessione, budget totali, giornalieri o mensili che possono bloccare una richiesta, ed esportazione in CSV, in qualsiasi TDataSet e verso un collector OpenTelemetry.

Classe del componente

TsgcAIUsageMeter

Scopo

Costi dei token, budget ed esportazione dei consumi

Famiglia

Chat e agenti

Piattaforme

Windows, macOS, Linux, iOS e Android

Edizioni. TsgcAIUsageMeter è incluso in sgcAI, in sgcWebSockets Enterprise e in All-Access, le stesse edizioni di TsgcAIChat. Novità della versione 2026.11.0. sgcAI è autonomo: include il runtime sgcWebSockets Core su cui è costruito il componente. Disponibile per Delphi da 7 a 13 e per C++ Builder.

Calcola ogni richiesta, limita ogni utente

Aggiungi un prezzo, aggiungi un budget, assegna il contatore alla chat. Viene conteggiata ogni richiesta della chat, e anche quelle di un agente che la usa.

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;

Proprietà e metodi principali

I membri che userai più spesso.

Prezzi

Prices contiene il prezzo per milione di token di input, output e in cache di ogni provider e modello. Sono ammessi pattern di modello come gpt-5* e vince la corrispondenza più specifica. Prices.LoadFromFile e LoadFromJSON caricano un listino. I token in cache sono fatturati con CachedPerMillion.

Totali

TotalCost e TotalTokens restituiscono i totali di tutto, di un utente, di una sessione o di un utente in una sessione. Records e RecordCount elencano le ultime MaxRecords richieste senza modificare i totali, Clear azzera tutto.

Budget

Ogni elemento di Budgets ha uno Scope (aubsGlobal, aubsUser o aubsSession), una Key opzionale, un Period (aubpTotal, aubpDay o aubpMonth) e un limite MaxCost o MaxTokens. Con BlockWhenExceeded la richiesta successiva viene rifiutata prima di essere inviata.

Esportazione

SaveToCSV e ToCSV scrivono una riga per richiesta con timestamp, provider, modello, utente, sessione, token e costo. ExportToDataSet aggiunge i record a qualsiasi TDataSet con campi dello stesso nome.

OpenTelemetry

Con OpenTelemetry.Enabled ogni richiesta diventa uno span OTLP/HTTP con le convenzioni semantiche GenAI: provider, modello, token di input, output e in cache, utente e sessione. Un thread in background lo invia, così la chat non aspetta mai il collector.

Eventi

OnRecord scatta per ogni richiesta calcolata. OnBudgetExceeded scatta una volta per budget, chiave e periodo quando il limite viene raggiunto. Le richieste servite da un provider di fallback sono calcolate con il provider e il modello che ha risposto.

Specifiche e riferimenti

Fonti autorevoli per i servizi e i protocolli usati da questo componente.

Continua a esplorare

Guida onlineRiferimento API completo e guida all'utilizzo dei componenti sgcAI.
Tutti i componenti sgcAIEsplora la matrice delle funzionalità di ogni componente sgcAI.
Scarica la versione di prova gratuitaProvalo con le tue chiavi API.
PrezziLicenze Single, Team e Site, codice sorgente completo.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Pronto per iniziare?

Scarica la versione di prova gratuita e scopri quanto costa ogni utente delle tue funzioni di IA.