Model generatif menguraikan data menjadi unit yang disebut token untuk pemrosesan. Setiap model memiliki jumlah maksimum token yang dapat ditanganinya dalam perintah dan respons.
Halaman ini menunjukkan cara menggunakan Count Tokens API untuk mendapatkan estimasi jumlah token dan jumlah karakter yang dapat ditagih untuk permintaan ke model Gemini. Tidak ada API untuk mendapatkan estimasi token dalam respons.
Perhatikan bahwa Count Tokens API tidak dapat digunakan untuk model Imagen.
Informasi apa yang diberikan dalam jumlah?
Perhatikan hal-hal berikut tentang penghitungan token dan karakter yang dapat ditagih:
Menghitung total token
Jumlah ini berguna untuk memastikan permintaan Anda tidak melebihi periode konteks yang diizinkan.
Jumlah token akan mencerminkan ukuran semua file (misalnya, gambar) yang disediakan sebagai bagian dari input permintaan. Fitur ini tidak akan menghitung jumlah gambar atau jumlah detik dalam video.
Untuk semua model Gemini, token setara dengan sekitar 4 karakter. 100 token adalah sekitar 60-80 kata bahasa Inggris.
Menghitung total karakter yang dapat ditagih
Jumlah ini berguna untuk memahami dan mengontrol biaya Anda, karena untuk Vertex AI, jumlah karakter adalah bagian dari penghitungan harga.
Jumlah karakter yang dapat ditagih akan mencerminkan jumlah karakter dalam text yang diberikan sebagai bagian dari input request.
Untuk model Gemini lama, token bukan bagian dari penghitungan harga; tetapi, untuk model Gemini 2.0 dan Gemini 2.5, token digunakan dalam penghitungan harga. Pelajari lebih lanjut batas token per model dan harga per model.
Harga dan kuota untuk menghitung token dan karakter yang dapat ditagih
Penggunaan CountTokens
API tidak dikenai batasan biaya atau kuota. Kuota maksimum untuk CountTokens
API adalah 3.000 permintaan per menit (RPM).
Contoh kode
Input khusus teks
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}");
Input multimodal
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}");