🗂

C# で Azure OpenAI Service のトークン数を数えよう 2024年5月版

2024/05/01に公開

約一年前にも C# で Azure OpenAI Service のトークン数を数えよう という記事を書きました。その時は Microsoft.DeepDev.TokenizerLib を使っていましたが、その後 Microsoft.ML.Tokenizers というライブラリが出てきて、現在はそちらに移行することが推奨されています。

https://www.nuget.org/packages/Microsoft.ML.Tokenizers

ということで、そちらの使いかたを簡単に試してみたいと思います。
一応おまけ程度のマイグレーションガイドはありますが、おまけ程度ですね…。

https://github.com/dotnet/machinelearning/blob/main/docs/code/microsoft-ml-tokenizers-migration-guide.md

使ってみよう

ということで早速試してみましょう。

Microsoft.ML.Tokenizers のインストール (注意点有り)

コンソールアプリを作成して以下の NuGet から Microsoft.ML.Tokenizers パッケージを追加します。注意点としては検証を行った 2024/05/01 時点ではプレビューバージョンの 0.22.0-preview.24179.1 を使う必要があります。0.21.1 は、マイグレーションガイドなどに書いてあるメソッドは存在していませんでした。きっと実際に必要になるころには 0.22.x がリリースされてるといいな…。
もしくは Microsoft.DeepDev.TokenizerLib を使っておいて、自前の ITokenizer インターフェースを作ってアプリではそれを使うようにするといった抽象化レイヤーを設けるのがいいと思います。そして、0.22.0 がリリースされたタイミングでその抽象化レイヤーを Microsoft.ML.Tokenizers に差し替えるといった感じですね。

トークン数を数える

使うバージョンさえ間違えなければ後は簡単です。


using Microsoft.ML.Tokenizers;

var tokenizer = Tokenizer.CreateTiktokenForModel("gpt-4");
var numberOfToken = tokenizer.CountTokens("こんにちは!トークン数を数えてね!!");
Console.WriteLine($"トークン数: {numberOfToken}");

実行すると以下のような結果になりました。

トークン数: 14

まとめ

正式リリースはよ…!!

Microsoft (有志)

Discussion