Contare i token e i caratteri fatturabili per i modelli Gemini

I modelli generativi suddividono i dati in unità chiamate token per l'elaborazione. Ogni modello ha un numero massimo di token che può gestire in un prompt e una risposta.

Questa pagina mostra come utilizzare l'API Count Tokens per ottenere una stima del conteggio dei token e del numero di caratteri fatturabili per una richiesta a un modello Gemini. Non esiste un'API per ottenere la stima dei token in una risposta.

Tieni presente che l'API Count Tokens non può essere utilizzata per i modelli Imagen.

Quali informazioni vengono fornite nel conteggio?

Tieni presente quanto segue per il conteggio dei token e dei caratteri fatturabili:

  • Conteggio dei token totali

    • Questo conteggio è utile per assicurarti che le richieste non superino la finestra di contesto consentita.

    • Il conteggio dei token riflette le dimensioni di tutti i file (ad esempio le immagini) forniti nell'input della richiesta. Non viene conteggiato il numero di immagini o il numero di secondi di un video.

    • Per tutti i modelli Gemini, un token equivale a circa 4 caratteri. 100 token corrispondono a circa 60-80 parole in inglese.

  • Contare il numero totale di caratteri fatturabili

    • Questo conteggio è utile per comprendere e controllare i costi, poiché per Vertex AI il numero di caratteri fa parte del calcolo del prezzo.

    • Il numero di caratteri fatturabili riflette il numero di caratteri nel testo fornito nell'input della richiesta.

Per i modelli Gemini meno recenti, i token non fanno parte del calcolo del prezzo. Tuttavia, per i modelli Gemini 2.0 e Gemini 2.5, i token vengono utilizzati nel calcolo del prezzo. Scopri di più sui limiti di token per modello e sui prezzi per modello.

Prezzi e quote per il conteggio di token e caratteri fatturabili

Non sono previsti costi o limitazioni di quota per l'utilizzo dell'API CountTokens. La quota massima per l'API CountTokens è di 3000 richieste al minuto (RPM).

Esempi di codice

Input di solo testo

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}");

Input multimodale

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}");