メインコンテンツまでスキップ

トークナイゼーション

トークンカウントは、tiktoken 互換、SentencePiece、Hugging Face JSON、モデル固有のプラグイントークナイザーをサポートし、明示的な近似フォールバックを備えたトークナイザーレジストリを通じてローカルで実行されます。

ローカルカウント

トークンカウントはマシンを離れません。レジストリはアクティブモデル用のトークナイザープロファイルを選択し、パイプラインはネットワークリクエストの前に組み立てられたコンテキストをプロセス内でカウントします。

トークナイザーレジストリ

レジストリは 4 種類のトークナイザーを受け入れます:

  • Tiktoken 互換 — OpenAI の tiktoken と互換性のある BPE トークナイザー。OpenAI モデルファミリー向け。
  • SentencePiece — SentencePiece ボキャブラリを同梱するモデル。
  • Hugging Face トークナイザー JSON — Hugging Face リポジトリの tokenizer.json ファイルをコンパクトなランク形式に変換したもの。
  • モデル固有プラグイン — プロバイダープラグインがモデル用の正確なトークナイザープロファイルを登録できます。

登録されたトークナイザーのないモデルには近似フォールバックが存在し、常に明示的にラベル付けされるため、UI は見積もりを正確なカウントとして提示しません。

組み込みプロファイル

コアは一般的なファミリー向けにオフラインプロファイルを登録しています:

  • openai:o200k_base — GPT-4o、GPT-4.1、GPT-5、o1、o3、o4 ファミリー。
  • openai:cl100k_base — GPT-4、GPT-3.5 Turbo、text-embedding-3。
  • deepseek:bytelevel-bpe-v1 — DeepSeek ファミリー。カウントは公式の tokenizer.json のランク上で、コンパクトなカウント専用エンジン(ボキャブラリとデコーダーのない BPE マージ移植)を通じて実行されます。ファイルは一度だけ変換され、data/cache/tokenizers/deepseek-v4-flash/ にアトミックな一時ファイル+リネーム書き込みでキャッシュされる小さなランクファイルになります。完全な JSON とランタイムのトークナイザーライブラリは保存も読み込みもされません。

ネットワークが利用できない場合、DeepSeek プロファイルは正直に近似プロファイルへフォールバックし、15 分間に最大 1 回再試行します — トークナイザーがなくても生成がブロックされることはありません。

近似フォールバック

未知のローカルモデルは approximate-character-v1 を使用します。これはスクリプト認識のヒューリスティックです: ラテン文字でトークンあたり約 4.6 文字、キリル文字で 4.0、CJK で 1.7、数字で 2.0 です。近似は表示されるすべての場所でフラグ付けされ、プロバイダープラグインは正確なプロファイルを登録することでいつでも置き換えられます。

プラグインプロファイル

プラグインは優先度付きでトークナイザープロファイルを登録します。優先度が -10 より高いプラグインプロファイルは、カバーするモデルについてファミリープロファイルをオーバーライドします。選択されたプロファイルは countTokenstokenizerProfiletokenizerApproximate としてパイプラインに渡されます。

トークン予算の結果

カウント後、パイプラインは PipelineResult.tokenBudget を公開します。これには以下が含まれます:

  • 使用されたトークナイザープロファイル;
  • approximate フラグ;
  • モデルのコンテキスト制限;
  • 予約済みの応答領域;
  • 最終的なプロンプトトークン数。

予算の強制方法はコンテキストシフティング を参照してください。