OpenAIのAPIリクエストを行う際には、トークン数の制限やコスト計算のために正確なトークン数を把握することが重要です。今回はフロントエンド(JavaScript/TypeScript)でトークン数を計算するためにjs-tiktokenライブラリを導入したのでその方法をメモしておきます📝
tiktokenとは?
If you need a programmatic interface for tokenizing text, check out our tiktoken package for Python. For JavaScript, the community-supported @dbdq/tiktoken package works with most GPT models. https://platform.openai.com/tokenizer
tiktokenは、OpenAIが公開しているトークナイザーのPython実装です。OpenAIのモデル(GPT-3.5, GPT-4など)が使用するトークン分割ロジックを再現しています。
JavaScriptでは、これを移植したjs-tiktokenライブラリを利用できます。
js-tiktokenのインストール
npmやpnpmなどのパッケージマネージャーを使って簡単にインストールできます。
# npmの場合 npm install js-tiktoken # pnpmの場合 pnpm add js-tiktoken
基本的な使い方
js-tiktokenを使ったトークン数計算の基本的な使い方は非常にシンプルです。以下のように実装できます:
import { Tiktoken } from "js-tiktoken/lite"; import o200k_base from "js-tiktoken/ranks/o200k_base"; // Tiktokenのインスタンスを作成 const tiktoken = new Tiktoken(o200k_base); // テキストからトークン数を計算 const text = "Hello, world!"; const tokens = tiktoken.encode(text); console.log(`トークン数: ${tokens.length}`);
コードの概要はは以下の通りです。
js-tiktoken/liteからTiktokenクラスをインポートjs-tiktoken/ranks/o200k_baseからトークナイザーモデルをインポート- 計算したいテキストを
encode()メソッドで変換し、その結果の配列の長さがトークン数になる
詳細な使い方は、READMEを参照してください。
トークナイザーの種類
js-tiktokenでは、OpenAIの各モデルで使用されている様々なトークナイザーをサポートしています。代表的なものは以下の通りです:
p50k_base- text-davinci-003などで使用cl100k_base- GPT-4およびGPT-3.5-Turboで使用o200k_base- gpt-4o系で使用
使用するモデルに応じて適切なトークナイザーを選択することで、より正確なトークン数の見積もりが可能になります。
FYI)各モデルで使用しているトークナイザーのリスト
まとめ
js-tiktokenを使うことで、OpenAIのAPIを利用するフロントエンドアプリケーションにおいて、トークン数を正確に見積もることができます。これにより、APIの制限に対する対策やコスト計算が楽になりそうですね👀✨