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

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

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

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

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

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

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

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

トークンのリスト化 トークンのカウント
gemini-1.5-flash-002 gemini-1.5-flash-002
gemini-1.5-pro-002 gemini-1.5-pro-002
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

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

# Count Tokens
prompt = "why is the sky blue?"
response = tokenizer.count_tokens(prompt)
print(f"Tokens count: {response.total_tokens}")
# Example response:
#       Tokens count: 6

# Compute Tokens
response = tokenizer.compute_tokens(prompt)
print(f"Tokens list: {response.tokens_info}")
# Example response:
#     Tokens list: [TokensInfo(token_ids=[18177, 603, 573, 8203, 3868, 235336],
#          tokens=[b'why', b' is', b' the', b' sky', b' blue', b'?'], role='user')]

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

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

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-002")

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

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