1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPTトークンを計算するための2つのGoパッケージ(CJK文字のサポート)

Posted at

OpenAIのChatGPTは素晴らしいですが、次の2つの問題に直面しています。

  1. ChatGPTから素晴らしいものを取得するには(特にGPT-4モデルの場合)、私たちのトークン消費に応じてお金がかかります。
  2. すべての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-gotokenizer-goは、OpenAIリクエストで日本語テキストのトークン数を計算するための良いオプションです。tiktoken-goは、OpenAIの元々のtiktokenのGolang実装であり、tokenizer-goはnpmパッケージをラッピングしてJavaScript呼び出しを通じて結果を抽出しています。

OpenAIの制限を超過して余分なコストが発生するのを避るために、リクエストを送信する前にトークン数を計算することが重要です。この投稿が役立つことを願っています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?