توکنها چیستند؟
توکنها اجزای سازندهٔ متنی هستند که مدلهای OpenAI پردازش میکنند. بسته به زبان و بافت، طول آنها میتواند از یک نویسه تا یک واژهٔ کامل متغیر باشد. فاصلهها، علائم نگارشی و بخشهایی از واژهها همگی در شمارش توکنها محاسبه میشوند. API پیش از تولید پاسخ، متن شما را در داخل به این شکل بخشبندی میکند.
چند قاعدهٔ سرانگشتی مفید برای زبان انگلیسی:
۱ توکن ≈ ۴ نویسه
۱ توکن ≈ ¾ واژه
۱۰۰ توکن ≈ ۷۵ واژه
۱ تا ۲ جمله ≈ ۳۰ توکن
۱ پاراگراف ≈ ۱۰۰ توکن
حدود ۱٬۵۰۰ واژه ≈ ۲٬۰۴۸ توکن
توکنیزه سازی بسته به مدل و کدگذاری متفاوت است. برای بهدستآوردن تعداد دقیق توکنها در مدل موردنظرتان، از ابزار توکنیزهسازی یا tiktoken.encoding_for_model(model) استفاده کنید.
مثالها
در ادامه چند نمونهٔ واقعی از متن و تعداد تقریبی توکنهای آنها آمده است:
نقلقول وین گرتزکی، «صددرصد شوتهایی را که نمیزنید از دست میدهید» = ۱۱ توکن
منشور OpenAI = ۴۷۶ توکن
اعلامیهٔ استقلال ایالات متحده = ۱٬۶۹۵ توکن
تعداد توکنها چگونه محاسبه میشود؟
وقتی متنی را به API ارسال میکنید:
متن به توکنها تقسیم میشود.
مدل این توکنها را پردازش میکند.
پاسخ بهصورت دنبالهای از توکنها تولید و سپس دوباره به متن تبدیل میشود.
میزان مصرف توکن در چند دسته ثبت میشود:
توکنهای ورودی – توکنهای موجود در درخواست شما.
توکنهای خروجی – توکنهای تولیدشده در پاسخ.
توکنهای ذخیرهشده در حافظهٔ نهان – توکنهای دوبارهاستفادهشده از سابقهٔ گفتگو (که اغلب با نرخ کمتری محاسبه میشوند).
توکنهای استدلال – در برخی مدلهای پیشرفته، پیش از تولید خروجی نهایی، «مراحل فکری» بیشتری بهصورت داخلی طی میشود.
این اعداد در فرادادهٔ پاسخ API نمایش داده میشوند و برای صورتحساب و پیگیری مصرف به کار میروند.
برای بررسی بیشتر توکنیزه سازی میتوانید از ابزار تعاملی توکنیزهسازی ما استفاده کنید؛ این ابزار تعداد توکنها و نحوهٔ تقسیم متن به توکنها را نشان میدهد.
همچنین، اگر میخواهید متن را بهصورت برنامهنویسی توکنیزه کنید، از Tiktoken استفاده کنید؛ یک توکنیزهکنندهٔ سریع BPE که ویژهٔ مدلهای OpenAI است.
محدودیت توکنها
هر مدل برای مجموع توکنها (ورودی + خروجی) سقف مشخصی دارد. مدلهای پرظرفیت کنونی از حداکثر صدها هزار توکن در بافت پشتیبانی میکنند؛ البته محدودیت عملی ممکن است بسته به نسخهٔ مدل و سطح کاربری شما متفاوت باشد.
اگر از این سقف عبور کردید، میتوانید:
اعلانها را کوتاهتر یا بازنویسی کنید.
متنهای طولانی را به بخشهای کوچکتر تقسیم کنید.
ورودیها را پیش از ارسال خلاصه یا پیشپردازش کنید.
قیمتگذاری توکنها
هزینهٔ استفاده از API بهازای هر توکن محاسبه میشود و به مدل و ورودی، خروجی یا ذخیرهشدهبودن توکن بستگی دارد. برای مشاهدهٔ نرخهای فعلی، به صفحهٔ قیمتگذاری OpenAI مراجعه کنید. برخی مدلهای استدلال ممکن است در داخل از توکنهای بیشتری استفاده کنند، اما هدفشان افزایش بهرهوری با کاهش تعداد توکنهای لازم برای تکمیل هر وظیفه است.
بررسی توکنها
API واژهها را متناسب با بافت آنها در دادههای پیکره پردازش میکند. مدلها اعلان را دریافت میکنند، ورودی را به فهرستی از توکنها تبدیل میکنند، اعلان را پردازش میکنند و توکنهای پیشبینیشده را دوباره به واژههایی تبدیل میکنند که در پاسخ میبینیم.
دو واژه که از نظر ما یکسان به نظر میرسند، ممکن است بسته به ساختارشان در متن به توکنهای متفاوتی تبدیل شوند. ببینید API چگونه بر اساس بافت متن، برای واژهٔ «red» مقادیر توکن تولید میکند:
در اولین مثال بالا، توکن «2266» برای « red» شامل یک فاصلهٔ انتهایی است (توجه: این شناسههای توکن صرفاً نمونههایی برای نمایش هستند).
توکن «2296» برای « Red» (با یک فاصلهٔ ابتدایی و حرف اول بزرگ) با توکن «2266» برای « red» با حرف کوچک تفاوت دارد.
وقتی «Red» در ابتدای جمله به کار میرود، توکن تولیدشده فاصلهٔ ابتدایی ندارد. توکن «7738» با دو نمونهٔ قبلی این واژه متفاوت است.
مشاهدات:
هرچه احتمال یا فراوانی یک توکن بیشتر باشد، شمارهٔ اختصاصیافته به آن کمتر است:
توکن تولیدشده برای نقطه در هر ۳ جمله یکسان است («13»). دلیلش این است که نقطه از نظر بافت در سراسر دادههای پیکره تقریباً به یک شکل به کار میرود.
توکن تولیدشده برای «red» بسته به جایگاه آن در جمله متفاوت است:
حرف کوچک در میانهٔ جمله: « red» - (توکن: «2266»)
حرف بزرگ در میانهٔ جمله: « Red» - (توکن: «2297»)
حرف بزرگ در ابتدای جمله: «Red» - (توکن: «7738»)
