احتساب الرموز والشخصيات التي يتم تحصيل رسومها لنماذج Gemini

تقسّم النماذج التوليدية البيانات إلى وحدات تُعرف باسم الرموز المميزة لتتم معالجتها. يحتوي كل نموذج على الحد الأقصى لعدد الرموز المميزة التي يمكنه معالجتها في الطلب والاستجابة.

توضّح لك هذه الصفحة كيفية استخدام واجهة برمجة التطبيقات Count Tokens للحصول على تقدير لعدد الرموز المميزة وعدد الأحرف القابلة للفوترة لطلب من نموذج Gemini. لا تتوفّر واجهة برمجة تطبيقات للحصول على تقدير لعدد الرموز المميزة في ردّ.

يُرجى العِلم أنّه لا يمكن استخدام واجهة Count Tokens API مع نماذج Imagen.

ما هي المعلومات المقدَّمة في العدد؟

يُرجى مراعاة ما يلي بشأن احتساب الرموز المميزة والأحرف القابلة للفوترة:

  • احتساب إجمالي الرموز المميزة

    • ويساعد هذا العدد في التأكّد من أنّ طلباتك لا تتجاوز حجم نافذة السياق المسموح به.

    • سيعكس عدد الرموز المميزة حجم جميع الملفات (مثل الصور) التي يتم تقديمها كجزء من بيانات طلب الإدخال. لن يتم احتساب عدد الصور أو عدد الثواني في الفيديو.

    • في جميع نماذج Gemini، يعادل الرمز المميز حوالي 4 أحرف. تتألف 100 من الرموز المميزة من 60 إلى 80 كلمة إنجليزية.

  • احتساب إجمالي الأحرف القابلة للفوترة

    • يفيدك هذا العدد في فهم تكاليفك والتحكّم فيها، لأنّ عدد الأحرف يشكّل جزءًا من عملية احتساب الأسعار في Vertex AI.

    • سيعكس عدد الأحرف القابلة للفوترة عدد الأحرف في النص المقدَّم كجزء من إدخال الطلب.

في نماذج Gemini القديمة، لا تشكّل الرموز المميزة جزءًا من عملية احتساب الأسعار، ولكن في نماذج Gemini 2.0 وGemini 2.5، يتم استخدام الرموز المميزة في عملية احتساب الأسعار. مزيد من المعلومات عن حدود الرموز المميزة لكل نموذج والأسعار لكل نموذج

التسعير والحصة المخصّصة لاحتساب الرموز المميزة والأحرف القابلة للفوترة

لا يتم تحصيل أي رسوم أو فرض أي قيود على الحصة لاستخدام واجهة برمجة التطبيقات CountTokens. الحد الأقصى للحصة المتاحة لواجهة برمجة التطبيقات CountTokens هو 3000 طلب في الدقيقة (RPM).

عيّنات تعليمات برمجية

الإدخال النصي فقط

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

إدخال متعدد الوسائط

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