OpenAIモデルのトークン数をマスターしよう - Tiktokenを使ってトークンをカウントしよう!
Published on
Tiktoken: トークンのカウントが簡単に
記事の要約:
- Tiktokenは、テキストのトークン数をカウントしたりAPIのコールコストを推定するための便利なツールである、OpenAIによって開発されたオープンソースのトークナイザーです。
- Tiktokenは、cl100k_base、p50k_base、r50k_baseの3つのエンコーディングをサポートしており、
tiktoken.encoding_for_model()
関数を使用して取得できます。 - TiktokenはPython、.NET/C#、Java、Golang、Rustなど、さまざまなプログラミング言語で利用可能です。
テキストの中にどれだけのトークンが含まれているか気になったことはありますか?または、特定のタスクにOpenAI APIを使用する場合のコストを推定したいと思ったことはありますか?正確なトークンのカウントはこれらの目的にとって重要ですが、それを実現するのがTiktokenです。このオープンソースのトークナイザーは、テキストをトークンに簡単に分割してくれるため、さまざまなアプリケーションで便利なツールとなります。
Tiktokenの紹介
Tiktokenは、テキストのトークン数をカウントしたり、OpenAI APIのコールのコストを推定するために使用できる強力なオープンソースのトークナイザーです。トークンは、単一の文字から完全な単語までの個々の単位であり、テキストを構成する要素です。トークンの数を理解することで、使用量を管理し、OpenAIモデルとの相互作用を最適化することができます。
Tiktokenでサポートされるエンコーディング
Tiktokenは、OpenAIモデルで使用される3つのエンコーディング、cl100k_base、p50k_base、およびr50k_baseをサポートしています。これらのエンコーディングによって、トークナイザーが入力テキストをどのように分割するかが決まります。エンコーディングによって、単語の分割方法、スペースのグルーピング方法、非英語の文字の扱い方が異なる場合があります。
特定のOpenAIモデルのエンコーディングを決定するには、tiktoken.encoding_for_model()
関数を使用し、モデルに適したエンコーディングを取得します。
Tiktokenのトークナイザーライブラリ
Tiktokenはさまざまなプログラミング言語で利用可能であり、お好みの言語に応じて開発者が利用できるようになっています。次のライブラリが異なるプログラミング言語用に用意されています:
- Python: tiktoken-python (opens in a new tab)
- .NET/C#: tiktoken-dotnet (opens in a new tab)
- Java: tiktoken-java (opens in a new tab)
- Golang: tiktoken-go (opens in a new tab)
- Rust: tiktoken-rs (opens in a new tab)
上記のトークナイザーライブラリへのリンクを確認することで、お好みのプログラミング言語にTiktokenをシームレスに統合することができます。
Tiktokenを使用した文字列のトークナイズ
英語では、Tiktokenは単一の文字から完全な単語までのトークンを考慮してテキスト文字列をトークナイズします。スペースは通常、単語の始まりとグループ化されます。トークナイズのプロセスを視覚化するためには、OpenAI TokenizerウェブアプリまたはTiktokenizerウェブアプリを使用し、テキストを入力してトークンにどのように分割されるかを観察することができます。
Tiktokenを使用すると、コード内で文字列を直接トークナイズすることもできます。では、PythonでTiktokenをインストールしてインポートする方法を見てみましょう。
インストールとインポート
PythonでTiktokenをインストールするには、次のコマンドを使用します:
pip install tiktoken
インストールが完了したら、次のインポート文を使用してPythonコードからtiktoken
ライブラリをインポートします:
import tiktoken
Tiktokenがインストールおよびインポートされたので、エンコーディングを読み込む方法について学びましょう。
Tiktokenでのエンコーディングの読み込み
テキスト文字列をトークナイズする前に、適切なエンコーディングを読み込む必要があります。Tiktokenのget_encoding()
関数を使用してこれを行うことができます。関数にcl100k_base
などのエンコーディング名を引数として指定します。以下に例を示します:
encoding = tiktoken.get_encoding("cl100k_base")
エンコーディングが読み込まれたら、それを使用してテキスト文字列をトークナイズすることができます。
Tiktokenを使ってテキストをトークンに変換する
Tiktokenをインストールし、いくつかの他のトークナイザーを見てきたので、Tiktokenを使用してテキストをトークンに変換する方法について詳しく見ていきましょう。
Tiktokenを使用してテキスト文字列をトークンに変換するには、以下の手順に従う必要があります:
-
Tiktokenの
get_encoding()
関数を使用して、Tiktokenによるトークナイズのプロセスが特定のOpenAIモデルと整合するように、使用するエンコーディングを読み込みます。import tiktoken encoding_name = "cl100k_base" # または "p50k_base" または "r50k_base" encoding = tiktoken.get_encoding(encoding_name)
-
読み込んだエンコーディングを使用してTiktokenトークナイザーを初期化します。
tokenizer = tiktoken.Tiktoken(encoding)
-
テキスト文字列をTiktokenトークナイザーの
tokenize()
メソッドに渡して、トークンに変換します。text = "This is an example sentence." tokens = tokenizer.tokenize(text)
-
tokenize()
メソッドはトークンのリストを返します。出力を確認するためにトークンをプリントすることができます。print(tokens)
出力:
['This', ' is', ' an', ' example', ' sentence', '.']
トークンはスペースで区切られ、句読点などは個々のトークンとして扱われることに注意してください。
これらの手順に従うことで、Tiktokenを使用して簡単に任意のテキスト文字列をトークンに変換することができます。これは特にOpenAIモデルとの作業時に役立ちます。トークンの使用量を推定し、APIのコールのコストを推定するのに役立ちます。
結論
この記事では、OpenAIによって開発されたオープンソースのトークナイザーであるTiktokenについて詳しく説明しました。テキスト内のトークン数を確認したり、OpenAI APIのコールのコストを推定するためにTiktokenの便利さを取り上げました。また、Tiktokenがサポートするエンコーディングについて学び、特定のOpenAIモデルのエンコーディングを取得する方法を紹介しました。さらに、Tiktokenがさまざまなプログラミング言語で利用可能であることや、Tiktokenを使用して文字列をトークナイズするプロセスを探求しました。最後に、Tiktokenをインストールし、ライブラリをインポートし、エンコーディングを読み込み、Tiktokenを使用してテキストをトークンに変換する方法について学びました。
Tiktokenは、OpenAIモデルとの作業やトークンの使用量を最適化する際に非常に役立つ強力なツールです。Tiktokenの機能を活用することで、開発者はOpenAI APIコールに関連するトークンの制限やコストをより効果的に管理することができます。