Đếm mã thông báo và ký tự có thể tính phí cho các mô hình Gemini

Mô hình tạo sinh chia nhỏ dữ liệu thành các đơn vị được gọi là mã thông báo để xử lý. Mỗi mô hình có một số lượng mã thông báo tối đa mà mô hình đó có thể xử lý trong một câu lệnh và câu trả lời.

Trang này cho bạn biết cách sử dụng API Count Tokens để ước tính số lượng mã thông báo và số lượng ký tự có thể tính phí cho một yêu cầu đến mô hình Gemini. Không có API để nhận số lượng mã thông báo ước tính trong một phản hồi.

Xin lưu ý rằng bạn không thể sử dụng API Count Tokens cho các mô hình Imagen.

Số liệu này cung cấp thông tin gì?

Hãy lưu ý những điều sau đây về việc tính mã thông báo và ký tự có thể tính phí:

  • Tính tổng số mã thông báo

    • Số lượng này hữu ích để đảm bảo các yêu cầu của bạn không vượt quá cửa sổ ngữ cảnh cho phép.

    • Số lượng mã thông báo sẽ phản ánh kích thước của tất cả tệp (ví dụ: hình ảnh) được cung cấp trong dữ liệu đầu vào yêu cầu. Chỉ số này sẽ không tính số lượng hình ảnh hoặc số giây trong một video.

    • Đối với tất cả mô hình Gemini, một mã thông báo tương đương với khoảng 4 ký tự. 100 mã thông báo tương đương với khoảng 60 đến 80 từ tiếng Anh.

  • Đếm tổng số ký tự có thể tính phí

    • Số lượng này hữu ích để hiểu và kiểm soát chi phí, vì đối với Vertex AI, số lượng ký tự là một phần của quá trình tính giá.

    • Số ký tự có thể tính phí sẽ phản ánh số ký tự trong văn bản được cung cấp trong dữ liệu đầu vào yêu cầu.

Đối với các mô hình Gemini cũ, mã thông báo không được tính trong quá trình tính giá; tuy nhiên, đối với các mô hình Gemini 2.0Gemini 2.5, mã thông báo được dùng trong quá trình tính giá. Tìm hiểu thêm về giới hạn mã thông báo cho mỗi mô hìnhmức giá cho mỗi mô hình.

Giá và hạn mức để tính mã thông báo và ký tự có thể tính phí

Bạn không phải trả phí hoặc bị hạn chế về hạn mức khi sử dụng API CountTokens. Hạn mức tối đa cho API CountTokens là 3.000 yêu cầu mỗi phút (RPM).

Mã mẫu

Chỉ nhập văn bản

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

Phương thức nhập đa phương thức

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