.NETのライブラリでトークン数をカウントする

先日 .NET9がリリースされました。リリースノートを見ていると、気になる更新がありました。Microsoft.ML.Tokenizersが追加されたとのことです。

learn.microsoft.com

OpenAIを利用したアプリケーションでトークン数をカウントしたいことは結構あります。これがあればC#でもカウントできて便利そうだったので、調べてみました。

環境

  • Microsoft.ML.Tokenizers 1.0.0
  • コンソールアプリ(.NET 8)

使ってみた

以下のページの手順を参考に、実際に使ってみました。

www.nuget.org

プロジェクトにパッケージMicrosoft.ML.Tokenizersをインストールして以下のコードを実行してみました。

using Microsoft.ML.Tokenizers;

//モデル名を指定してTokenizerを作成
Tokenizer tokenizer = TiktokenTokenizer.CreateForModel("gpt-4o");

//トークン数のカウント対象の文字列
string source = "こんにちは";

//トークン数を計算して表示
Console.WriteLine($"Tokens: {tokenizer.CountTokens(source)}");

ですが、以下の例外が発生しました。

System.InvalidOperationException: 'The tokenizer data file Microsoft.ML.Tokenizers.Data.O200kBase.dll could not be loaded. Please reference the package Microsoft.ML.Tokenizers.Data.O200kBase in your project.'

どうやら、別途O200kBaseのパッケージを導入する必要があるようです。

Microsoft.ML.Tokenizers.Data.O200kBaseを追加して、上記のコードを再度実行すると、以下のような結果になりました。

Tokens: 1

Visual StudioでMicrosoft.ML.Tokenizers.Dataを検索したところ、以下のようにたくさん出てきました。

モデルごとにエンコード方法が異なるので、対応しているパッケージが必要そうです。利用しそうなものは予めインストールしておくと安心ですね。

終わりに

BlazorなどC#でOpenAIを使ったアプリを開発する際に便利そうです。今後は積極的に利用していきたいです。

執筆担当者プロフィール
古川 貴浩

古川 貴浩(日本ビジネスシステムズ株式会社)

アプリケーション開発をしています。.NETやAI関連が好きです。

担当記事一覧