خانه / هوش مصنوعی (AI) / شمارش توکن‌ها با Tiktoken: از مفاهیم پایه تا کاربردهای پیشرفته

شمارش توکن‌ها با Tiktoken: از مفاهیم پایه تا کاربردهای پیشرفته

شمارش توکن‌ها با Tiktoken: از مفاهیم پایه تا کاربردهای پیشرفته

نویسنده:

انتشار:

به‌روزرسانی:

تعداد نظرات: 0

زمان مطالعه: 12 دقیقه

در دنیای امروز که مدل‌های زبانی و سیستم‌های مولد هوش مصنوعی در مرکز بسیاری از محصولات نرم‌افزاری قرار گرفته‌اند، مدیریت صحیح توکن‌ها به یکی از مهم‌ترین مهارت‌های توسعه‌دهندگان تبدیل شده است. همه چیز از همین نقطه شروع می‌شود: توکنایزیشن؛ فرایندی که متن را به واحدهای کوچکی به نام توکن تبدیل می‌کند تا مدل هوش مصنوعی بتواند آن را پردازش کند.

از درک عملکرد توکن‌ها گرفته تا شمارش و بهینه‌سازی آن‌ها، هر مرحله تاثیر مستقیمی روی هزینه، سرعت و کیفیت خروجی مدل دارد. به‌همین دلیل، توسعه‌دهندگان باید بدانند توکن‌ها چگونه تولید می‌شوند، چطور شمارش می‌شوند و چگونه می‌توان مصرف آن‌ها را کاهش داد.

در این مقاله به صورت قدم‌به‌قدم به مفاهیم پایه توکنایزیشن، اهمیت تعداد توکن‌ها، روش‌های مختلف شمارش توکن‌ها (به‌ویژه با Tiktoken)، و استراتژی‌های عملی برای کاهش هزینه‌ها پرداخته‌ایم تا دیدی جامع و کاربردی در اختیار شما قرار گیرد.

درک مفهوم Tokenization

تا حالا به این فکر کرده‌اید که مدل‌های هوش مصنوعی چطور زبان انسان را می‌فهمند؟ پاسخ این سوال در توکنایزیشن نهفته است. توکنایزیشن یعنی شکستن متن به بخش‌های کوچک‌تری که به آن‌ها توکن گفته می‌شود. این توکن‌ها ممکن است یک کاراکتر باشند یا یک کلمه کامل.

پایتون به‌عنوان یکی از محبوب‌ترین زبان‌ها در حوزه هوش مصنوعی، ابزارها و کتابخانه‌های متنوعی برای انجام توکنایزیشن در اختیار توسعه‌دهندگان قرار می‌دهد و این کار را بسیار ساده می‌کند.

مفاهیم پایه توکنایزیشن

توکنایزیشن یعنی تبدیل یک رشته‌ متنی به مجموعه‌ای از بخش‌های کوچک‌تر به نام توکن. این توکن‌ها واحدهای اصلی هستند که مدل‌های زبانی برای درک و تولید متن از آن‌ها استفاده می‌کنند.

نکته مهم اینجاست که توکنایزیشن فقط جداسازی کلمات با استفاده از فاصله نیست. در فرایند توکنایزیشن، علائم نگارشی، کاراکترهای خاص و حتی بخش‌هایی از یک کلمه نیز می‌توانند به‌عنوان یک توکن جداگانه در نظر گرفته شوند. نحوه‌ انجام این فرایند بسته به مدل زبانی و نوع tokenizer مورد استفاده می‌تواند متفاوت باشد.

مثال ساده‌ای از Tokenization

برای اینکه ببینیم یک متن چگونه توکنایز می‌شود، می‌توانیم از ابزار Tokenizer استفاده کنیم. برای مثال، جمله‌:

«Natural-language processing is key.»

به شکل زیر توکنایز می‌شود:

[‘Natural’, ‘-‘, ‘language’, ‘ processing’, ‘ is’, ‘ key’, ‘.’]

این شکستن متن به بخش‌های کوچک‌تر، برای درک نحوه محاسبه تعداد توکن‌ها بسیار مهم است.

در پایتون، با استفاده از کتابخانه‌هایی مثل tiktoken می‌توان رشته‌های متنی را خیلی سریع به توکن تبدیل کرد. به‌عنوان نمونه، با تابع tokenize می‌توان از هر رشته‌ متنی یک فهرست از توکن‌ها ساخت. این روش در کارهای مختلفی مثل سیستم‌های مولد متن و پردازش زبان طبیعی بسیار کاربردی است. وقتی مفهوم توکن را درک کنید و از ابزارهایی مثل NLTK کمک بگیرید، مدیریت فرایند توکنایزیشن دقیق‌تر و کم‌هزینه‌تر انجام می‌شود.

اهمیت تعداد توکن‌ها برای بهینه‌سازی هزینه‌ها

اهمیت تعداد توکن

در مدل‌های هوش مصنوعی، هزینه و عملکرد مستقیما با تعداد توکن‌ها گره خورده است. هرچه ورودی و خروجی طولانی‌تر باشد، مصرف توکن و در نتیجه هزینه افزایش پیدا می‌کند. به همین دلیل، مدیریت و بهینه‌سازی تعداد توکن‌ها برای توسعه‌دهندگان ضروری است تا هم هزینه کنترل شود و هم مدل بدون خطا عمل کند.

۱. تاثیر مستقیم بر هزینه API

تعداد توکن‌های ورودی و خروجی، مستقیما هزینه استفاده از مدل‌های هوش مصنوعی را تعیین می‌کند. هرچه تعداد توکن‌ها بیشتر باشد، هزینه نیز افزایش پیدا می‌کند. بنابراین مدیریت توکن‌ها برای کاهش هزینه اهمیت زیادی دارد.

۲. محدودیت‌های هر مدل

هر مدل یک سقف مشخص برای تعداد توکن دارد (مثلا GPT-3.5 حدود ۴٬۰۹۶ توکن). اگر ورودی از این حد عبور کند، ممکن است خطا بگیرید یا مدل نتواند پاسخ کامل بدهد. بنابراین کنترل تعداد توکن به جلوگیری از خطا و هزینه‌های اضافه کمک می‌کند.

۳. استفاده بهینه از منابع

با شناخت فرایند توکنایزیشن می‌توانید پرامپت‌ها را مختصرتر بنویسید و مشخص کنید چه بخش‌هایی از متن واقعا باید پردازش شوند. این کار مانع هدررفت توکن‌ها روی اطلاعات غیرضروری می‌شود و منابع را بهتر مدیریت می‌کند.

۴. کنترل طول خروجی مدل

با تنظیم مقدار max_tokens می‌توانید طول پاسخ مدل را محدود کنید. این کار باعث می‌شود اندازه پاسخ‌ها قابل‌پیش‌بینی باشد و هزینه‌ها از کنترل خارج نشوند.

۵. پردازش دسته‌ای (Batch Processing)

دانستن تعداد توکن‌ها موقع تقسیم مجموعه‌داده‌های بزرگ به چند بخش کوچک‌تر بسیار کمک می‌کند. به این صورت از محدودیت توکن در هر درخواست API جلوگیری می‌کنید و هم هزینه، هم عملکرد بهینه‌تر می‌شود.

در نهایت، هر چه تعداد توکن‌های شما بیشتر باشد، هزینه نهایی نیز افزایش پیدا می‌کند. بنابراین استفاده‌ هوشمندانه و بهینه از توکن‌ها فقط یک موضوع فنی نیست؛ بلکه یک راهکار موثر برای صرفه‌جویی در هزینه‌ها است.

راهنمای گام‌به‌گام برای به‌دست‌آوردن تعداد توکن‌ها در پایتون

شمارش توکن در پایتون

محاسبه تعداد توکن‌ها در پایتون ساده است.

گام ۱: ابزارها و کتابخانه‌های موردنیاز برای Tokenization

پایتون ابزارها و کتابخانه‌های زیادی دارد که توکنایزیشن را برای کارهای پردازش زبان طبیعی آسان‌تر می‌کنند. یکی از گزینه‌های شناخته‌شده NLTK (Natural Language Toolkit) است. این کتابخانه چندین tokenizer مختلف دارد که بسته به نیاز می‌توان از آن‌ها استفاده کرد؛ مانند word tokenizer در NLTK که متن را به کلمات جداگانه تبدیل می‌کند.

گزینه‌ عالی دیگر کتابخانه Tiktoken از OpenAI است. Tiktoken یک توکنایزر سریع است که مخصوص مدل‌های OpenAI، شامل GPT-3 و GPT-4، طراحی شده است. این کتابخانه از الگوریتم کارامد Byte Pair Encoding (BPE) استفاده می‌کند که آن را برای این مدل‌ها بسیار مناسب می‌سازد.

نصب این کتابخانه‌ها با pip، مدیر بسته‌های پایتون، بسیار ساده است. برای مثال، برای نصب Tiktoken کافی است دستور زیر را وارد کنید:

گام ۲: پیاده‌سازی شمارش توکن در کد پایتون

اضافه‌کردن شمارش توکن به پروژه‌های پایتونی بسیار آسان است. ابتدا باید یک کتابخانه مثل Tiktoken را ایمپورت کنید: import tiktoken. سپس encoding مناسب مدل OpenAI پروژه‌تان را بارگذاری کنید. به‌عنوان مثال، اگر از gpt-3.5-turbo استفاده می‌کنید، بنویسید:

برای شمارش توکن‌های موجود در متن، از متد encode مربوط به encoding استفاده کنید. برای مثال:

سپس با بررسی طول لیست tokens تعداد توکن‌ها را به‌دست آورید:

فراموش نکنید که به‌جای «Your text string» متن واقعی خود را قرار دهید. با همین چند خط ساده، می‌توانید مصرف توکن را در اپلیکیشن‌های هوش مصنوعی پایتونی بررسی و بهینه‌سازی کنید.

برای راحتی کار، می‌توانید مستقیما کد زیر را کپی کنید:

استراتژی‌های بهینه‌سازی توکن برای کاهش هزینه‌های هوش مصنوعی

استراتژی های بهینه شمارش توکن

بهینه‌سازی مصرف توکن نقش بسیار مهمی در کاهش هزینه‌های توسعه هوش مصنوعی دارد. می‌توانید از رویکردهای زیر استفاده کنید:

۱- ساده‌ کردن متن ورودی

یکی از بهترین روش‌ها برای بهینه‌سازی توکن‌ها، ساده‌تر کردن متن ورودی است. در بسیاری از مواقع، متن شامل جزئیات اضافی، تکرارها یا عباراتی است که فهم آن‌ها دشوار است و در نتیجه تعداد توکن را بدون هیچ سود واقعی افزایش می‌دهد. همچنین بررسی کنید که آیا می‌توان همان اطلاعات را با استفاده کمتر از متادیتا یا توضیحات طولانی منتقل کرد.

به یاد داشته باشید:

متن کوتاه‌تر و شفاف‌تر نه‌تنها تعداد توکن‌ها را کاهش می‌دهد، بلکه معمولا باعث ارتباط بهتر با مدل هوش مصنوعی و تولید خروجی دقیق‌تر و مفیدتر می‌شود.

۲- بهینه‌سازی پرامپت‌ها

نحوه‌ طراحی پرامپت‌ها برای مدل‌های مولد هوش مصنوعی اهمیت زیادی دارد. پرامپت‌های خوب هم پاسخ‌های باکیفیت‌تری تولید می‌کنند و هم باعث مصرف کمتر توکن می‌شوند. از زبان ساده استفاده کنید و مطمئن شوید که در پرامپت شما هیچ ابهامی وجود ندارد. همچنین می‌توانید ساختارهای مختلف پرامپت را امتحان کنید تا بهترین روش برای انتقال منظور خود را پیدا کنید.

به یاد داشته باشید:

وقتی پرامپت به‌درستی طراحی شده باشد، مدل بهتر عمل می‌کند و از پاسخ‌های طولانی و غیرضروری که تعداد توکن را بالا می‌برد جلوگیری می‌شود.

۳- استفاده از توکنایزرهای کارآمدتر

انتخاب tokenizer مناسب و شیوه‌ کدگذاری آن تاثیر زیادی روی مصرف توکن دارد. مهم است که گزینه‌های مختلف tokenizer را بررسی کنید و تنظیمات آن‌ها را امتحان کنید تا تعداد توکن‌ها کاهش پیدا کند.

برای مثال، اگر بیشتر از مدل‌های GPT شرکت OpenAI استفاده می‌کنید، بهترین انتخاب tokenizer مخصوص آن‌ها یعنی Tiktoken است. Tiktoken از الگوریتم Byte Pair Encoding (BPE) استفاده می‌کند که برای این مدل‌ها طراحی شده و معمولا عملکرد بهتری نسبت به گزینه‌های عمومی‌تر دارد.

چگونه با Tiktoken توکن‌ها را بشماریم؟

Tiktoken یک کتابخانه‌ متن‌باز و بسیار سریع برای توکن‌سازی است که توسط OpenAI ساخته شده است. این ابزار متن را به توکن‌هایی تبدیل می‌کند که مدل‌های GPT دقیقا بر اساس آن‌ها ورودی را می‌فهمند و پردازش می‌کنند. Tiktoken از الگوریتم Byte Pair Encoding (BPE) استفاده می‌کند که آن را برای مدل‌های GPT بسیار بهینه و دقیق می‌کند.

مزیت اصلی Tiktoken سرعت بالا، دقت زیاد و سازگاری کامل با مدل‌های OpenAI است؛ به همین دلیل برای توسعه‌دهندگانی که روی بهینه‌سازی هزینه و مدیریت تعداد توکن‌ها کار می‌کنند، یکی از بهترین گزینه‌هاست.

در ادامه نحوه شمارش توکن‌ها با Tiktoken را بررسی می‌کنیم.

Encodingها

Encoding‌ها مشخص می‌کنند که متن چگونه به توکن تبدیل شود. مدل‌های مختلف از encoding‌های متفاوتی استفاده می‌کنند. کتابخانه tiktoken سه نوع encoding را پشتیبانی می‌کند که در مدل‌های OpenAI استفاده می‌شوند:

نام Encoding مدل‌های OpenAI
o200k_base gpt-4o، gpt-4o-mini
cl100k_base gpt-4-turbo، gpt-4، gpt-3.5-turbo، text-embedding-ada-002، text-embedding-3-small، text-embedding-3-large
p50k_base مدل‌های Codex، text-davinci-002، text-davinci-003
r50k_base (یا gpt2) مدل‌های GPT-3 مانند davinci

شما می‌توانید encoding مربوط به یک مدل را با استفاده از تابع ‎tiktoken.encoding_for_model()‎ به صورت زیر به‌دست آورید:

توجه داشته باشید که p50k_base تا حد زیادی با r50k_base هم‌پوشانی دارد و در کاربردهای غیرمرتبط با کدنویسی، معمولا خروجی هر دو یکسان خواهد بود.

کتابخانه‌های Tokenizer بر اساس زبان برنامه‌نویسی

برای encoding‌های o200k_base، cl100k_base و p50k_base:

  • Python: tiktoken
  • .NET / C#: SharpToken، TiktokenSharp
  • Java: jtokkit
  • Golang: tiktoken-go
  • Rust: tiktoken-rs

برای encoding r50k_base (gpt2)، توکنایزرهای متعددی در زبان‌های مختلف موجود است:

  • Python: tiktoken (یا GPT2TokenizerFast)
  • JavaScript: gpt-3-encoder
  • .NET / C#: GPT Tokenizer
  • Java: gpt2-tokenizer-java
  • PHP: GPT-3-Encoder-PHP
  • Golang: tiktoken-go
  • Rust: tiktoken-rs

نحوه توکنایز شدن معمول رشته‌ها

در زبان انگلیسی، طول توکن‌ها معمولا از یک کاراکتر تا یک کلمه کامل متغیر است (برای مثال: “t” یا ” great”). البته در برخی زبان‌ها، یک توکن می‌تواند کوتاه‌تر از یک کاراکتر یا طولانی‌تر از یک کلمه باشد. در بیشتر موارد، فاصله‌ها همراه با ابتدای کلمات گروه‌بندی می‌شوند؛

برای مثال: به‌جای “is ” یا ” ” + “is”، توکن ” is” ساخته می‌شود.

از طریق OpenAI Tokenizer یا وب‌اپ شخص ثالث Tiktokenizer، می‌توانید خیلی سریع بررسی کنید که یک رشته چگونه توکنایز می‌شود.

۱. نصب tiktoken

در صورت نیاز، tiktoken را با pip نصب کنید:

۲. ایمپورت tiktoken

۳. بارگذاری یک encoding

برای بارگذاری یک encoding بر اساس نام آن، از تابع ‎tiktoken.get_encoding()‎ استفاده کنید. بار اول که این تابع اجرا می‌شود، به اینترنت نیاز دارد تا فایل‌های لازم را دانلود کند اما در اجراهای بعدی، دیگر نیازی به اتصال اینترنت نخواهد بود.

با استفاده از ‎tiktoken.encoding_for_model()‎ می‌توانید به‌صورت خودکار encoding مناسب را برای نام هر مدل بارگذاری کنید

۴. تبدیل متن به توکن با استفاده از encoding.encode()

متد ‎.encode()‎ یک رشته متنی را به فهرستی از اعداد صحیح که نمایانگر توکن‌ها هستند تبدیل می‌کند.

با شمردن طول فهرستی که توسط ‎.encode()‎ برگردانده می‌شود، می‌توانید تعداد توکن‌ها را محاسبه کنید.

۵. تبدیل توکن‌ها به متن با استفاده از encoding.decode()

متد ‎.decode()‎ یک فهرست از اعداد صحیحِ مربوط به توکن‌ها را دوباره به یک رشته متنی تبدیل می‌کند.

هشدار:

اگرچه می‌توان از ‎.decode()‎ برای توکن‌های تکی هم استفاده کرد، اما توجه داشته باشید که برای توکن‌هایی که دقیقاً روی مرزهای UTF-8 قرار نمی‌گیرند، ممکن است تبدیل به‌صورت ناقص یا lossy انجام شود.

برای تبدیل ایمنِ یک توکن تکی، از متد ‎.decode_single_token_bytes()‎ استفاده کنید. این متد یک عدد صحیح (توکن) را به بایت‌هایی که نمایانگر آن هستند، به‌درستی و بدون از دست رفتن اطلاعات تبدیل می‌کند.

حرف b که در ابتدای رشته‌ها قرار می‌گیرد نشان می‌دهد که آن رشته‌ها از نوع byte string هستند.

۶. مقایسه Encoding‌ها

Encoding‌های مختلف در نحوه شکستن کلمات، گروه‌بندی فاصله‌ها و پردازش کاراکترهای غیرانگلیسی با یکدیگر متفاوت هستند. با استفاده از روش‌هایی که در بخش‌های قبل گفته شد، می‌توانیم چند رشته نمونه را با encoding‌های مختلف مقایسه کنیم.

موارد زیر را می‌توانید امتحان کنید:

۷. شمارش توکن‌ها برای فراخوانی‌های Chat Completions API

مدل‌های ChatGPT مانند gpt-4o-mini و gpt-4 به همان روشی از توکن‌ها استفاده می‌کنند که مدل‌های قدیمی‌تر completions استفاده می‌کردند اما به‌دلیل ساختار پیام‌محور (message-based) این مدل‌ها، محاسبه تعداد توکن‌هایی که یک مکالمه مصرف می‌کند سخت‌تر است.

در ادامه یک تابع نمونه ارائه شده که تعداد توکن‌های پیام‌های ارسال‌شده برای مدل‌هایی مثل gpt-3.5-turbo، gpt-4، gpt-4o و gpt-4o-mini را تخمین می‌زند. توجه داشته باشید که نحوه دقیق شمارش توکن‌ها در پیام‌ها ممکن است بین مدل‌ها متفاوت باشد.

بنابراین اعدادی که این تابع برمی‌گرداند، تخمینی هستند و نه یک تضمین قطعی و همیشگی. به‌طور مشخص، درخواست‌هایی که از ورودی اختیاری functions استفاده می‌کنند، بیش از مقادیر تخمینی زیر توکن مصرف خواهند کرد.

۸. شمارش توکن‌ها برای chat completions همراه با فراخوانی ابزارها (tool calls)

در ادامه بررسی می‌کنیم که چطور می‌توان این محاسبات را روی پیام‌هایی اعمال کرد که ممکن است شامل فراخوانی تابع (function call) باشند. این کار به‌خاطر فرمت خاص خودِ ابزارها، در نگاه اول چندان بدیهی نیست. در زیر، یک تابع نمونه برای شمارش توکن‌های پیام‌هایی آورده شده است که شامل tools هستند و به مدل‌های gpt-3.5-turbo، gpt-4، gpt-4o و gpt-4o-mini ارسال می‌شوند.

نتیجه‌گیری

توکنایزیشن فقط یک بخش کوچک از پردازش زبان طبیعی نیست؛ بلکه جزء حیاتی هر پروژه‌ای است که از مدل‌های زبانی استفاده می‌کند. آشنایی با نحوه شکستن متن به توکن، شیوه شمارش آن‌ها، تفاوت encoding‌ها و محاسبه دقیق توکن‌ها در سناریوهای مختلف از ورودی ساده گرفته تا مکالمات پیچیده همراه با فراخوانی ابزارها به شما این امکان را می‌دهد که برنامه‌های هوش مصنوعی را با هزینه کمتر، سرعت بیشتر و دقت بالاتر اجرا کنید. کتابخانه‌هایی مانند Tiktoken کار شمارش و مدیریت توکن را ساده می‌کنند، اما مسئولیت اصلی همچنان بر عهده توسعه‌دهنده است:

نوشتن پرامپت‌های مختصر و دقیق، حذف متن‌های اضافی، انتخاب tokenizer مناسب و پایش مداوم مصرف توکن.

با به‌کارگیری اصول و تکنیک‌هایی که در این مقاله بررسی شد، می‌توانید پروژه‌های هوش مصنوعی خود را هوشمندانه‌تر مدیریت کنید و نه‌تنها عملکرد مدل را بهبود دهید، بلکه هزینه‌های API را به‌طور چشمگیری کاهش دهید. این دانش برای هر توسعه‌دهنده‌ای که با مدل‌های GPT کار می‌کند، یک مزیت رقابتی مهم به شمار می‌رود.

 

منابع

medium.com | cookbook.openai.com 

سوالات متداول

چون تعداد توکن‌ها هزینه API و امکان پردازش ورودی توسط مدل را تعیین می‌کند. با شمارش توکن‌ها می‌توان از خطاهای سقف محدودیت و هزینه‌های ناخواسته جلوگیری کرد.

بهترین گزینه Tiktoken است که توسط خود OpenAI ساخته شده و برای مدل‌های GPT بهینه شده است. برای NLP عمومی هم NLTK کاربرد دارد، اما دقت Tiktoken برای تخمین هزینه بیشتر است.

با Tiktoken متن را توکنایز کنید و تعداد آن را با سقف مدل مقایسه کنید. اگر بالاتر بود، باید متن را خلاصه کنید یا در چند بخش جداگانه ارسال کنید.

ساده‌سازی متن ورودی، نوشتن پرامپت‌های کوتاه و دقیق، استفاده از tokenizer کارآمد و در صورت نیاز انتخاب مدل ارزان‌تر.

فرصت‌های شغلی

ایجاد محیطی با ارزش های انسانی، توسعه محصولات مالی کارامد برای میلیون ها کاربر و استفاده از فناوری های به روز از مواردی هستند که در آسا به آن ها می بالیم. اگر هم مسیرمان هستید، رزومه تان را برایمان ارسال کنید.

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست محتوا