こんにちは。codepoet です。
はじめに
プレビュー機能として、Vertex AI SDK for Pythonに、トークンリストとカウント機能が追加されました。この機能を使うと、プロンプト内のトークンを簡単に確認でき、コストの予測も正確に行えるようになります。
目次
トークンとは?
トークンとは、自然言語処理において、文章を意味のある最小単位に分割したものです。例えば、「吾輩は猫である。」という文章は、複数のトークンに分割されます。単語や句読点だけでなく、サブワードや文字の一部がトークンとなる場合もあります。生成AIモデルは、これらのトークンを基に文章を生成したり、理解したりします。トークンの数は、AIが処理する量に影響するため、重要です。
トークンを数えることで、以下のメリットがあります。
- コスト予測: プロンプトの長さに応じて料金が発生するため、トークン数を把握することでコストを予測できます。
- プロンプト最適化: トークン数の上限を超えないようにプロンプトを調整することができます。
- モデル理解: トークンのリストを見ることで、モデルがどのように文章を解釈しているのかの理解に役立ちます。
トークンのリストとカウント方法
トークンのリストを取得する例:
from vertexai.preview.tokenization import get_tokenizer_for_model
# トークナイザを取得
tokenizer = get_tokenizer_for_model("gemini-1.5-flash")
# プロンプトのトークンを取得
prompt = "吾輩は猫である。"
response = tokenizer.count_tokens(prompt)
print(f"トークン数: {response.total_tokens}")
# トークンの分割箇所を検証
prompt = "吾輩は"
response = tokenizer.count_tokens(prompt)
print(f"トークン数: {response.total_tokens}")
'吾', '輩', 'は', '猫', 'である', '。'
に分割されていそうですね。
トークン数と課金対象文字数を取得する例:
import vertexai
from vertexai.generative_models import GenerativeModel
# プロジェクトとロケーションを設定
vertexai.init(project=PROJECT_ID, location=LOCATION)
# モデルを取得
model = GenerativeModel("gemini-1.5-flash")
# トークン数と課金対象文字数を取得
prompt = "吾輩は猫である。"
response = model.count_tokens(prompt)
print(f"トークン数: {response.total_tokens}")
print(f"課金対象文字数: {response.total_billable_characters}")
まとめ
トークンリストとカウント機能を使うことで、プロンプト内のトークンを効率的に確認、コストを管理できるようになります。ぜひ活用してみてください。