Gemini मॉडल के लिए टोकन और बिलिंग के लायक वर्ण की गिनती करना

जनरेटिव मॉडल, डेटा को प्रोसेस करने के लिए, उसे टोकन नाम की यूनिट में बांट देते हैं. हर मॉडल में, ज़्यादा से ज़्यादा टोकन होते हैं. ये टोकन, प्रॉम्प्ट और जवाब में इस्तेमाल किए जा सकते हैं.

इस पेज पर, Count Tokens API का इस्तेमाल करने का तरीका बताया गया है. इससे, Gemini मॉडल के लिए अनुरोध करने पर, टोकन की संख्या और बिलिंग के लायक वर्णों की संख्या का अनुमान लगाया जा सकता है. जवाब में टोकन का अनुमान लगाने के लिए कोई एपीआई नहीं है.

ध्यान दें कि Imagen मॉडल के लिए, Count Tokens API का इस्तेमाल नहीं किया जा सकता.

गिनती में कौनसी जानकारी दी जाती है?

टोकन और बिलिंग के लिए ज़रूरी वर्णों की गिनती करने के बारे में इन बातों का ध्यान रखें:

  • कुल टोकन की गिनती करना

    • इस गिनती से यह पक्का करने में मदद मिलती है कि आपके अनुरोध, अनुमति वाली कॉन्टेक्स्ट विंडो से ज़्यादा न हों.

    • टोकन की संख्या से, अनुरोध इनपुट के हिस्से के तौर पर दी गई सभी फ़ाइलों (उदाहरण के लिए, इमेज) का साइज़ पता चलेगा. यह किसी वीडियो में मौजूद इमेज या सेकंड की संख्या नहीं गिनेगा.

    • सभी Gemini मॉडल के लिए, एक टोकन लगभग चार वर्णों के बराबर होता है. 100 टोक़न, अंग्रेज़ी के करीब 60 से 80 शब्दों के बराबर होते हैं.

  • बिल किए जा सकने वाले कुल वर्णों की गिनती करना

    • वर्णों की संख्या की जानकारी से, आपको अपनी लागत को समझने और कंट्रोल करने में मदद मिलती है. ऐसा इसलिए है, क्योंकि Vertex AI के लिए, वर्णों की संख्या की जानकारी की मदद से कीमत का हिसाब लगाया जाता है.

    • बिलिंग के लिए ज़रूरी वर्णों की संख्या, अनुरोध इनपुट के हिस्से के तौर पर दिए गए टेक्स्ट में वर्णों की संख्या दिखाएगी.

पुराने Gemini मॉडल के लिए, टोकन की कीमत का हिसाब लगाने में नहीं लगाया जाता. हालांकि, Gemini 2.0 मॉडल के लिए, टोकन की कीमत का हिसाब लगाने में टोकन का इस्तेमाल किया जाता है. हर मॉडल के लिए टोकन की सीमाओं और हर मॉडल के लिए कीमत के बारे में ज़्यादा जानें.

टोकन और बिलिंग के लायक वर्णों की गिनती करने के लिए कीमत और कोटा

CountTokens एपीआई का इस्तेमाल करने के लिए, कोई शुल्क नहीं लिया जाता और कोटा की कोई पाबंदी नहीं होती. CountTokens एपीआई के लिए, हर मिनट 3,000 अनुरोध (आरपीएम) का ज़्यादा से ज़्यादा कोटा है.

कोड सैंपल

सिर्फ़ टेक्स्ट वाला इनपुट

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> countTokensResponse =
    modelFutures.countTokens(prompt);

Futures.addCallback(countTokensResponse, new FutureCallback<CountTokensResponse>() {
    @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}');

मल्टीमोडल इनपुट

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> countTokensResponse =
    modelFutures.countTokens(prompt);

Futures.addCallback(countTokensResponse, new FutureCallback<CountTokensResponse>() {
    @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}');