先日 .NET9がリリースされました。リリースノートを見ていると、気になる更新がありました。Microsoft.ML.Tokenizers
が追加されたとのことです。
OpenAIを利用したアプリケーションでトークン数をカウントしたいことは結構あります。これがあればC#でもカウントできて便利そうだったので、調べてみました。
環境
- Microsoft.ML.Tokenizers 1.0.0
- コンソールアプリ(.NET 8)
使ってみた
以下のページの手順を参考に、実際に使ってみました。
プロジェクトにパッケージ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を使ったアプリを開発する際に便利そうです。今後は積極的に利用していきたいです。