Modele generatywne dzielą dane na jednostki zwane tokenami w celu ich przetwarzania. Każdy model ma maksymalną liczbę tokenów, które może obsłużyć w promptach i odpowiedziach.
Na tej stronie dowiesz się, jak użyć interfejsu Count Tokens API, aby uzyskać szacunkową liczbę tokenów i liczbę znaków podlegających rozliczeniu w żądaniu do modelu Gemini. Nie ma interfejsu API, który umożliwiałby uzyskanie szacowanej liczby tokenów w odpowiedzi.
Pamiętaj, że interfejsu Count Tokens API nie można używać w przypadku modeli Imagen.
Jakie informacje są podawane w liczbie?
Pamiętaj o tych kwestiach dotyczących zliczania tokenów i znaków podlegających opłacie:
Zliczanie łącznej liczby tokenów
Ta liczba jest przydatna, ponieważ pozwala sprawdzić, czy żądania nie przekraczają dozwolonego okna kontekstu.
Liczba tokenów będzie odzwierciedlać rozmiar wszystkich plików (np. obrazów), które są dostarczane jako część 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.
Liczenie łącznej liczby znaków podlegających opłacielności
Ta liczba jest przydatna do zrozumienia i kontrolowania kosztów, ponieważ w przypadku Vertex AI liczba znaków jest uwzględniana w obliczeniach cen.
Liczbę znaków podlegających rozliczeniu oblicza się na podstawie liczby znaków w tekście podanym w danych wejściowych żądania.
W przypadku starszych modeli Gemini tokeny nie są uwzględniane w obliczeniach cen. Jednak w modelach Gemini 2.0 i Gemini 2.5 tokeny są używane w obliczeniach cen. Dowiedz się więcej o limitach tokenów na model i cenach na model.
Ceny i limity dotyczące zliczania tokenów i znaków podlegających opłacie
Korzystanie z interfejsu API CountTokens
nie wiąże się z opłatami ani ograniczeniami dotyczącymi limitu. Maksymalny limit interfejsu API CountTokens
to 3000 żądań na minutę (RPM).
Przykładowe fragmenty kodu
Dane wejściowe tylko z tekstem
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}");
Dane multimodalne
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}");