Token Counter

v0.1.02026年9月26日 に追加サンプルデータ

OpenAI 互換のエンコーディング(cl100k_base、o200k_base)で BPE トークン数を数えます。トークンの一覧は作りません。

サンプルデータです。この数値は仮のもので、実測ではありません。

cargo install kura-rs
kura add token-counter

3 個のソースファイルを自分のプロジェクトにコピーします。以後、コードはあなたのものです。

別のツールの kura コマンドとぶつかる場合は、cargo install kura-rs --bin kura-rs で入れて kura-rs add を使ってください。

use crate::parts::token_counter::{Encoding, count};

let n = count(Encoding::O200kBase, &prompt);
assert!(n <= 128_000, "prompt too long: {n} tokens");

検証

サンプルデータ

tiktoken 0.9.0(Python)と差分テストで比較しました。同じ入力を両方の実装に与え、出力を突き合わせています。

参照実装
tiktoken
Python 0.9.0
テストケース
5,000
差分テスト
成功
5,000 / 5,000
すべて一致
最終実行
2026年9月26日
UTC

この数値は仮のものです。 まだ計測していないため、実際の結果として読まないでください。この部品のレジストリファイルには "sample": true が付いています。

ベンチマーク

サンプルデータ

入力サイズごとに kura-rs(Rust)と tiktoken を比べています。 入力が約 1,285 件を超えると速い。最大 1.7× 速い。

この数値は仮のものです。 まだ計測していないため、実際の結果として読まないでください。この部品のレジストリファイルには "sample": true が付いています。

kura-rs (Rust)tiktoken
1回あたりの処理時間(短いほど良い)。 網掛けの範囲では参照実装の方が速い。
数値の表を見る
入力サイズkura-rs (Rust)tiktoken倍率
1000.05 ms0.03 ms1.7× 遅い
1,0000.31 ms0.3 ms1.0× 遅い
10,0002.6 ms3.4 ms1.3×
100,00024 ms36 ms1.5×
1,000,000235 ms390 ms1.7×

ファイル

  • parts/token_counter/mod.rs
  • parts/token_counter/bpe.rs
  • parts/token_counter/ranks.rs

依存する crate