Open5
OpenAIのAPIを利用する際のトークン数を見積もる
ChatGPTは要約タスクがとても得意だが、残念なことにOpen AIのAPIには一度に利用できるトークン数に縛りがある。
縛りを回避するためにドキュメントを分割するという手もあるが、そのためにはトークン数を見積もらなければならない。
なのでPython向けに提供されているtiktoken
というライブラリでトークン数を見積もってみる。
お手軽な方法
OpenAIが提供しているブラウザで使えるトークン測定器。テキストをペタッと貼ればトークン数を測れる。
しかしこれは3月6日現在、GPT-3にしか対応していない。
同じ文章でもモデルによってトークン数は代わり、ChatGPT相当のgpt-3.5-turbo
はGPT-3よりも数割コンパクトに収まる。
gpt-3.5-turbo
を使って限界ギリギリまで攻めるのであれば、gpt-3.5-turbo
用のトークナイザーを利用したい。
Pythonのコードで図る
まずはtiktokenをインストールする。
!pip install tiktoken
サンプルとして日本国憲法をダウンロードする。
滅多に内容が変わらないから定量化に向いている。
!mkdir ./data
!curl -L -o ./data/日本国憲法.txt https://raw.githubusercontent.com/yuki-sato/japan/master/%E6%86%B2%E6%B3%95.txt
読み込んでトークンを数える。
import tiktoken
encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")
count = 0
with open('./data/日本国憲法.txt', 'r') as f:
for data in f:
count += len(encoding.encode(data))
print(count)
結果はこちら。
17614
gpt-3.5-turbo
は一度に4000トークンしか扱えないので、日本国憲法を扱うなら5分割する必要がある。
空白を除けばもう少し圧縮できるかもしれない。
Google Colabはこちら。