Menghitung token dan karakter yang dapat ditagih untuk model Gemini

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