Modele generatywne dzielą dane na jednostki zwane tokenami, aby je przetwarzać. Każdy model ma maksymalną liczbę tokenów, które może obsłużyć w prompcie i odpowiedzi.
Na tej stronie dowiesz się, jak używać interfejsu Count Tokens API, aby uzyskać szacunkową liczbę tokenów i liczbę znaków podlegających opłacie w żądaniu wysłanym do Geminimodelu. Nie ma interfejsu API, który umożliwiałby uzyskanie szacunkowej liczby tokenów w odpowiedzi.
Pamiętaj, że interfejs Count Tokens API nie może być używany w przypadku modeli Imagen.
Jakie informacje są podawane w liczbie?
Pamiętaj o tych informacjach na temat liczenia tokenów i płatnych znaków:
Zliczanie wszystkich tokenów
Ta liczba pomaga upewnić się, że żądania nie przekraczają dopuszczalnego okna kontekstowego.
Liczba tokenów będzie odzwierciedlać rozmiar wszystkich plików (np. obrazów) podanych w ramach danych wejściowych żądania. Nie będzie ona uwzględniać liczby obrazów ani liczby sekund w filmie.
W przypadku wszystkich modeli Gemini token odpowiada około 4 znakom. 100 tokenów to około 60–80 słów w języku angielskim.
Zliczanie łącznej liczby znaków podlegających opłacie
Ta liczba pomaga zrozumieć i kontrolować koszty, ponieważ w przypadku Vertex AI liczba znaków jest częścią obliczania ceny.
Liczba znaków podlegających opłacie będzie odzwierciedlać liczbę znaków w tekście podanym w ramach danych wejściowych żądania.
W przypadku starszych modeli Gemini tokeny nie są uwzględniane w obliczeniach cenowych, ale w przypadku modeli Gemini 2.0 i Gemini 2.5 są one używane do obliczania cen. Dowiedz się więcej o limitach tokenów w przypadku poszczególnych modeli i cenach poszczególnych modeli.
Ceny i limity dotyczące zliczania tokenów i płatnych znaków
Korzystanie z interfejsu CountTokens
API nie wiąże się z opłatami ani ograniczeniami dotyczącymi limitów. Maksymalny limit dla interfejsu CountTokens
API to 3000 żądań na minutę.
Przykładowe fragmenty kodu
Wprowadzanie tylko tekstu
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}");
Wielomodalne wprowadzanie danych
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}");