トークンの一覧表示とカウント

Vertex AI SDK for Python(1.60.0 以降)には、トークン化ツールが統合されています。これにより、API 呼び出しを行うことなく、ローカルでプロンプトのトークンを一覧表示してカウントできます。このページでは、Vertex AI SDK for Python を使用して、プロンプトのトークンとそのトークン ID を一覧表示する方法と、プロンプトのトークンの合計数を取得する方法について説明します。

トークンと、トークンのリストとカウントの重要性

生成 AI モデルは、プロンプト内のテキストなどのデータをトークンという単位に分割して処理します。データがトークンに変換される方法は、使用するトークナイザーによって異なります。トークンには、文字、単語、フレーズがあります。

各モデルには、プロンプトとレスポンスで処理できるトークンの最大数があります。プロンプトのトークン数がわかれば、この上限を超えているかどうかを確認できます。さらに、トークンをカウントすると、プロンプトの課金対象文字数も返されるため、費用の見積りも可能です。

トークンをリスト化すると、プロンプトを分割したトークンのリストが返されます。リストされている各トークンにはトークン ID に関連付けられています。これにより、モデルの動作のトラブルシューティングと分析を行うことができます。

サポートされているモデル

次の表に、トークンの一覧表示とトークンのカウントをサポートするモデルを示します。

トークンの一覧表示 トークンのカウント
gemini-1.5-flash-001 gemini-1.5-flash-001
gemini-1.5-pro-001 gemini-1.5-pro-001
gemini-1.0-pro-002
gemini-1.0-pro-vision-001

プロンプトのトークンとトークン ID のリストを取得する

次のコードサンプルは、プロンプトのトークンとトークン ID のリストを取得する方法を示しています。プロンプトにはテキストのみを含める必要があります。マルチモーダル プロンプトはサポートされていません。

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

from vertexai.preview.tokenization import get_tokenizer_for_model

# using local tokenzier
tokenizer = get_tokenizer_for_model("gemini-1.5-flash")

prompt = "hello world"
response = tokenizer.count_tokens(prompt)
print(f"Prompt Token Count: {response.total_tokens}")

prompt = ["hello world", "what's the weather today"]
response = tokenizer.count_tokens(prompt)
print(f"Prompt Token Count: {response.total_tokens}")

プロンプトのトークン数と課金対象文字数を取得する

次のコードサンプルは、プロンプトのトークン数と課金対象文字数を取得する方法を示しています。テキストのみのプロンプトとマルチモーダル プロンプトの両方がサポートされています。

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

import vertexai
from vertexai.generative_models import GenerativeModel

# TODO(developer): Update project & location
vertexai.init(project=PROJECT_ID, location=LOCATION)

# using Vertex AI Model as tokenzier
model = GenerativeModel("gemini-1.5-flash")

prompt = "hello world"
response = model.count_tokens(prompt)
print(f"Prompt Token Count: {response.total_tokens}")
print(f"Prompt Character Count: {response.total_billable_characters}")

prompt = ["hello world", "what's the weather today"]
response = model.count_tokens(prompt)
print(f"Prompt Token Count: {response.total_tokens}")
print(f"Prompt Character Count: {response.total_billable_characters}")