توکن در Claude چیست و هزینه آن چقدر است؟
هر توکن در Claude معادل 3.5 کاراکتر است. در این مقاله علت مصرف 80,000 توکن در یک session و افزایش 5 برابری هزینهها در Claude Code بررسی شده است.
توکنها در Claude چیست؟
توکن واحدی است که Claude برای خواندن و نوشتن متن استفاده میکند: تکهای از یک کلمه، که تقریباً معادل 3.5 کاراکتر انگلیسی است. این رقم از واژهنامه خود Anthropic استخراج شده است. با احتساب فواصل و علائم نگارشی، تعداد توکنها بسیار بیشتر از تعداد کلمات خواهد بود؛ بنابراین 1,000 کلمه متن معمولی، بیش از 1,300 توکن محسوب میشود. حجم توکنها در کدنویسی بیشتر است: پرانتزها، عملگرها، زیرخطها (underscores) و فاصلهگذاریها (indentation) باعث میشوند تعداد توکنها در هر کاراکتر نسبت به زبان انگلیسی بیشتر باشد. یک فایل منبع با چند صد خط کد، معمولاً چندین هزار توکن مصرف میکند. اگر مدل تصمیم به خواندن یک فایل 2,000 خطی بگیرد، پیش از آنکه حتی یک خط کد جدید نوشته شود، هزینه آن معادل بیش از 10,000 توکن خواهد بود.
دو نکته درباره توکنایزرها (tokenizers) باعث سردرگمی کاربران میشود. اول اینکه، این واحدها مختص هر مدل هستند. تا جولای 2026، مدلهای Opus 4.7 و نسخههای جدیدتر، Sonnet 5 و Fable 5 از توکنایزر جدیدتری استفاده میکنند که برای یک متن یکسان، تقریباً 30% توکن بیشتری نسبت به مدلهای قدیمی Claude تولید میکند (میزان دقیق این افزایش بسته به محتوا متفاوت است). این موضوع باعث میشود بودجهبندی توکنها تغییر کند، هرچند قیمت هر توکن با این تغییر افزایش نیافته است. دوم اینکه، tiktoken که در اکثر پستهای وب استفاده میشود، توکنایزر OpenAI است که در متنهای معمولی حدود 15–20% و در کدها بیشتر، کمتر از مقدار واقعی Claude را محاسبه میکند. تنها منبع قابل اعتماد برای شمارش، endpoint مربوط به count_tokens است که در ادامه بررسی میشود.
چرا هزینه جلسات کدنویسی شما این مقدار است
هر صورتحساب Claude، چه فاکتور API باشد و چه محدودیت اشتراک، تنها بر اساس یک معیار محاسبه میشود: توکنهای ورودی (input) و توکنهای خروجی (output). صفحه قیمتگذاری موضوع را ساده نشان میدهد: فلان مقدار دلار به ازای هر یک میلیون توکن ورودی، و فلان مقدار به ازوی هر یک میلیون توکن خروجی. اما آنچه گفته نمیشود این است که در یک جلسه کدنویسی مبتنی بر عامل (agentic coding session)، بخش ورودی بسیار سریعتر از آنچه تصور میشود هزینه ایجاد میکند؛ زیرا کل مکالمه در هر مرحله دوباره ارسال میشود. من 15 سال است که زیرساختهای مبتنی بر مصرف (metered infrastructure) میفروشم و توکنها اولین معیاری هستند که میبینم اکثر مشتریان واقعاً نمیدانند چه چیزی باعث افزایش مصرف آنها میشود. این درسِ خواندنِ این معیار است: چه چیزی در یک جلسه agentic به عنوان ورودی و خروجی محاسبه میشود، چرا حلقه ارسال مجدد (resend loop) بسیار گران است، چرا قابلیت prompt caching محاسبات را تغییر میدهد و کدام متغیرها واقعاً باعث تغییر عدد نهایی میشوند.
همه چیز ورودی است: متر دقیقاً چه چیزی را محاسبه میکند
مردم تصور میکنند هزینه کدی را پرداخت میکنند که Claude مینویسد. در یک session مبتنی بر agent، این تنها بخش کوچک هزینه است. توکنهای ورودی (Input tokens) — که نرخ ارزانتری دارند اما حجم بسیار بالاتری دارند — شامل موارد زیر هستند:
- System prompt. دستورالعملهای داخلی Claude Code، به همراه فایلهای
CLAUDE.mdو memory شما، که در شروع session بارگذاری شده و در هر درخواست بعدی حضور دارند. - Tool definitions. تمام طرحهای (schema) ابزاری که agent میتواند فراخوانی کند. هر MCP server که متصل میکنید به این هزینه ثابت اضافه میشود — اگرچه Claude Code اکنون به صورت پیشفرض از بارگذاری کامل تعریف ابزارهای MCP صرفنظر میکند، بنابراین تا زمانی که یک ابزار برای اولین بار استفاده نشود، فقط نام ابزار در context قرار میگیرد؛ این امر هزینه را کاهش میدهد اما آن را حذف نمیکند.
- هر فایلی که agent میخواند. یک
Readاز یک فایل منبع، کل آن را وارد context میکند و در آن باقی میماند. - هر نتیجه از ابزارها. اجرای تستها، خروجی grep، پیامهای ترمینال، لاگهای build — همه اینها به عنوان توکنهای ورودی بازگردانده میشوند. یک مجموعه تست شکستخورده که 8,000 خط خروجی چاپ کند، هزینه معادل یک کتاب کوچک را برای شما دارد.
- تمام گفتگو تا این لحظه، که در هر مرحله دوباره ارسال میشود. این مورد نیاز به بخش مجزایی دارد.
علت افزایش هزینهها در ارسال مجدد دادهها
Claude API بدون وضعیت (stateless) است. این سرویس اطلاعات session شما را بین درخواستها به خاطر نمیآورد؛ هیچچیز ذخیره نمیشود. بنابراین در turn 2، کلاینت شامل turn 1 بهاضافه پاسخ آن و پیام جدید شما را ارسال میکند. در turn 50، کلاینت تمام turn های 1 تا 49 را مجدداً ارسال میکند — شامل تمام فایلهای خوانده شده، تمام نتایج ابزارها (tool results) و تمام diff ها — بهاضافه turn 50. مدل در هر بار، کل متن گفتگو را دوباره میخواند و تمام توکنهای بازخوانی شده، به عنوان input محاسبه و هزینه میشوند.
نتیجه: هزینه در هر turn تقریباً به صورت خطی با طول session افزایش مییابد و هزینه کل session تقریباً به صورت درجه دوم (quadratically) رشد میکند. پیامی که در turn 3 هزینه 0.5 cent داشت، در turn 60 برای همان سوال یکخطی، ممکن است 20 برابر بیشتر هزینه داشته باشد؛ زیرا بارِ 60 turn قبلی را با خود حمل میکند. این تنها عاملی است که اکثر تیکتهای "چرا صورتحساب من اینقدر بالا بود" را توضیح میدهد. این یک ویژگی خاص در Claude نیست؛ هر محصول LLM که حالت stateful دارد، در واقع یک API stateless است که یک حلقه ارسال مجدد (resend loop) در زیرساخت خود دارد.
خروجی: آنچه مشاهده میکنید، به همراه فرآیند فکری که نمیبینید
توکنهای خروجی گرانترین توکنها هستند؛ در محصولات فعلی، نرخ آنها 5 برابر نرخ ورودی است (تا جولای 2026، قیمتها در Opus 4.8 برابر 5/25 دلار، در Sonnet 5 برابر 3/15 دلار و در Haiku 4.5 برابر 1/5 دلار است). خروجی شامل متن و کد تولید شده توسط Claude و thinking tokens است: استدلال داخلی که مدل پیش از پاسخدهی انجام میدهد. دو نکته در اینجا حائز اهمیت است. فرآیند فکری با نرخ خروجی محاسبه میشود و جزو سهم max_tokens است؛ یک پاسخ API که با stop_reason: "max_tokens" متوقف شود، به این معناست که فرآیند فکری پیش از رسیدن به پاسخ، بودجه را مصرف کرده است. همچنین در مدلهای فعلی، ممکن است خلاصه استدلال اصلاً نمایش داده نشود — مدلهای Opus 4.8، Sonnet 5 و Fable 5 بهصورت پیشفرض آن را حذف میکنند — اما فرآیند فکری همچنان انجام شده و هزینه آن محاسبه میشود. پنهان بودن به معنای رایگان بودن نیست.
Claude Code بهصورت پیشفرض قابلیت extended thinking را فعال میکند، زیرا کیفیت کارهای چندمرحلهای را بهطور محسوسی بهبود میبخشد و بودجه پیشفرض میتواند تا دهها هزار توکن در هر درخواست باشد. در وظایف سادهتر میتوانید آن را کاهش دهید: سطح تلاش را با استفاده از /effort یا در /model کم کنید، یا تنظیمات thinking را در /config تغییر دهید. این یک اهرم واقعی برای کنترل هزینه است، نه یک باور بیاساس.
Prompt caching math changes
Prompt caching باعث میشود هزینههای ارسال مجدد (resend loop) کمرشکن نباشد. API میتواند بخش ثابتی از prompt شما را — مانند system prompt، تعاریف ابزارها (tool definitions) و تاریخچه گفتگو — ذخیره (cache) کند و در درخواست بعدی، آن را با کسری از قیمت ارائه دهد. از July 2026، ضریبها به این صورت هستند: هزینه یک عملیات write در cache برابر با 1.25× نرخ پایه ورودی است (برای نسخه 1-hour این مقدار 2× است)، و هزینه یک عملیات read برابر با 0.1× است. عملیات write هزینه بیشتری دارد؛ اما عملیات read شامل 90% تخفیف است. تنها یک عملیات read میتواند هزینه اضافیِ 5-minute write را جبران کند.
Claude Code مدیریت caching را برای شما انجام میدهد و در یک session سالم، تقریباً تمام آن حجم عظیم ارسال مجدد، از طریق cache تامین میشود. اما cache پیشفرض، five minutes از آخرین استفاده باقی میماند. اگر برای نوشیدن قهوه مدتی طولانی دور شوید و پس از بازگشت پیامی بفرستید، cache منقضی شده است؛ در این حالت تمام prefix انباشته شده، به جای خوانده شدن با نرخ 0.1×، با نرخ 1.25× مجدداً write میشود. در یک session با حجم 150K-token، این یک turn سرد (cold turn) هزینهای بیشتر از دهها turn گرم (warm) دارد. این نتیجه خلاف انتظار است و باید درک شود: روند توقف و شروع مجدد (idle-then-resume) میتواند پرهزینهتر از کار مداوم باشد، زیرا هر فاصله زمانی فراتر از TTL، turn بعدی شما را از یک read ارزان به یک re-write گران تبدیل میکند. به صورت دورهای کار کنید؛ یک session بزرگ را با ارسال پیامهای پراکنده در هر ده دقیقه، پیش نروید.
اگر در حال فراخوانی API از طریق your own application on a VPS هستید، هیچکدام از این مزایا رایگان نیست؛ و اشتباه رایج و خودساخته این است که یک timestamp یا request ID را در system prompt قرار دهید؛ این کار باعث میشود bytes مربوط به prefix در هر درخواست تغییر کند و caching را بیصدا غیرفعال کند. نشانه این اتفاق، قرار گرفتن usage.cache_read_input_tokens در مقدار صفر در تمامی فراخوانیهای مشابه است.
فرمول، به همراه یک مثال عملی
از هر کسی که میگوید «هزینه هر session مبلغ X دلار است» صرفنظر کنید. هزینهی sessionها تا دو مرتبه بزرگی (two orders of magnitude) تغییر میکند. آنچه اهمیت دارد، این فرمول است:
turn cost = (uncached input x base input price)
+ (cache writes x 1.25 x base input price)
+ (cache reads x 0.10 x base input price)
+ (output incl. thinking x output price)
session cost = sum over all turnsمثال عملی روی Claude Opus 4.8؛ که تا جولای 2026، هزینهی آن 5 دلار به ازای هر میلیون input token و 25 دلار به ازای هر میلیون output است. یک turn در میانه session که شامل 80,000 token از context انباشته شده است: 75,000 از cache خوانده شده، 3,000 تازه نوشته شده، 2,000 input تازه و بدون cache، و 1,500 token خروجی شامل thinking.
- Cache reads: 75,000 × $0.50/M = $0.0375
- Cache writes: 3,000 × $6.25/M = $0.019
- Uncached input: 2,000 × $5/M = $0.010
- Output: 1,500 × $25/M = $0.0375
حدود $0.10 برای هر turn؛ پنجاه turn مشابه، حدود $5. حالا همان turn را پس از انقضای cache در نظر بگیرید: تمام 80,000 token با نرخ $6.25/M بازنویسی میشوند که قبل از خروجی برابر با $0.50 است — تقریباً پنج برابر کل turn با cache فعال، برای انجام همان کار. این اختلاف، تمام داستان caching را در یک عدد خلاصه میکند.
برای کالیبراسیون به جای پیشبینی: ارقام منتشر شده توسط Anthropic برای استقرارهای enterprise Claude Code، تا جولای 2026، به طور متوسط حدود $13 به ازای هر developer در هر روز فعال است — بین $150 تا $250 در ماه — در حالی که 90% کاربران زیر $30 در روز باقی میمانند. هزینه نهایی شما تابعی از انتخاب model، مدیریت session (session hygiene) و اندازه codebase است؛ به همین دلیل است که متغیرهای زیر اهمیت دارند.
مشاهده میزان مصرف خودتان
در Claude Code، دستور مورد نظر /usage است (دستور /cost همچنان کار میکند و یک alias است). بلوک Session در بالا، آمار توکنها و تخمین هزینه محاسبهشده در سیستم را برای session فعلی نمایش میدهد؛ در طرحهای اشتراکی، همین صفحه میزان استفاده از سقف طرح شما را نشان میدهد و جزئیات مصرف اخیر را بر اساس skills، subagents، plugins و MCP serverهای مجزا تفکیک میکند. برای دریافت صورتحساب دقیق در حسابهای API، صفحه usage در Claude Console منبع اصلی است؛ عدد نمایش داده شده در CLI تنها یک تخمین است. دستور /context یک جدول رنگی از موارد اشغالکننده context window شامل system prompt، tools، تعاریف MCP، فایلها و history نمایش میدهد؛ این سریعترین راه برای شناسایی CLAUDE.md پرحجم یا یک MCP server پرحرف است؛ برای مشاهده جزئیات کامل هر مورد، از flag all استفاده کنید.
در API، هر پاسخ دقیقاً جزئیات اتفاق رخ داده را به شما میگوید:
response = client.messages.create(model="claude-sonnet-5", max_tokens=2048,
messages=messages)
u = response.usage
total_prompt = u.input_tokens + u.cache_creation_input_tokens + u.cache_read_input_tokens
print(f"uncached={u.input_tokens} written={u.cache_creation_input_tokens} "
f"read={u.cache_read_input_tokens} output={u.output_tokens}")توجه داشته باشید که input_tokens فقط باقیمانده بدون cache است؛ اندازه واقعی prompt مجموع هر سه فیلد ورودی است. اگر عاملی به مدت یک ساعت اجرا شود و مقدار input_tokens: 4000 را نشان دهد، ارزان نیست؛ زیرا 200,000 توکن دیگر از cache خوانده شدهاند. برای تخمین قبل از ارسال، از endpoint شمارش توکن استفاده کنید؛ فراخوانی آن رایگان است، نرخ محدودیت (rate limit) مجزایی دارد و با استفاده از tokenizer مدل مورد نظر شما شمارش میکند (نتیجه را به عنوان یک تخمین نزدیک در نظر بگیرید؛ صورتحساب نهایی بر اساس درخواست واقعی است):
count = client.messages.count_tokens(model="claude-sonnet-5",
messages=[{"role": "user", "content": big_file}])
print(count.input_tokens)به دلیل دلیل ذکر شده، هرگز از tiktoken استفاده نکنید.
Subscription plans versus pay-as-you-go
The mechanics in this guide are identical everywhere; only the settlement differs. With an API key, Anthropic bills pay-as-you-go, per token, at the published rates — every number above is real money. On a Claude subscription (Pro, Max, Team, Enterprise), Claude Code usage draws from your plan's included allowance instead: as of July 2026 that's a rolling five-hour session window plus a weekly window, shared across models and with claude.ai chat, and the /usage dollar figure is informational rather than a bill. Exhaust a window and you'll see "You've hit your session limit" or "You've hit your weekly limit" with a reset time — and switching models with /model won't restore access, because the windows are shared across models. Plans can optionally enable usage credits, managed with /usage-credits, to buy usage past the ceiling. I deliberately won't print the plan quotas: they're the most volatile numbers in this whole topic, so check claude.com/pricing and your own /usage bars instead. The token mechanics still matter on a subscription — a wasteful session burns your window exactly the way it would burn dollars. For the subscription side, see which Claude plan fits your usage.
اهرمهای موثر
- محدوده خواندن agent را تعیین کنید. عبارت "Fix the validation bug in
auth.py" تنها یک فایل را میخواند؛ اما عبارت "improve this codebase" چهل فایل را میخواند.CLAUDE.mdرا سبک نگه دارید — چون در هر session بارگذاری میشود، فقط موارد ضروری را در آن قرار دهید — و دستورالعملهای مربوط به گردش کار را به skillهایی منتقل کنید که فقط در صورت نیاز بارگذاری شوند. - شفاف و مختصر. از
/clearبین وظایف بیارتباط استفاده کنید — در غیر این صورت context قدیمی در هر پیام بعدی دوباره ارسال و هزینه میشود. در یک وظیفه طولانی،/compact Focus on the failing tests and the diffتاریخچه را خلاصه میکند تا از افزایش تصاعدی هزینهها جلوگیری کند. - مدل مناسب را انتخاب کنید. Sonnet برای اکثر کارهای کدنویسی مناسب است؛ طبق قیمتهای اولیه در July 2026، هزینه آن 2/10 دلار به ازای هر میلیون توکن است (قیمت اصلی 3/15 دلار در مقایسه با Opus که 5/25 دلار است). مدل Haiku با قیمت 1/5 دلار، ابزار مناسبی برای کارهای مکانیکی subagent مانند بررسی logها است.
/modelدر میان یک session تغییر میکند. - خروجیهای حجیم را پیشفیلتر کنید. استفاده از یک hook که خروجی یک تست را فقط به موارد خطا (failures) محدود میکند (با استفاده از grep) قبل از اینکه Claude آن را ببیند، میتواند 20,000 توکن از نتیجه ابزار را به 300 توکن کاهش دهد؛ این کار در هر بار ارسال مجدد آن turn انجام میشود.
- موارد غیرتعاملی را دستهای (Batch) انجام دهید. برای خط لولههای API خود — مانند دستهبندی، بررسی انبوه یا کارهای شبانه — استفاده از Batches API همان مدلها را با 50% تخفیف در ازای تحویل غیرهمزمان (asynchronous) ارائه میدهد.
- به زمان cache احترام بگذارید. در بازههای زمانی مداوم کار کنید. یک Claude Code session در tmux روی یک VPS در حالت idle هیچ هزینهای ندارد — توکنها فقط زمانی مصرف میشوند که یک turn اجرا شود — اما با بیکار ماندن، cache گرم (warm cache) از دست میرود و در turn بعدی، هزینه بازنویسی آن پرداخت میشود.
FAQ
یک جلسه کدنویسی در Claude Code چقدر توکن مصرف میکند؟
عدد ثابتی وجود ندارد؛ وقتی فایلها و تاریخچه انباشته شوند، یک چرخه (turn) معمولی در میانهی جلسه، معمولاً شامل دهها هزار توکن پرامپت است. یک جلسه کاری میتواند به میلیونها توکن برسد که بیشتر آنها با یکدهم نرخ پایه از طریق cache ارائه میشوند. برای تخمین، ارقام منتشر شده توسط Anthropic تا July 2026 نشان میدهد که میانگین هزینه حدود 13 دلار برای هر توسعهدهنده در هر روز فعال است و 90% کاربران زیر 30 دلار هزینه دارند. دستور /usage را در جلسه خود اجرا کنید؛ پنج دقیقه مشاهده آن از هر میانگین منتشر شده دقیقتر است.
آیا توکنهای تفکر (thinking tokens) حتی وقتی قابل مشاهده نیستند، هزینه دارند؟
بله. توکنهای تفکر به عنوان توکنهای خروجی (output tokens) و با نرخ گرانتر محاسبه میشوند و جزو max_tokens هستند. مدلهای فعلی حتی زمانی که رابط کاربری خلاصه استدلال را نمایش نمیدهد، هزینه آنها را محاسبه میکنند. اگر پاسخ با stop_reason: "max_tokens" قبل از اتمام پاسخ قابل مشاهده قطع شود، احتمالاً توکنهای تفکر بودجه را مصرف کردهاند. در Claude Code، برای کارهایی که نیاز به استدلال عمیق ندارند، سطح تلاش را با دستور /effort کاهش دهید.
چرا جلسات طولانی Claude Code در هر پیام گرانتر میشوند؟
زیرا API بدون وضعیت (stateless) است: هر چرخه، تمام گفتگو — شامل تمام فایلهای خوانده شده، نتایج ابزارها و تبادلات قبلی — را به عنوان ورودی قابل صورتحساب مجدداً ارسال میکند؛ بنابراین چرخه 50، چرخههای 1 تا 49 را نیز با خود حمل میکند. قابلیت prompt caching از پیشوند تکراری با حدود یکدهم قیمت پایه ورودی استفاده میکند، اما خودِ پیشوند مدام در حال رشد است و هر وقفهی بیکاری فراتر از TTL کش، چرخه بعدی را به یک بازنویسی با قیمت کامل تبدیل میکند. دستور /compact تاریخچه را کوچک میکند؛ دستور /clear آن را بازنشانی میکند.
چگونه میزان مصرف توکن و هزینه Claude خود را بررسی کنم؟
در Claude Code، دستور /usage آمار توکنهای جلسه، تخمین هزینه محلی و نوارهای محدودیت طرح در اشتراکها را نشان میدهد (/cost یک نام مستعار است)؛ دستور /context آنچه را که پنجره را پر کرده است نشان میدهد. برای صورتحساب رسمی API، از صفحه usage در Claude Console استفاده کنید. در کد خود، response.usage را بخوانید — مجموع input_tokens، cache_creation_input_tokens و cache_read_input_tokens اندازه واقعی پرامپت را میدهد — و همیشه از قبل با استفاده از endpoint count_tokens تخمین بزنید، هرگز از tiktoken استفاده نکنید.