Os modelos generativos dividem os dados em unidades chamadas tokens para processamento. Cada modelo tem um número máximo de tokens que pode ser processado em um comando e uma resposta.
Nesta página, mostramos como usar a API Count Tokens para ter uma estimativa da contagem de tokens e do número de caracteres faturáveis de uma solicitação para um modelo Gemini. Não há uma API para receber a estimativa de tokens em uma resposta.
A API Count Tokens não pode ser usada para modelos Imagen.
Quais informações são fornecidas na contagem?
Observe o seguinte sobre a contagem de tokens e caracteres faturáveis:
Contagem do total de tokens
Essa contagem é útil para garantir que suas solicitações não ultrapassem a janela de contexto permitido.
A contagem de tokens vai refletir o tamanho de todos os arquivos (por exemplo, imagens) fornecidos como parte da entrada de solicitação. Ele não vai contar o número de imagens ou o número de segundos em um vídeo.
Em todos os modelos Gemini, um token equivale a cerca de quatro caracteres. 100 tokens equivalem aproximadamente a 60-80 palavras em inglês.
Contagem do total de caracteres faturáveis
Essa contagem é útil para entender e controlar seus custos, já que, para Vertex AI, o número de caracteres faz parte do cálculo de preços.
O número de caracteres faturáveis vai refletir o número de caracteres no texto fornecido como parte da entrada de solicitação.
Para modelos Gemini mais antigos, os tokens não fazem parte do cálculo de preços. No entanto, para modelos Gemini 2.0 e Gemini 2.5, os tokens são usados no cálculo de preços. Saiba mais sobre os limites de tokens por modelo e os preços por modelo.
Preços e cota para contar tokens e caracteres faturáveis
Não há cobrança ou restrição de cota para usar a API CountTokens
. A
cota máxima para a API CountTokens
é de 3.000 solicitações por minuto (RPM).
Amostras de código
Entrada somente de texto
Swift
let response = try await model.countTokens("Write a story about a magic backpack.")
print("Total Tokens: \(response.totalTokens)")
print("Total Billable Characters: \(response.totalBillableCharacters)")
Kotlin
val response = generativeModel.countTokens("Write a story about a magic backpack.")
println("Total Tokens: ${response.totalTokens}")
println("Total Billable Characters: ${response.totalBillableCharacters}")
Java
Content prompt = new Content.Builder()
.addText("Write a story about a magic backpack.")
.build();
GenerativeModelFutures modelFutures = GenerativeModelFutures.from(model);
ListenableFuture countTokensResponse =
modelFutures.countTokens(prompt);
Futures.addCallback(countTokensResponse, new FutureCallback() {
@Override
public void onSuccess(CountTokensResponse response) {
System.out.println("Total Tokens = " + response.getTotalTokens());
System.out.println("Total Billable Characters: = " +
response.getTotalBillableCharacters());
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
const { totalTokens, totalBillableCharacters } = await model.countTokens("Write a story about a magic backpack.");
console.log(`Total tokens: ${totalTokens}, total billable characters: ${totalBillableCharacters}`);
Dart
final tokenCount = await model.countTokens(Content.text("Write a story about a magic backpack."));
print('Token count: ${tokenCount.totalTokens}, billable characters: ${tokenCount.totalBillableCharacters}');
Unity
var response = await model.CountTokensAsync("Write a story about a magic backpack.");
UnityEngine.Debug.Log($"Total Tokens: {response.TotalTokens}");
UnityEngine.Debug.Log($"Total Billable Characters: {response.TotalBillableCharacters}");
entrada multimodal
Swift
let response = try await model.countTokens(image, "What's in this picture?")
print("Total Tokens: \(response.totalTokens)")
print("Total Billable Characters: \(response.totalBillableCharacters)")
Kotlin
val prompt = content {
image(bitmap)
text("What's in this picture?")
}
val response = generativeModel.countTokens(prompt)
println("Total Tokens: ${response.totalTokens}")
println("Total Billable Characters: ${response.totalBillableCharacters}")
Java
Content prompt = new Content.Builder()
.addImage(bitmap)
.addText("What's in this picture?")
.build();
GenerativeModelFutures modelFutures = GenerativeModelFutures.from(model);
ListenableFuture countTokensResponse =
modelFutures.countTokens(prompt);
Futures.addCallback(countTokensResponse, new FutureCallback() {
@Override
public void onSuccess(CountTokensResponse response) {
System.out.println("Total Tokens = " + response.getTotalTokens());
System.out.println("Total Billable Characters: = " +
response.getTotalBillableCharacters());
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
const prompt = "What's in this picture?";
const imagePart = { inlineData: { mimeType: 'image/jpeg', data: imageAsBase64 }};
const { totalTokens, totalBillableCharacters } = await model.countTokens([prompt, imagePart]);
console.log(`Total tokens: ${totalTokens}, total billable characters: ${totalBillableCharacters}`);
Dart
final prompt = TextPart("What's in the picture?");
final tokenCount = await model.countTokens([
Content.multi([prompt, imagePart])
]);
print('Token count: ${tokenCount.totalTokens}, billable characters: ${tokenCount.totalBillableCharacters}');
Unity
var response = await model.CountTokensAsync(new [] {
ModelContent.Text("What's in this picture?"),
ModelContent.InlineData("image/png", imageData)
});
UnityEngine.Debug.Log($"Total Tokens: {response.TotalTokens}");
UnityEngine.Debug.Log($"Total Billable Characters: {response.TotalBillableCharacters}");