مدل های مولد داده ها را به واحدهایی به نام توکن برای پردازش تجزیه می کنند. هر مدل دارای حداکثر تعداد نشانه هایی است که می تواند در یک اعلان و پاسخ به آنها رسیدگی کند.
این صفحه به شما نشان میدهد که چگونه از Count Tokens API برای تخمین تعداد توکنها و تعداد نویسههای قابل پرداخت برای درخواست یک مدل Gemini استفاده کنید. API برای دریافت تخمین توکن ها در پاسخ وجود ندارد.
توجه داشته باشید که Count Tokens API را نمی توان برای مدل های Imagen استفاده کرد.
چه اطلاعاتی در شمارش ارائه می شود؟
در مورد شمارش توکن ها و کاراکترهای قابل پرداخت به موارد زیر توجه کنید:
شمارش کل توکن ها
این تعداد برای اطمینان از اینکه درخواستهای شما از پنجره زمینه مجاز عبور نمیکنند مفید است.
تعداد توکن ها اندازه همه فایل ها (به عنوان مثال، تصاویر) را که به عنوان بخشی از ورودی درخواست ارائه می شوند، منعکس می کند. تعداد تصاویر یا تعداد ثانیه های یک ویدیو را محاسبه نمی کند.
برای تمام مدل های جمینی، یک توکن معادل حدود 4 کاراکتر است. 100 توکن حدود 60-80 کلمه انگلیسی است.
شمارش کل کاراکترهای قابل پرداخت
این تعداد برای درک و کنترل هزینههای شما مفید است، زیرا برای Vertex AI ، تعداد کاراکترها بخشی از محاسبه قیمت است.
تعداد کاراکترهای قابل صورتحساب، تعداد نویسههای متن ارائهشده به عنوان بخشی از ورودی درخواست را نشان میدهد.
برای مدلهای قدیمی Gemini ، توکنها بخشی از محاسبه قیمت نیستند . با این حال، برای مدلهای Gemini 2.0 و Gemini 2.5 ، توکنها در محاسبه قیمتگذاری استفاده میشوند. درباره محدودیت های توکن در هر مدل و قیمت هر مدل بیشتر بیاموزید.
قیمت گذاری و سهمیه شمارش نشانه ها و کاراکترهای قابل پرداخت
هیچ محدودیتی برای استفاده از CountTokens
API وجود ندارد. حداکثر سهمیه برای CountTokens
API 3000 درخواست در دقیقه (RPM) است.
نمونه کد
ورودی فقط متن
سویفت
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}');
وحدت
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}");
ورودی چندوجهی
سویفت
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}');
وحدت
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}");