生成AIを使っているとよく出てくる「トークン数」
課金の単位にもなっていることも多く、気になっている方も多いかと思います。
今回はトークン数とは何?といったところから実際にトークン数を計算するところまで解説していきたいと思います。
トークン数とは
Chat GPTのトークンとは、Chat GPTが処理するテキストの基本単位であり、英語においては1単語≒1トークンとなります。
ただし、日本語においては1文字≒1~3トークンと英語に比べてトークン数が多くなるのが大きな特徴です。
Chat GPTのAPIは、文字単位ではなく、トークン単位で入力の数を計算し、APIの利用時は利用料金に関わってきます。
Chat GPTのAPIの最大トークン数は4096トークンで、それよりも大きなトークンを入力した場合はエラーとなってしまいます。
利用料金の削減や処理速度を速めるためにトークン数をできるだけ削減した入力を意識することが重要になります。
トークン数の計算
そんな重要なトークン数ですが、Chat GPTでは入力しているときに教えてくれないという不親切ぶりなので、トークン数を計算するプログラムを作成し、計算してみます。
今回使うコードは以下になります。
# パッケージのインストール
!pip install tiktoken
import tiktoken
#chatにトークン計算したい文章を入力
chat="おはようございます"
encoding_35 = tiktoken.encoding_for_model("gpt-3.5-turbo-0301")
encoding_4 = tiktoken.encoding_for_model("gpt-4-0314")
def calc_token(chat, encoding_name):
encoding = tiktoken.get_encoding(encoding_name)
num_tokens = len(encoding.encode(chat))
return num_tokens
print("GPT3.5のトークン数:", calc_token(chat, encoding_35.name))
print("GPT4のトークン数 :", calc_token(chat, encoding_4.name))
GPT3.5のトークン数: 6
GPT4のトークン数 : 6
「おはようございます」のトークン数はGPT3.5、GPT4ともに6となりました。
ちなみに同じ意味で英語のトークン数について調べてみると。
chat="good morning"
print("GPT3.5のトークン数:", calc_token(chat, encoding_35.name))
print("GPT4のトークン数 :", calc_token(chat, encoding_4.name))
GPT3.5のトークン数: 2
GPT4のトークン数 : 2
やはり英語のほうがトークン数少なくすみますね。
ライブラリ
今回使ったライブラリですが、tiktokenというOpenAI公式のBPEトークナイザーです。
詳しく知りたい方はこちらをご覧ください。
BPEトークナイザーという聞きなれない単語が出てきましたが、BPEはバイトペアエンコーディングという文字列の圧縮手法(例えば出現頻度が高い2文字を使われていない1文字に変換するなど)、トークナイザーはそれをトークンに分割するプログラムのことを示しており、それを合わせてBPEトークナイザーといいます。
ここを掘っていくとかなり難しくなっていくので、現時点ではChat GPTの入力分をトークンに分割するところまでやってくれるものと思っておきましょう。
今回使ったGPT3.5、GPT4以外にもダヴィンチやバベッジなどのモデルも対応しているそう。
まとめ
今回はChat GPTのトークン数を計算する手法について解説しました。
トークン数はAIと会話するうえで今後重要になってくる項目なので、生成AIを使うときには意識してみてください。
コメント