বুঝুন এবং টোকেন গণনা করুন


মিথুন এবং অন্যান্য জেনারেটিভ এআই মডেলগুলি টোকেন নামক গ্রানুলিটিতে ইনপুট এবং আউটপুট প্রক্রিয়া করে।

টোকেন সম্পর্কে

টোকেন z মত একক অক্ষর বা cat মত পুরো শব্দ হতে পারে। দীর্ঘ শব্দগুলিকে কয়েকটি টোকেনে বিভক্ত করা হয়েছে। মডেল দ্বারা ব্যবহৃত সমস্ত টোকেনের সেটকে শব্দভাণ্ডার বলা হয় এবং টোকেনে পাঠ্য বিভক্ত করার প্রক্রিয়াটিকে টোকেনাইজেশন বলা হয়।

মিথুন মডেলের জন্য, একটি টোকেন প্রায় 4টি অক্ষরের সমতুল্য। 100 টোকেন প্রায় 60-80 ইংরেজি শব্দের সমান।

যখন বিলিং সক্ষম করা হয়, তখন Gemini API-তে কলের খরচ আংশিকভাবে ইনপুট এবং আউটপুট টোকেনের সংখ্যা দ্বারা নির্ধারিত হয়, তাই টোকেনগুলি কীভাবে গণনা করতে হয় তা জানা সহায়ক হতে পারে।

Colab-এ টোকেন গণনা করে দেখুন

আপনি Colab ব্যবহার করে টোকেন গণনা করে দেখতে পারেন।

ai.google.dev-এ দেখুন একটি Colab নোটবুক ব্যবহার করে দেখুন GitHub এ নোটবুক দেখুন

প্রসঙ্গ উইন্ডোজ

Gemini API-এর মাধ্যমে উপলব্ধ মডেলগুলিতে প্রসঙ্গ উইন্ডো রয়েছে যা টোকেনে পরিমাপ করা হয়। প্রসঙ্গ উইন্ডোটি নির্ধারণ করে যে আপনি কতটা ইনপুট দিতে পারবেন এবং মডেলটি কতটা আউটপুট তৈরি করতে পারে। আপনি getModels এন্ডপয়েন্টে কল করে বা মডেল ডকুমেন্টেশন দেখে প্রসঙ্গ উইন্ডোর আকার নির্ধারণ করতে পারেন।

নিম্নলিখিত উদাহরণে, আপনি দেখতে পাচ্ছেন যে gemini-1.5-flash মডেলের একটি ইনপুট সীমা প্রায় 1,000,000 টোকেন এবং আউটপুট সীমা প্রায় 8,000 টোকেন, যার মানে একটি প্রসঙ্গ উইন্ডো হল 1,000,000 টোকেন৷

from google import genai

client = genai.Client()
model_info = client.models.get(model="gemini-2.0-flash")
print(f"{model_info.input_token_limit=}")
print(f"{model_info.output_token_limit=}")
# ( e.g., input_token_limit=30720, output_token_limit=2048 )

টোকেন গণনা করুন

Gemini API থেকে সমস্ত ইনপুট এবং আউটপুট টোকেনাইজ করা হয়, যার মধ্যে পাঠ্য, চিত্র ফাইল এবং অন্যান্য নন-টেক্সট পদ্ধতি রয়েছে।

আপনি নিম্নলিখিত উপায়ে টোকেন গণনা করতে পারেন:

টেক্সট টোকেন গণনা করুন

from google import genai

client = genai.Client()
prompt = "The quick brown fox jumps over the lazy dog."

# Count tokens using the new client method.
total_tokens = client.models.count_tokens(
    model="gemini-2.0-flash", contents=prompt
)
print("total_tokens: ", total_tokens)
# ( e.g., total_tokens: 10 )

response = client.models.generate_content(
    model="gemini-2.0-flash", contents=prompt
)

# The usage_metadata provides detailed token counts.
print(response.usage_metadata)
# ( e.g., prompt_token_count: 11, candidates_token_count: 73, total_token_count: 84 )

মাল্টি-টার্ন (চ্যাট) টোকেন গণনা করুন

from google import genai
from google.genai import types

client = genai.Client()

chat = client.chats.create(
    model="gemini-2.0-flash",
    history=[
        types.Content(
            role="user", parts=[types.Part(text="Hi my name is Bob")]
        ),
        types.Content(role="model", parts=[types.Part(text="Hi Bob!")]),
    ],
)
# Count tokens for the chat history.
print(
    client.models.count_tokens(
        model="gemini-2.0-flash", contents=chat.get_history()
    )
)
# ( e.g., total_tokens: 10 )

response = chat.send_message(
    message="In one sentence, explain how a computer works to a young child."
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 25, candidates_token_count: 21, total_token_count: 46 )

# You can count tokens for the combined history and a new message.
extra = types.UserContent(
    parts=[
        types.Part(
            text="What is the meaning of life?",
        )
    ]
)
history = chat.get_history()
history.append(extra)
print(client.models.count_tokens(model="gemini-2.0-flash", contents=history))
# ( e.g., total_tokens: 56 )

মাল্টিমোডাল টোকেন গণনা করুন

জেমিনি এপিআইয়ের সমস্ত ইনপুট পাঠ্য, চিত্র ফাইল এবং অন্যান্য অ-পাঠ্য পদ্ধতিগুলি সহ টোকেনাইজড। জেমিনি এপিআই দ্বারা প্রক্রিয়াজাতকরণের সময় মাল্টিমোডাল ইনপুটটির টোকেনাইজেশন সম্পর্কে নিম্নলিখিত উচ্চ-স্তরের কী পয়েন্টগুলি নোট করুন:

  • জেমিনি ২.০ সহ, উভয় মাত্রা সহ চিত্রের ইনপুটগুলি <= 384 পিক্সেল 258 টোকেন হিসাবে গণনা করা হয়। এক বা উভয় মাত্রায় বড় চিত্রগুলি 768x768 পিক্সেলের টাইলগুলিতে প্রয়োজনীয় হিসাবে ক্রপযুক্ত এবং স্কেল করা হয়, যার প্রতিটি 258 টোকেন হিসাবে গণনা করা হয়। জেমিনি ২.০ এর আগে, চিত্রগুলি একটি স্থির 258 টোকেন ব্যবহার করে।

  • ভিডিও এবং অডিও ফাইলগুলি নিম্নলিখিত স্থির হারে টোকেনে রূপান্তরিত হয়: প্রতি সেকেন্ডে 263 টোকেন এবং অডিওতে প্রতি সেকেন্ডে 32 টোকেন এ ভিডিও।

ইমেজ ফাইল

উদাহরণ যা এপিআই ফাইল থেকে একটি আপলোড করা চিত্র ব্যবহার করে:

from google import genai

client = genai.Client()
prompt = "Tell me about this image"
your_image_file = client.files.upload(file=media / "organ.jpg")

print(
    client.models.count_tokens(
        model="gemini-2.0-flash", contents=[prompt, your_image_file]
    )
)
# ( e.g., total_tokens: 263 )

response = client.models.generate_content(
    model="gemini-2.0-flash", contents=[prompt, your_image_file]
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 264, candidates_token_count: 80, total_token_count: 345 )

উদাহরণ যা চিত্রটি ইনলাইন ডেটা হিসাবে সরবরাহ করে:

from google import genai
import PIL.Image

client = genai.Client()
prompt = "Tell me about this image"
your_image_file = PIL.Image.open(media / "organ.jpg")

# Count tokens for combined text and inline image.
print(
    client.models.count_tokens(
        model="gemini-2.0-flash", contents=[prompt, your_image_file]
    )
)
# ( e.g., total_tokens: 263 )

response = client.models.generate_content(
    model="gemini-2.0-flash", contents=[prompt, your_image_file]
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 264, candidates_token_count: 80, total_token_count: 345 )

ভিডিও বা অডিও ফাইল

অডিও এবং ভিডিও প্রতিটি নিম্নলিখিত স্থির হারে টোকেনে রূপান্তরিত হয়:

  • ভিডিও: প্রতি সেকেন্ডে 263 টোকেন
  • অডিও: প্রতি সেকেন্ডে 32 টোকেন
from google import genai
import time

client = genai.Client()
prompt = "Tell me about this video"
your_file = client.files.upload(file=media / "Big_Buck_Bunny.mp4")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not your_file.state or your_file.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", your_file.state)
    time.sleep(5)
    your_file = client.files.get(name=your_file.name)

print(
    client.models.count_tokens(
        model="gemini-2.0-flash", contents=[prompt, your_file]
    )
)
# ( e.g., total_tokens: 300 )

response = client.models.generate_content(
    model="gemini-2.0-flash", contents=[prompt, your_file]
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 301, candidates_token_count: 60, total_token_count: 361 )

সিস্টেমের নির্দেশাবলী এবং সরঞ্জাম

সিস্টেমের নির্দেশাবলী এবং সরঞ্জামগুলি ইনপুটটির জন্য মোট টোকেন গণনার দিকেও গণনা করে।

আপনি যদি সিস্টেমের নির্দেশাবলী ব্যবহার করেন তবে system_instruction সংযোজনকে প্রতিফলিত করতে total_tokens গণনা বৃদ্ধি পায়।

আপনি যদি ফাংশন কলিং ব্যবহার করেন তবে tools সংযোজন প্রতিফলিত করতে total_tokens গণনা বৃদ্ধি পায়।