API CountTokens

A API CountTokens calcula o número de tokens de entrada antes de enviar uma solicitação à API Gemini. Use a API CountTokens para evitar que as solicitações excedam a janela de contexto do modelo e estime os possíveis custos com base em caracteres faturáveis.

Os usuários podem enviar o mesmo parâmetro contents que eles usam com as solicitações de inferência da API Gemini.

Modelos compatíveis:

  • Gemini 1.0 Pro
    • gemini-1.0-pro
    • gemini-1.0-pro-001
    • gemini-1.0-pro-002
  • Gemini 1.0 Pro Vision
    • gemini-1.0-pro-vision
    • gemini-1.0-pro-vision-001
  • Gemini 1.0 Ultra
    • gemini-1.0-ultra
    • gemini-1.0-ultra-001
  • Gemini 1.0 Ultra Vision
    • gemini-1.0-ultra-vision
    • gemini-1.0-ultra-vision-001
  • Gemini 1.5 Pro
    • gemini-1.5-pro-preview-0409
  • Gemini Experimental
    • gemini-experimental

Limitações:

  • gemini-1.0-pro-vision-001 e gemini-1.0-ultra-vision-001 usam um número fixo de tokens para entradas de vídeo

Sintaxe

  • PROJECT_ID = PROJECT_ID
  • REGION = REGION
  • MODEL_ID = MODEL_ID

curl

https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:countTokens \
  -d '{
    "contents": [{
      ...
    }]
  }'

Python

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.count_tokens([...])

Lista de parâmetros

Essa classe consiste em duas properties principais: role e parts. A property role indica o indivíduo que produz o conteúdo, enquanto a property parts contém vários elementos, cada um representando um segmento de dados em uma mensagem.

Parâmetros

role

Opcional: string

A identidade da entidade que cria a mensagem. Defina a string com uma das seguintes opções:

  • user: indica que a mensagem foi enviada por uma pessoa real. Por exemplo, uma mensagem gerada pelo usuário.
  • model: indica que a mensagem é gerada pelo modelo.

O valor model é usado para inserir mensagens do modelo na conversa durante conversas com vários turnos.

Para conversas que não têm vários turnos, esse campo pode ser deixado em branco ou sem definição.

parts

part

Uma lista de partes ordenadas que compõem uma única mensagem. Partes diferentes podem ter tipos MIME IANA distintos.

Parte

Parâmetros

text

Opcional: string

Um comando de texto ou snippet de código.

inline_data

Opcional: blob

Dados inline em bytes brutos.

file_data

Opcional: FileData

Dados armazenados em um arquivo.

Blob

Parâmetros

mime_type

string

Tipo MIME IANA dos dados.

data

bytes

Bytes brutos.

FileData

Parâmetros

mime_type

string

Tipo MIME IANA dos dados.

file_uri

string

O URI do Cloud Storage para o arquivo que armazena os dados

Exemplos

  • PROJECT_ID = PROJECT_ID
  • REGION = REGION
  • MODEL_ID = MODEL_ID

Caso de uso básico

Este exemplo mostra o uso com um único comando de texto.

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:countTokens \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Write a story about a magic backpack."
      }]
    }]
  }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.count_tokens("Write a story about a magic backpack.")

print(model_response)

Caso de uso avançado

Este exemplo mostra o uso de mídia em um único comando

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:countTokens \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [
        {
          "file_data": {
            "file_uri": "gs://cloud-samples-data/generative-ai/video/pixel8.mp4",
            "mime_type": "video/mp4"
          }
        },
        {
          "text": "Provide a description of the video."
        }
      ]
    }]
  }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel, Part

vertexai.init(project=PROJECT_ID, location=REGION)

contents = [
    Part.from_uri(
        "gs://cloud-samples-data/generative-ai/video/pixel8.mp4", mime_type="video/mp4"
    ),
    "Provide a description of the video.",
]

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.count_tokens(contents)

print(model_response)

Mais informações

Para consultar a documentação detalhada, acesse: