Menghitung token dan karakter yang dapat ditagih untuk model Gemini

Model generatif menguraikan data menjadi unit yang disebut token untuk diproses. Setiap model memiliki jumlah token maksimum yang dapat ditangani dalam perintah dan respons.

Halaman ini menunjukkan cara menggunakan Count Tokens API untuk mendapatkan perkiraan 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 terkait penghitungan token dan karakter yang dapat ditagih:

  • Menghitung total token

    • Jumlah ini berguna untuk memastikan permintaan Anda tidak melebihi jendela konteks yang diizinkan.

    • Jumlah token akan mencerminkan ukuran semua file (misalnya, gambar) yang diberikan 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 setara dengan 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 yang lebih lama, token bukan bagian dari penghitungan harga; namun, 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 biaya atau batasan kuota. Kuota maksimum untuk CountTokens API adalah 3.000 permintaan per menit (RPM).

Contoh kode

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