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

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

এই নির্দেশিকাটি ব্যাখ্যা করে যে কীভাবে নির্দিষ্ট মডেলের প্রসঙ্গ উইন্ডোগুলি পেতে হয়, সেইসাথে টেক্সট ইনপুট, চ্যাট, মাল্টিমোডাল ইনপুট এবং সিস্টেম নির্দেশাবলী এবং সরঞ্জামগুলির মতো ব্যবহারের ক্ষেত্রে টোকেনগুলি কীভাবে গণনা করা যায়৷

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

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

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

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

ai.google.dev এ দেখুন Google Colab-এ চালান GitHub-এ উৎস দেখুন

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

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

নিম্নলিখিত উদাহরণে, আপনি দেখতে পাচ্ছেন যে gemini-1.0-pro-001 মডেলের একটি ইনপুট সীমা প্রায় 30K টোকেন এবং আউটপুট সীমা প্রায় 2K টোকেন, যার অর্থ প্রায় 32K টোকেনের একটি প্রসঙ্গ উইন্ডো৷

model_info = genai.get_model('models/gemini-1.0-pro-001')
(model_info.input_token_limit, model_info.output_token_limit)

# input_token_limit: 30720
# output_token_limit: 2048

অন্য একটি উদাহরণ হিসাবে, আপনি যদি পরিবর্তে gemini-1.5-flash-001 এর মতো একটি মডেলের জন্য টোকেন সীমার অনুরোধ করেন, আপনি দেখতে পাবেন যে এটিতে একটি 2M প্রসঙ্গ উইন্ডো রয়েছে৷

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

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

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

  • অনুরোধের ইনপুট সহ count_tokens কল করুন।
    এটি শুধুমাত্র ইনপুটে টোকেনের মোট সংখ্যা প্রদান করে। আপনার অনুরোধের আকার পরীক্ষা করার জন্য মডেলটিতে ইনপুট পাঠানোর আগে আপনি এই কলটি করতে পারেন।

  • generate_content কল করার পরে response অবজেক্টে usage_metadata বৈশিষ্ট্যটি ব্যবহার করুন।
    এটি ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই টোকেনের মোট সংখ্যা প্রদান করে (বিশেষত, prompt_token_count (ইনপুট টোকেন) এবং candidates_token_count (আউটপুট টোকেন))।

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

টেক্সট-অনলি ইনপুট সহ count_tokens কল করলে একটি total_tokens মান পাওয়া যায় যা শুধুমাত্র ইনপুটে থাকা পাঠ্যের টোকেন গণনা।

model = genai.GenerativeModel('models/gemini-1.5-flash')
prompt = "The quick brown fox jumps over the lazy dog."

print(model.count_tokens(prompt))

# total_tokens: 10

আপনি যদি generate_content কল করেন এবং response অবজেক্টে usage_metadata অ্যাট্রিবিউট ব্যবহার করেন, আপনি ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই টোকেনের মোট সংখ্যা গণনা করতে পারেন। এই বৈশিষ্ট্যটি prompt_token_count (ইনপুট টোকেন) এবং candidates_token_count (আউটপুট টোকেন) উভয়ই প্রদান করে।

model = genai.GenerativeModel('models/gemini-1.5-flash')
prompt = "The quick brown fox jumps over the lazy dog."

response = model.generate_content(prompt)
print(response.text)
print(response.usage_metadata)

# text output: 'This sentence is an example of a pangram, which is a sentence that contains all of the letters of the alphabet.'
# prompt_token_count: 10
# candidates_token_count: 24

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

চ্যাটের ইতিহাসের সাথে count_tokens কল করা একটি total_tokens মান প্রদান করে যা চ্যাটের প্রতিটি ভূমিকা থেকে পাঠ্যের টোকেন গণনা।

model = genai.GenerativeModel('models/gemini-1.5-flash')
chat = model.start_chat(history=[{'role':'user', 'parts':'Hi my name is Bob'},  {'role':'model', 'parts':'Hi Bob!'}])

model.count_tokens(chat.history)

# total_tokens: 10

আপনার পরবর্তী কথোপকথনের পালা কত বড় হবে তা বোঝার জন্য, আপনি যখন count_tokens কল করবেন তখন আপনাকে এটিকে ইতিহাসে যুক্ত করতে হবে।

model.count_tokens(chat.history + [{'role':'user', 'parts':['What is the meaning of life?']}])

# total_tokens: 17

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

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

  • চিত্রগুলিকে একটি নির্দিষ্ট আকার হিসাবে বিবেচনা করা হয়, তাই তারা তাদের প্রদর্শন বা ফাইলের আকার নির্বিশেষে একটি নির্দিষ্ট সংখ্যক টোকেন (বর্তমানে 258 টোকেন) ব্যবহার করে।

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

ইমেজ ফাইল

প্রক্রিয়াকরণের সময়, Gemini API চিত্রগুলিকে একটি নির্দিষ্ট আকার হিসাবে বিবেচনা করে, তাই তারা তাদের প্রদর্শন বা ফাইলের আকার নির্বিশেষে একটি নির্দিষ্ট সংখ্যক টোকেন (বর্তমানে 258 টোকেন) ব্যবহার করে।

একটি টেক্সট-এবং-ইমেজ ইনপুট সহ count_tokens কল করা একটি total_tokens মান প্রদান করে যা শুধুমাত্র ইনপুটে থাকা টেক্সট এবং চিত্রের সম্মিলিত টোকেন গণনা।

মনে রাখবেন যে আপনি ফাইল API ব্যবহার করে আপলোড করা ফাইল ব্যবহার করুন বা ইনলাইন ডেটা হিসাবে ফাইলটি প্রদান করুন না কেন আপনি একই total_tokens মান পাবেন।

ফাইল API থেকে আপলোড করা ছবি ব্যবহার করে এমন উদাহরণ:

model = genai.GenerativeModel('models/gemini-1.5-flash')
prompt = "Tell me about this image"
# An image's token count is always 258 tokens (regardless of its display or file size).
your_image_file = genai.upload_file(path="image.jpg")

print(model.count_tokens([prompt, your_image_file]))

# total_tokens: 263

উদাহরণ যা ইমেজটিকে ইনলাইন ডেটা হিসাবে প্রদান করে:

model = genai.GenerativeModel('models/gemini-1.5-flash')
prompt = "Tell me about this image"
# An image's token count is always 258 tokens (regardless of its display or file size).
your_image_file = # get image ...

model.count_tokens([prompt, your_image_file])

# total_tokens: 263

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

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

  • ভিডিও: প্রতি সেকেন্ডে 263 টোকেন
  • অডিও: প্রতি সেকেন্ডে 32 টোকেন

একটি টেক্সট-এবং-ভিডিও/অডিও ইনপুট সহ count_tokens কল করা একটি total_tokens মান প্রদান করে যা শুধুমাত্র ইনপুটে থাকা টেক্সট এবং ভিডিও/অডিও ফাইলের সম্মিলিত টোকেন গণনা।

model = genai.GenerativeModel('models/gemini-1.5-flash')
prompt = "Tell me about this video"
# A video or audio file is converted to tokens at a fixed rate of tokens per second.
your_media_file = genai.upload_file(path="sample.mp4")

print(model.count_tokens([prompt, your_media_file]))

# total_tokens: 83552

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

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

এই উদাহরণে, অনুরোধে শুধুমাত্র একটি টেক্সট প্রম্পট অন্তর্ভুক্ত করা হয়েছে। total_tokens গণনা নোট করুন।

model = genai.GenerativeModel('models/gemini-1.5-flash')
prompt = "The quick brown fox jumps over the lazy dog."

model.count_tokens(prompt)

# total_tokens: 10

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

model = genai.GenerativeModel(model_name='gemini-1.5-flash',
                              system_instruction='Talk like a pirate!')
prompt = "The quick brown fox jumps over the lazy dog."

model.count_tokens(prompt)

# total_tokens: 15

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

def add(a:float, b:float):
    """returns a + b."""
    return a+b

def subtract(a:float, b:float):
    """returns a - b."""
    return a-b

def multiply(a:float, b:float):
    """returns a * b."""
    return a*b

def divide(a:float, b:float):
    """returns a / b."""
    return a*b

model = genai.GenerativeModel(model_name='gemini-1.5-flash',
                              tools=[add, subtract, multiply, divide])
prompt = "The quick brown fox jumps over the lazy dog."

model.count_tokens(prompt)

# total_tokens: 194

আরও পড়া

টোকেন গণনা সম্পর্কে আরও জানতে, API রেফারেন্স দেখুন।