使用量メーター

TsgcAIUsageMeter は、アプリケーションが言語モデルに送信するすべてのリクエストのトークン数を数え、金額に換算します。TsgcAIChat.UsageMeter に割り当て、価格表と予算を設定すると、予算に達したユーザーは次のリクエストが送信される前に拒否されます。

TsgcAIUsageMeter

プロバイダーとモデルごとの価格、ユーザーとセッションごとの累計、リクエストをブロックできる総額、日次、月次の予算、そして CSV、任意の TDataSet、OpenTelemetry コレクターへのエクスポートに対応します。

コンポーネントクラス

TsgcAIUsageMeter

用途

トークンコスト、予算、使用量のエクスポート

プラットフォーム

Windows、macOS、Linux、iOS、Android

エディション。TsgcAIUsageMeter は sgcAI、sgcWebSockets Enterprise、All-Access に含まれ、TsgcAIChat と同じエディションです。2026.11.0 の新機能です。sgcAI は単体で完結しており、コンポーネントの土台となる sgcWebSockets Core ランタイムを含みます。Delphi 7 から Delphi 13 と C++ Builder で利用できます。

すべてのリクエストの料金を計算し、ユーザーごとに上限を設ける

価格と予算を追加し、メーターをチャットに割り当てます。チャットのすべてのリクエストと、それを使うエージェントのリクエストが集計されます。

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;

主なプロパティとメソッド

最もよく使うメンバーです。

価格

Prices は、プロバイダーとモデルごとの、入力、出力、キャッシュされたトークン 100 万個あたりの価格を保持します。gpt-5* のようなモデルパターンも使え、最も具体的に一致するものが優先されます。Prices.LoadFromFile と LoadFromJSON で価格表を読み込みます。キャッシュされたトークンは CachedPerMillion で課金されます。

合計

TotalCost と TotalTokens は、全体、1 人のユーザー、1 つのセッション、または 1 つのセッション内の 1 人のユーザーの合計を返します。Records と RecordCount は、合計を変えずに直近の MaxRecords 件のリクエストを一覧表示し、Clear はすべてをリセットします。

予算

Budgets の各項目には、Scope(aubsGlobal、aubsUser、aubsSession)、任意の Key、Period(aubpTotal、aubpDay、aubpMonth)、そして MaxCost または MaxTokens の上限があります。BlockWhenExceeded を有効にすると、次のリクエストは送信前に拒否されます。

エクスポート

SaveToCSV と ToCSV は、タイムスタンプ、プロバイダー、モデル、ユーザー、セッション、トークン数、コストを、リクエストごとに 1 行で書き出します。ExportToDataSet は、フィールド名が一致する任意の TDataSet にレコードを追加します。

OpenTelemetry

OpenTelemetry.Enabled を有効にすると、すべてのリクエストが GenAI セマンティック規約に沿った OTLP/HTTP スパンになります。内容はプロバイダー、モデル、入力、出力、キャッシュされたトークン、ユーザー、セッションです。送信はバックグラウンドスレッドが行うため、チャットがコレクターを待つことはありません。

イベント

OnRecord は、料金が計算されたすべてのリクエストで発生します。OnBudgetExceeded は、上限に達したときに予算、キー、期間ごとに 1 回発生します。フォールバックのプロバイダーが応答したリクエストは、実際に応答したプロバイダーとモデルで料金が計算されます。

仕様と参考資料

このコンポーネントが利用するサービスとプロトコルの一次情報です。

さらに詳しく

オンラインヘルプsgcAI コンポーネントの完全な API リファレンスと利用ガイドです。
sgcAI の全コンポーネントすべての sgcAI コンポーネントの機能一覧を確認できます。
無料体験版をダウンロード自分の API キーで試せます。
価格Single、Team、Site の各ライセンス。完全なソースコード付きです。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

はじめてみませんか

無料体験版をダウンロードして、AI 機能の利用がユーザーごとにいくらかかっているかを把握しましょう。