Compter les jetons et les caractères facturables pour les modèles Gemini

Les modèles génératifs décomposent les données en unités appelées jetons pour le traitement. Chaque modèle dispose d'un nombre maximal de jetons qu'il peut gérer dans une requête et une réponse.

Cette page vous explique comment utiliser l'API Count Tokens pour obtenir une estimation du nombre de jetons et du nombre de caractères facturables pour une requête envoyée à un modèle Gemini. Il n'existe pas d'API permettant d'obtenir l'estimation des jetons dans une réponse.

Notez que l'API Count Tokens ne peut pas être utilisée pour les modèles Imagen.

Quelles informations sont fournies dans le décompte ?

Notez les points suivants concernant le comptage des jetons et des caractères facturables:

  • Compter le nombre total de jetons

    • Ce nombre est utile pour vous assurer que vos requêtes ne dépassent pas la fenêtre de contexte autorisée.

    • Le nombre de jetons reflète la taille de tous les fichiers (images, par exemple) fournis dans l'entrée de la requête. Il ne compte pas le nombre d'images ni le nombre de secondes d'une vidéo.

    • Pour tous les modèles Gemini, un jeton équivaut à environ quatre caractères. 100 jetons correspondent à environ 60-80 mots en anglais.

  • Compter le nombre total de caractères facturables

    • Ce nombre est utile pour comprendre et contrôler vos coûts, car pour Vertex AI, le nombre de caractères fait partie du calcul des tarifs.

    • Le nombre de caractères facturables reflète le nombre de caractères dans le texte fourni dans l'entrée de la requête.

Pour les anciens modèles Gemini, les jetons ne font pas partie du calcul de la tarification. Toutefois, pour les modèles Gemini 2.0 et Gemini 2.5, les jetons sont utilisés dans le calcul de la tarification. En savoir plus sur les limites de jetons par modèle et les tarifs par modèle

Tarifs et quota pour compter les jetons et les caractères facturables

L'utilisation de l'API CountTokens n'implique aucuns frais ni quotas. Le quota maximal pour l'API CountTokens est de 3 000 requêtes par minute (RPM).

Exemples de code

Saisie de texte uniquement

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

Requêtes multimodales

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