コンテンツにスキップ
Runic
日本語
Esc
移動開く⌘Jプレビュー
このページの内容

@runic-labs/ledger

使用したトークンと節約したトークンの追記専用の集計。

@runic-labs/ledger は純粋な記録管理です。予算を強制することも、呼び出しを拒否することも、報告していないコストを見積もることもありません。答えるのは一つの問いだけです。これらの決定を解決するのに実際どれだけのコストがかかり、そのうち再利用によってどれだけ回避できたのか?

npm install @runic-labs/ledger
pnpm add @runic-labs/ledger
yarn add @runic-labs/ledger
bun add @runic-labs/ledger

createLedger(store?)

import { createLedger, FileLedgerStore, defaultLedgerFilePath } from "@runic-labs/ledger";

const ledger = createLedger(new FileLedgerStore({ filePath: defaultLedgerFilePath() }));

ストアを渡さない場合、デフォルトでは .runic/ledger.json(または $RUNIC_HOME/ledger.json)配下の FileLedgerStore になります。

PropType
recordMiss(signature, tokensSpent)?void

キャッシュミスを記録します。エージェントが独自に生成し、tokensSpent を消費しました。

Typevoid
recordHit(signature)?void

キャッシュヒットを記録し、このシグネチャに対する元のミスと同じ tokensSpent を記録します。

Typevoid
summary()?LedgerSummary

集計済みの合計値。以下を参照してください。

TypeLedgerSummary
all()?LedgerEvent[]

完全な生イベントログ。

TypeLedgerEvent[]
clear()?void

すべてのイベントを削除します。

Typevoid

LedgerSummary

interface LedgerSummary {
  totalSpent: number;
  totalSaved: number;
  hitsBySignature: Record<string, number>;
}
const summary = ledger.summary();
const totalHits = Object.values(summary.hitsBySignature).reduce((a, b) => a + b, 0);
const tokensWithoutRunic = summary.totalSpent + summary.totalSaved;
const savingsPercent = Math.round((summary.totalSaved / tokensWithoutRunic) * 100);

これは benchmarks/openrouter-savingsbenchmarks/reuse-sweep の両方が最終的な数値を表示するために使う計算と完全に同じです。詳しくは ベンチマーク を参照してください。

recordHittokensSpent 引数を受け取らない理由

ヒットの価値は、そのシグネチャに対する元のミスのコストとして定義されます。レジャーは、呼び出し元が各ヒットで正しく繰り返し指定することを信用するのではなく、自身でそれを検索します。何らかの理由でヒットしているシグネチャに先行するミスがない場合(通常の利用では起こらないはずですが、レジャーは起こり得ないと決めつけません)、推測するのではなく 0 を記録します。

ストレージバックエンド

@runic-labs/cache と同じパターンです。テストや一時的な実行には MemoryLedgerStore、別々のプロセス起動をまたいだ永続化には FileLedgerStore を使用します。別のバックエンドには、LedgerStore インターフェースを自分で実装してください。

interface LedgerStore {
  append(event: LedgerEvent): void;
  all(): LedgerEvent[];
  clear(): void;
}

次へ

  • キャッシュ — 対応するシグネチャキー付きストア
  • CLIrunic ledger status はコマンドラインからこの概要を読み取ります

このページは役に立ちましたか?