مرور کلی
توکنها واحدهایی هستند که مدلهای OpenAI برای پردازش متن به کار میبرند. یک توکن میتواند نمایانگر یک نویسه، بخشی از واژه، یک واژهٔ کامل یا نشانهٔ سجاوندی باشد. فاصلهها نیز بر نحوهٔ تقسیم متن به توکنها اثر میگذارند.
تعداد توکن با تعداد واژه یکسان نیست. یک متن یکسان ممکن است بسته به مدل، کدگذاری آن و زبان، تعداد توکن متفاوتی داشته باشد.
درک نحوهٔ تبدیل متن به توکن
وقتی متنی را به مدل میفرستید:
متن به توکنها تقسیم میشود.
مدل آن توکنها را پردازش میکند.
مدل توکنهای خروجی را تولید میکند. این توکنها میتوانند شامل متن دریافتی شما و، در مدلهای استدلال، توکنهای استدلال داخلی باشند که در متن پاسخ نمایش داده نمیشوند.
استفاده از برآوردهای تقریبی برای متن انگلیسی
این برآوردها برای تخمین اندازهٔ متن انگلیسی مفیدند:
۱ توکن تقریباً برابر با ۴ نویسه است.
۱ توکن تقریباً برابر با سهچهارم یک واژه است.
۱۰۰ توکن تقریباً برابر با ۷۵ واژه است.
این ارقام تقریبیاند، نه شمارش دقیق. طول جملهها و بندها متفاوت است و در زبانهای دیگر نیز رابطهٔ میان نویسهها، واژهها و توکنها میتواند فرق کند.
در نظر گرفتن فاصلهها و بزرگی حروف
یک واژه بسته به املا، بزرگی حروف و متن پیرامون آن ممکن است به توکنهای متفاوتی تقسیم شود.
برای مثال، red، Red و red متن یکسانی ندارند: نمونهٔ آخر با یک فاصله آغاز میشود. یک کدگذاری ممکن است آنها را بهشکل متفاوتی نمایش دهد.
شناسههای توکن نیز به کدگذاری وابستهاند. فرض نکنید شناسهٔ توکن یک نمونه برای همهٔ مدلها صدق میکند.
تمایز میان توکنهای ورودی و خروجی
| دسته | شرح |
| توکنهای ورودی | توکنهایی که در یک درخواست به مدل ارائه میشوند. به اینها توکنهای اعلان نیز گفته میشود. |
| توکنهای خروجی | توکنهایی که مدل تولید میکند. Chat Completions آنها را توکنهای تکمیل مینامد. |
| توکنهای ورودی ذخیرهشده در حافظهٔ نهان | توکنهای ورودی که از طریق ذخیرهسازی پرامپت در حافظهٔ نهان دوباره استفاده میشوند. قیمت آنها ممکن است با توکنهای ورودی ذخیرهنشده در حافظهٔ نهان متفاوت باشد. |
| توکنهای استدلال | توکنهایی که مدل استدلال پیش از تولید پاسخ قابل مشاهده، در داخل استفاده میکند. |
توکنهای استدلال در متن پاسخ دیده نمیشوند، اما در مصرف خروجی محاسبه میشوند و هزینهٔ آنها مانند توکنهای خروجی است.
بنابراین، یک پاسخ کوتاه ممکن است بیش از آنچه متن نمایشیاش نشان میدهد توکن مصرف کند.
شمارش توکنها پیش از ارسال درخواست
شمارش متن ساده
برای دیدن نحوهٔ تقسیم متن به توکنها، از توکنیزهکننده استفاده کنید.
برای توکنیزه کردن متن ساده بهصورت برنامهنویسی، از tiktoken استفاده کنید. کدگذاری مناسب مدل هدفتان را انتخاب کنید؛ برای مثال با tiktoken.encoding_for_model(model).
شمارش توکنهای متن ساده لزوماً همهٔ توکنهای یک درخواست API را در بر نمیگیرد. ساختار پیام، ابزارها، طرحوارهها، تصاویر و فایلها میتوانند بر شمارش کل ورودی اثر بگذارند.
شمارش ورودی کامل Responses
برای ورودی کامل Responses API، از API شمارش توکنهای ورودی استفاده کنید.
این API قالبهای ورودی Responses، از جمله پیامها، تصاویر، فایلها، ابزارها و مکالمهها را میپذیرد. شمارش آن توکنهای قالببندی مورد استفاده در ساختار درخواست، مانند نقشها و مرزهای پیام، را نیز شامل میشود.
شمارش ورودی مشخص نمیکند مدل چند توکن خروجی تولید خواهد کرد.
بررسی مصرف واقعی توکن
پس از ارسال درخواست، اطلاعات مصرف آن را بررسی کنید. نام فیلدها بسته به نقطه پایان متفاوت است:
Chat Completions مقادیر prompt_tokens، completion_tokens و total_tokens را گزارش میکند.
Responses مقادیر input_tokens، output_tokens و total_tokens را گزارش میکند.
همچنین میتوانید فعالیتها را در گذر زمان در داشبورد مصرف بررسی کنید. برای مشاهدهٔ دستورالعملها، از جمله مصرف در حالت استریم، به بررسی مصرف و هزینههای API مراجعه کنید.
رعایت محدودیتهای مدل
برای اطلاع از پنجره زمینه و حداکثر خروجی مدل، مستندات آن را بررسی کنید. این محدودیتها ممکن است میان مدلها متفاوت باشند.
پنجره زمینه، تعداد توکنهایی را محدود میکند که مدل میتواند در یک درخواست پردازش کند. مدلها برای خروجی نیز محدودیت دارند. برای مدلهای استدلال، علاوه بر پاسخ قابل مشاهده، فضایی نیز برای توکنهای استدلال در نظر بگیرید.
اگر ورودی شما بیش از حد بزرگ است، میتوانید:
اعلان را کوتاهتر کنید یا بازنویسی کنید.
زمینهٔ غیرضروری یا تکراری را حذف کنید.
ورودیهای بزرگ را به بخشهای کوچکتر تقسیم کنید.
پیش از ارسال، متن را خلاصه یا پیشپردازش کنید.
از تنظیم توکن خروجی که نقطه پایان و مدل شما پشتیبانی میکنند استفاده کنید. Chat Completions از max_completion_tokens و Responses از max_output_tokens استفاده میکند.
این محدودیتهای اندازهٔ درخواست، جدا از محدودیت نرخ API و سقف ماهانهٔ مصرف یا هزینه هستند. مستندات مدل مورد استفادهتان را بررسی کنید.
درک قیمتگذاری توکنها
در قیمتگذاری توکنمحور API، نرخ به مدل و دستهٔ توکن بستگی دارد. قیمت توکنهای ورودی، ورودی ذخیرهشده در حافظهٔ نهان و خروجی ممکن است متفاوت باشد. سایر قابلیتهای API ممکن است از واحدهای صورتحساب متفاوتی استفاده کنند.
برای مشاهدهٔ نرخهای فعلی، صفحهٔ قیمتگذاری API را بررسی کنید.
هنگام مقایسهٔ مدلها، مجموع توکنها و هزینهٔ لازم برای انجام کارتان را در نظر بگیرید. قیمت کمتر بهازای هر یک میلیون توکن لزوماً هزینهٔ کل را کاهش نمیدهد؛ مدلها ممکن است یک متن را متفاوت توکنیزه کنند و حجم متفاوتی خروجی یا استدلال تولید کنند.
بهجای مقایسهٔ صرفاً طول پاسخ قابل مشاهده، کارهای نمونه و واقعی را آزمایش کنید.
در نظر گرفتن چند تکمیل
اگر یک نقطه پایان و مدل از تولید چند تکمیل پشتیبانی کنند، تکمیلهای اضافی نیز توکن مصرف میکنند.
در Chat Completions، تنظیم n روی مقداری بیشتر از 1 چند گزینه تولید میکند. هزینهٔ توکنهای تولیدشده در همهٔ این گزینهها از شما دریافت میشود.
در Completions API قدیمی، best_of میتواند گزینههایی تولید کند که همهٔ آنها بازگردانده نمیشوند. برای مثال، best_of = 3 میتواند در مجموع گزینهها تا 3 × max_tokens توکن تکمیل تولید کند.
این پارامترها مختص هر نقطه پایان هستند. فرض نکنید API یا مدل دیگری از n یا best_of پشتیبانی میکند.
