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

このページでは、プロンプトのトークンの数と課金対象文字数を取得する方法について説明します。

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

次のマルチモーダル モデルは、プロンプトのトークン数の取得をサポートしています。

  • gemini-1.0-pro
  • gemini-1.0-pro-vision

プロンプトのトークン数を取得する

Vertex AI API を使用して、プロンプトのトークンの数と課金対象文字数を取得できます。

Python

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

import vertexai
from vertexai.generative_models import GenerativeModel

def generate_text(project_id: str, location: str) -> str:
    # Initialize Vertex AI
    vertexai.init(project=project_id, location=location)

    # Load the model
    model = GenerativeModel("gemini-1.0-pro")

    # prompt tokens count
    print(model.count_tokens("why is sky blue?"))

    # Load example images
    response = model.generate_content("why is sky blue?")

    # response tokens count
    print(response._raw_response.usage_metadata)
    return response.text

Node.js

このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Vertex AI Node.js API のリファレンス ドキュメントをご覧ください。

Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

const {VertexAI} = require('@google-cloud/vertexai');

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function countTokens(
  projectId = 'PROJECT_ID',
  location = 'us-central1',
  model = 'gemini-1.0-pro'
) {
  // Initialize Vertex with your Cloud project and location
  const vertexAI = new VertexAI({project: projectId, location: location});

  // Instantiate the model
  const generativeModel = vertexAI.getGenerativeModel({
    model: model,
  });

  const req = {
    contents: [{role: 'user', parts: [{text: 'How are you doing today?'}]}],
  };

  const countTokensResp = await generativeModel.countTokens(req);
  console.log('count tokens response: ', countTokensResp);
}

REST

Vertex AI API を使用して、プロンプトのトークン数と請求対象文字数を取得するには、パブリッシャー モデル エンドポイントに POST リクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION: リクエストを処理するリージョン。使用できる選択肢は以下のとおりです。

    クリックして利用可能なリージョンを開く

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: 実際のプロジェクト ID
  • MODEL_ID: 使用するマルチモーダル モデルのモデル ID。次のオプションがあります。
    • gemini-1.0-pro-vision
    • gemini-1.0-pro
  • ROLE: コンテンツに関連付けられた会話におけるロール。単一ターンのユースケースでも、ロールの指定が必要です。指定できる値は以下のとおりです。
    • USER: 送信するコンテンツを指定します。
  • TEXT: プロンプトに含める指示のテキスト。
  • IMAGE_BYTES: 文字ではなくバイトのシーケンス。
  • FILE_URI: プロンプトに含める画像または動画の Cloud Storage URI。ファイルを格納するバケットは、リクエストを送信するプロジェクトと同じ Google Cloud プロジェクトに存在する必要があります。MIMETYPE も指定する必要があります。
  • MIME_TYPE: data または fileUri フィールドで指定された画像、PDF、動画のメディアタイプ。指定できる値は次のとおりです。

    クリックして MIME タイプを開く

    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:countTokens

リクエストの本文(JSON):

{
  "contents": {
    "role": "ROLE",
    "parts": [
      {
        "inlineData": {
          "mimeType": "MIME_TYPE",
          "data": "IMAGE_BYTES"
        }
      },
      {
        "fileData": {
          "mimeType": "MIME_TYPE",
          "fileUri": "FILE_URI"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  },
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:countTokens"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:countTokens" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

画像または動画を含むテキストの場合の curl コマンドの例:

MODEL_ID="gemini-1.0-pro-vision"
PROJECT_ID="my-project"
PROMPT="Provide a summary with about two sentences for the following article."

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:computeTokens-d \
$'{
  "contents": [
    { "prompt": "'"$PROMPT"'" }
    { "inlineData": {"'"$MIME_TYPE"'": "image/jpeg", "data": "'"$IMAGE_BYTES"'" } },
    { "fileData": {"mimeType": "video/avi", "fileUri":"'"$FILE_URI"'" } } ] }}

テキストのみの場合の curl コマンドの例:

MODEL_ID="gemini-1.0-pro-vision"
PROJECT_ID="my-project"
PROMPT="Provide a summary with about two sentences for the following article."

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:computeTokens-d \
$'{
  "contents": [
    { "prompt": "'"$PROMPT"'"}
  ],
}'

料金と割り当て

CountTokens API の使用に料金や割り当ての制限はありません。CountTokens API と ComputeTokens API の最大の割り当ては、1 分あたり 3,000 リクエストです。

次のステップ