টোকেন

এই নির্দেশিকাটি টোকেনগুলির একটি ভূমিকা প্রদান করে এবং ব্যাখ্যা করে কিভাবে Gemini API টোকেন ব্যবহার গণনা করা যায়। একটি সম্পর্কিত Colab টিউটোরিয়ালও উপলব্ধ।

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

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

জেমিনি এবং অন্যান্য জেনারেটিভ এআই মডেলগুলি একটি গ্রানুলিটিতে ইনপুট এবং আউটপুট প্রক্রিয়া করে যা একটি শব্দের চেয়ে ছোট কিন্তু একটি একক অক্ষর বা কোড-পয়েন্টের চেয়ে বড়: একটি টোকেন

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

মিথুন মডেলের জন্য, একটি টোকেন প্রায় 4টি অক্ষরের সমতুল্য।

যখন বিলিং সক্ষম করা হয়, একটি প্রদত্ত অনুরোধের মূল্য ইনপুট এবং আউটপুট টোকেনের সংখ্যা দ্বারা নির্ধারিত হয়, তাই টোকেনগুলি কীভাবে গণনা করতে হয় তা জানা সহায়ক হতে পারে৷

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

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

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

model_info = genai.get_model('models/gemini-1.0-pro-latest')
(model_info.input_token_limit, model_info.output_token_limit)
# (30720, 2048)

আপনি gemini-1.5-pro-latest এর মতো একটি মডেলও ব্যবহার করতে পারেন, যার একটি 1M টোকেন প্রসঙ্গ উইন্ডো রয়েছে৷

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

Gemini API একটি অনুরোধে টোকেনের সংখ্যা গণনার জন্য একটি শেষ পয়েন্ট প্রদান করে: GenerativeModel.count_tokens । আপনি GenerativeModel.generate_content এর মতো একই আর্গুমেন্ট পাস করেন এবং পরিষেবাটি সেই অনুরোধে টোকেনের সংখ্যা ফেরত দেয়।

টেক্সট টোকেন

এখানে পাঠ্য টোকেন গণনার একটি উদাহরণ রয়েছে:

model = genai.GenerativeModel('models/gemini-1.0-pro-latest')
model.count_tokens("The quick brown fox jumps over the lazy dog.")
# total_tokens: 10

আপনি যখন GenerativeModel.generate_content (বা ChatSession.send_message ) কল করেন, তখন প্রতিক্রিয়া অবজেক্টের একটি usage_metadata বৈশিষ্ট্য থাকে যাতে ইনপুট এবং আউটপুট টোকেন উভয়ই থাকে ( prompt_token_count এবং candidates_token_count ):

response = model.generate_content("The quick brown fox jumps over the lazy dog.")
response.text
# 'This sentence is an example of a pangram, which is a sentence that contains all of the letters of the alphabet.'
response.usage_metadata
# prompt_token_count: 10
# candidates_token_count: 24

মাল্টি-টার্ন টোকেন

মাল্টি-টার্ন কথোপকথন (চ্যাট) বস্তু একইভাবে কাজ করে।

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 কল করবেন তখন আপনাকে এটি ইতিহাসে যুক্ত করতে হবে।

from google.generativeai.types.content_types import to_contents
model.count_tokens(chat.history + to_contents('What is the meaning of life?'))
# total_tokens: 17

মাল্টি-মডেল টোকেন

এপিআই-এর সমস্ত ইনপুট টোকেনাইজড, ছবি এবং অন্যান্য অ-টেক্সট পদ্ধতি সহ।

ইনলাইন বিষয়বস্তু

মিডিয়া অবজেক্টগুলি অনুরোধের সাথে API ইনলাইনে পাঠানো যেতে পারে:

your_image = # get image ...
model.count_tokens(['Tell me about this image', your_image])
# total_tokens: 263

ফাইল API

আপনি যদি ফাইল API এর পরিবর্তে প্রম্পটের অংশগুলি আপলোড করেন তবে মডেলটি অভিন্ন টোকেনগুলি দেখতে পায়:

your_image_upload = genai.upload_file('image.jpg')
model.count_tokens(['Tell me about this image', your_image_upload])
# total_tokens: 263

মিডিয়া টোকেন গণনা

অভ্যন্তরীণভাবে, চিত্রগুলি একটি নির্দিষ্ট আকার, তাই তারা প্রদর্শনের আকার নির্বিশেষে একটি নির্দিষ্ট সংখ্যক টোকেন গ্রহণ করে।

image1 = # get image...
image2 = # get image...
print(image1.size)
print(model.count_tokens(image1))

print(image2.size)
print(model.count_tokens(image2))
# (2048, 1362)
# total_tokens: 258

# (1068, 906)
# total_tokens: 258

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

audio_sample = genai.upload_file('sample.mp3')
model.count_tokens(audio_sample)
# total_tokens: 83552

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

সিস্টেম নির্দেশাবলী এবং সরঞ্জামগুলিও মোটের জন্য গণনা করে, যেমন এই উদাহরণগুলিতে দেখানো হয়েছে:

genai
    .GenerativeModel()
    .count_tokens("The quick brown fox jumps over the lazy dog.")
# total_tokens: 10
genai
    .GenerativeModel(system_instruction='Talk like a pirate!')
    .count_tokens("The quick brown fox jumps over the lazy dog.")
# total_tokens: 15
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.0-pro',
                              tools=[add, subtract, multiply, divide])
model.count_tokens("The quick brown fox jumps over the lazy dog.")
# total_tokens: 194

আরও পড়া

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