Подсчет жетонов и оплачиваемых символов для моделей Gemini

Генеративные модели разбивают данные на единицы, называемые токенами для обработки. Каждая модель имеет максимальное количество токенов , которые она может обработать в подсказке и ответе.

На этой странице показано, как использовать API Count Tokens для получения оценки количества токенов и количества оплачиваемых символов для запроса к модели Gemini . API для получения оценки токенов в ответе не существует.

Обратите внимание, что API Count Tokens нельзя использовать для моделей Imagen .

Какая информация содержится в подсчете?

Обратите внимание на следующее относительно подсчета токенов и оплачиваемых символов:

  • Подсчет общего количества токенов

    • Этот счетчик полезен для того, чтобы убедиться, что ваши запросы не выходят за рамки допустимого контекстного окна.

    • Количество токенов будет отражать размер всех файлов (например, изображений), которые предоставлены как часть ввода запроса . Оно не будет учитывать количество изображений или количество секунд в видео.

    • Для всех моделей Gemini один токен эквивалентен примерно 4 символам. 100 токенов — это около 60-80 английских слов.

  • Подсчет общего количества оплачиваемых символов

    • Этот подсчет полезен для понимания и контроля ваших затрат, поскольку для Vertex AI количество символов является частью расчета цены.

    • Количество оплачиваемых символов будет отражать количество символов в тексте , предоставленном как часть входных данных запроса .

Для более старых моделей Gemini токены не являются частью расчета цены; однако для моделей Gemini 2.0 и Gemini 2.5 токены используются в расчете цены. Узнайте больше о лимитах токенов на модель и ценах на модель .

Цены и квоты для подсчета токенов и оплачиваемых символов

Нет ограничений по оплате или квотам на использование API CountTokens . Максимальная квота для API CountTokens составляет 3000 запросов в минуту (RPM).

Примеры кода

Ввод только текста

Быстрый

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

Единство

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

Мультимодальный ввод

Быстрый

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

Единство

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