OpenAIのChatGPTは素晴らしいですが、次の2つの問題に直面しています。
- ChatGPTから素晴らしいものを取得するには(特にGPT-4モデルの場合)、私たちのトークン消費に応じてお金がかかります。
- すべてのAPI(埋め込み、チャット、補完など)のプロンプトトークンに制限があります。
そのため、OpenAIにリクエストを送信する前にトークン数を計算することは重要です。
しばらく探し回っていましたが、日本語をよくサポートしているGoパッケージはほとんどないことがわかりました。最終的に、2つのパッケージを見つけました。
1. tiktoken-go
tiktoken-go
は、OpenAIの元々のtiktokenのGolang実装です。
リポジ:https://github.com/pkoukk/tiktoken-go
こちらが使用するためのコードスニペットです。
package main
import (
"fmt"
"github.com/pkoukk/tiktoken-go"
)
func main() {
text := "こんにちは!世界!"
encoding := "davinci"
tke, err := tiktoken.EncodingForModel(encoding)
if err != nil {
err = fmt.Errorf("getEncoding: %v", err)
return
}
token := tke.Encode(text, nil, nil)
fmt.Println("tiktoken: ", len(token)) // 出力: 16
return
}
2. tokenizer-go
tokenizer-goは、npmパッケージをラッピングし、JavaScript呼び出しを通じて結果を抽出する前の実装です。
リポジトリ:https://github.com/pandodao/tokenizer-go
こちらが使用するためのコードスニペットです。
package main
import (
"fmt"
"github.com/pandodao/tokenizer-go"
)
func main() {
text := "こんにちは!世界!"
t := tokenizer.MustCalToken(text)
fmt.Println("tokenizer: ", t) // 出力: 16
return
}
結論
tiktoken-go
とtokenizer-go
は、OpenAIリクエストで日本語テキストのトークン数を計算するための良いオプションです。tiktoken-go
は、OpenAIの元々のtiktokenのGolang実装であり、tokenizer-go
はnpmパッケージをラッピングしてJavaScript呼び出しを通じて結果を抽出しています。
OpenAIの制限を超過して余分なコストが発生するのを避るために、リクエストを送信する前にトークン数を計算することが重要です。この投稿が役立つことを願っています。