Генеративные модели разбивают данные на единицы, называемые токенами для обработки. Каждая модель имеет максимальное количество токенов , которые она может обработать в подсказке и ответе.
На этой странице показано, как использовать 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}");