Madogiwa Blog

主に技術系の学習メモに使っていきます。

`js-tiktoken`を使ってJavaScriptでOpenAIのトークン数を計算する方法メモ📝

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など)が使用するトークン分割ロジックを再現しています。

github.com

JavaScriptでは、これを移植したjs-tiktokenライブラリを利用できます。

github.com

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}`);

コードの概要はは以下の通りです。

  1. js-tiktoken/liteからTiktokenクラスをインポート
  2. js-tiktoken/ranks/o200k_baseからトークナイザーモデルをインポート
  3. 計算したいテキストをencode()メソッドで変換し、その結果の配列の長さがトークン数になる

詳細な使い方は、READMEを参照してください。

github.com

トークナイザーの種類

js-tiktokenでは、OpenAIの各モデルで使用されている様々なトークナイザーをサポートしています。代表的なものは以下の通りです:

  • p50k_base - text-davinci-003などで使用
  • cl100k_base - GPT-4およびGPT-3.5-Turboで使用
  • o200k_base - gpt-4o系で使用

使用するモデルに応じて適切なトークナイザーを選択することで、より正確なトークン数の見積もりが可能になります。

FYI)各モデルで使用しているトークナイザーのリスト

github.com

まとめ

js-tiktokenを使うことで、OpenAIのAPIを利用するフロントエンドアプリケーションにおいて、トークン数を正確に見積もることができます。これにより、APIの制限に対する対策やコスト計算が楽になりそうですね👀✨

参考リンク