توکنها چیستند؟
توکنها اجزای سازندهٔ متنی هستند که مدلهای OpenAI پردازش میکنند. بسته به زبان و زمینه، میتوانند به کوتاهی یک نویسه یا به بلندی یک واژهٔ کامل باشند. فاصلهها، نشانهگذاریها و بخشهایی از واژهها همگی در شمارش توکنها نقش دارند. API به این روش متن شما را پیش از تولید پاسخ، بهصورت داخلی بخشبندی میکند.
قواعد سرانگشتی مفید برای انگلیسی:
۱ توکن ≈ ۴ نویسه
۱ توکن ≈ ¾ واژه
۱۰۰ توکن ≈ ۷۵ واژه
۱ تا ۲ جمله ≈ ۳۰ توکن
۱ بند ≈ ۱۰۰ توکن
حدود ۱٬۵۰۰ واژه ≈ ۲٬۰۴۸ توکن
توکنیزه سازی بر اساس مدل و کدگذاری متفاوت است. برای بهدستآوردن شمارش دقیق برای مدل هدف خود، از ابزار Tokenizer یا tiktoken.encoding_for_model(model) استفاده کنید.
نمونهها
در ادامه چند نمونه متن واقعی بههمراه شمارش تقریبی توکنهای آنها آمده است:
نقلقول وین گرتسکی «You miss 100% of the shots you don’t take» = ۱۱ توکن
منشور OpenAI = ۴۷۶ توکن
اعلامیهٔ استقلال ایالات متحده = ۱٬۶۹۵ توکن
شمارش توکنها چگونه محاسبه میشود
وقتی متنی را به API ارسال میکنید:
متن به توکنها تقسیم میشود.
مدل این توکنها را پردازش میکند.
پاسخ بهصورت دنبالهای از توکنها تولید میشود و سپس دوباره به متن تبدیل میشود.
مصرف توکن در چند دسته ردیابی میشود:
توکنهای ورودی – توکنهای موجود در درخواست شما.
توکنهای خروجی – توکنهایی که در پاسخ تولید میشوند.
توکنهای ذخیرهشده در حافظهٔ پنهان – توکنهای بازاستفادهشده در تاریخچهٔ گفتگو (که اغلب با نرخ کمتری محاسبه میشوند).
توکنهای استدلال – در برخی مدلهای پیشرفته، «گامهای فکری» اضافی پیش از تولید خروجی نهایی بهصورت داخلی گنجانده میشود.
این شمارشها در فرادادهٔ پاسخ API شما ظاهر میشوند و برای صورتحساب و ردیابی مصرف بهکار میروند.
برای بررسی بیشتر توکنیزه سازی، میتوانید از ابزار تعاملی Tokenizer ما استفاده کنید که به شما امکان میدهد تعداد توکنها را محاسبه کنید و ببینید متن چگونه به توکنها شکسته میشود.
یا اگر میخواهید متن را بهصورت برنامهنویسی توکنیزه کنید، از Tiktoken بهعنوان یک توکنیزهکنندهٔ سریع BPE که بهطور خاص برای مدلهای OpenAI استفاده میشود، بهره ببرید.
محدودیتهای توکن
هر مدل یک حداکثر محدودیت ترکیبی توکن دارد (ورودی + خروجی). مدلهای پرظرفیت کنونی تا صدها هزار توکن را در زمینه پشتیبانی میکنند، هرچند محدودیتهای عملی ممکن است بسته به نسخهٔ مدل و سطح استفادهٔ شما متفاوت باشد.
اگر از محدودیت فراتر بروید، میتوانید:
اعلانها را کوتاهتر کنید یا بازنویسی کنید.
متنهای بزرگ را به بخشهای کوچکتر تقسیم کنید.
ورودیها را پیش از ارسال، خلاصه یا پیشپردازش کنید.
قیمتگذاری توکن
هزینهٔ استفاده از API بر اساس هر توکن محاسبه میشود و بسته به مدل و اینکه توکنها ورودی، خروجی یا ذخیرهشده در حافظهٔ پنهان باشند، متفاوت است. برای نرخهای فعلی، صفحهٔ قیمتگذاری OpenAI را ببینید. برخی مدلهای استدلال ممکن است بهصورت داخلی توکنهای بیشتری مصرف کنند، اما هدفشان بهبود کارایی از طریق کاهش تعداد توکنهای لازم برای هر کار تکمیلشده است.
کاوش در توکنها
API واژهها را بر اساس زمینهٔ آنها در دادههای پیکره پردازش میکند. مدلها اعلان را میگیرند، ورودی را به فهرستی از توکنها تبدیل میکنند، اعلان را پردازش میکنند و توکنهای پیشبینیشده را دوباره به واژههایی تبدیل میکنند که در پاسخ میبینیم.
چیزی که برای ما دو واژهٔ یکسان به نظر میرسد، بسته به ساختارشان در متن ممکن است به توکنهای متفاوتی تبدیل شود. در نظر بگیرید API چگونه مقدارهای توکن را برای واژهٔ «red» بر اساس زمینهٔ آن در متن تولید میکند:
در نخستین نمونهٔ بالا، توکن «2266» برای ‘ red’ شامل یک فاصلهٔ انتهایی است (توجه: اینها شناسههای نمونهٔ توکن برای اهداف نمایشی هستند).
توکن «2296» برای ‘ Red’ (با یک فاصلهٔ ابتدایی و شروع با حرف بزرگ) با توکن «2266» برای ‘ red’ با حرف کوچک متفاوت است.
وقتی ‘Red’ در ابتدای جمله استفاده میشود، توکن تولیدشده شامل فاصلهٔ ابتدایی نیست. توکن «7738» با دو نمونهٔ قبلیِ این واژه متفاوت است.
مشاهدات:
هرچه یک توکن محتملتر/پرتکرارتر باشد، شمارهٔ توکن اختصاصیافته به آن کمتر است:
توکن تولیدشده برای نقطه در هر ۳ جمله یکسان است («13»). دلیلش این است که از نظر زمینهای، نقطه در سراسر دادههای پیکره تقریباً بهشکلی مشابه استفاده میشود.
توکن تولیدشده برای ‘red’ بسته به جایگاه آن در جمله متفاوت است:
حرف کوچک در میانهٔ جمله: ‘ red’ - (توکن: «2266»)
حرف بزرگ در میانهٔ جمله: ‘ Red’ - (توکن: «2297»)
حرف بزرگ در ابتدای جمله: ‘Red’ - (توکن: «7738»)
