# دفترِ قیمتِ مدل‌ها (اندازه‌گیری‌شده، نه از جدولِ قیمت) این فایل یک دفتر است: هر بار قیمت یا مدل عوض شد، **ردیفِ تازه اضافه کنید و ردیفِ قدیمی را پاک نکنید.** هدف این است که اگر GapGPT یا OpenAI روزی قیمت را بالا برد، بشود دید قبلاً چه بوده، از کِی عوض شده، و هر عدد با چه آزمایشی به دست آمده. همه‌ی قیمت‌ها به **دلارِ آمریکا** هستند. «سنت» یعنی یک‌صدمِ دلار. تبدیل به تومان در `docs/ai-cost-and-guardrails.md` است، چون نرخِ دلار جدا از قیمتِ مدل عوض می‌شود. ## مدل‌هایی که الان استفاده می‌شوند | کار | مدل | تنظیم | از کِی | |---|---|---|---| | جوابِ دستیار (چت) | `gpt-4.1-mini` | `OPENAI_CHAT_MODEL` | ۲۰۲۶-۰۹-۲۶ (پیش از آن `gpt-4o-mini`) | | خواندنِ صفحه‌ی کتاب (vision) | `gpt-4.1-mini` | `OPENAI_VISION_MODEL` | ۲۰۲۶-۰۹-۲۰ | | embedding برای Qdrant | `text-embedding-3-small` | `OPENAI_EMBEDDING_MODEL` | از ابتدا | همه از راهِ GapGPT (`OPENAI_BASE_URL`) صدا زده می‌شوند. کلید با سرورِ زنده و تیمِ دیگر مشترک است. ## قیمتِ هر توکن، همان‌طور که GapGPT واقعاً حساب کرد | تاریخِ سنجش | مدل | ورودی (دلار / ۱ میلیون توکن) | خروجی (دلار / ۱ میلیون توکن) | مدرک | |---|---|---|---|---| | ۲۰۲۶-۰۹-۲۵/۲۶ | `gpt-4.1-mini` | ۰٫۴۰ | ۱٫۶۰ | ۵۴۱ فراخوانی (۱) | | ۲۰۲۶-۰۹-۲۵/۲۶ | `gpt-4o-mini` | ۰٫۱۵ | ۰٫۶۰ | ۳۱۱ فراخوانی (۱) | (۱) `docs/benchmarks/2026-09-26-tutor-model/*.json`: هر جواب `promptTokens`، `completionTokens` و `costUsd` دارد، و `costUsd` همان `usage.cost`ی است که خودِ GapGPT برگرداند. در ۲۰۲۶-۱۰-۰۲ دوباره حساب شد. برای `gpt-4.1-mini`، ۳۹۰ فراخوانی دقیقاً برابرِ `(0.40 × ورودی + 1.60 × خروجی) / 1e6` بودند و ۱۵۱ فراخوانیِ دیگر (۲۸٪) ارزان‌تر، چون کشِ خودکارِ ورودی خورده بودند. هیچ فراخوانی‌ای گران‌تر نبود. برای `gpt-4o-mini`، ۲۹۷ فراخوانی دقیقاً برابر بودند و ۱۴ فراخوانی ارزان‌تر. **یعنی برای این دو مدل در آن تاریخ، قیمتِ GapGPT همان قیمتِ رسمیِ OpenAI بود.** این را به همه‌ی مدل‌ها تعمیم ندهید: برای ورودِ کتاب، `gemini-3.6-flash` سه برابرِ `gpt-4o` تمام شد، یعنی خلافِ چیزی که از جدولِ قیمت انتظار می‌رفت (`docs/extraction-playbook.md`، بخشِ ۱). ## هزینه‌ی هر کار (اندازه‌گیری‌شده) | تاریخ | کار | مدل | هزینه | چطور اندازه گرفته شد | |---|---|---|---|---| | ۲۰۲۶-۰۹-۲۰ | خواندنِ یک صفحه‌ی کتاب | `gpt-4.1-mini` | ۰٫۲۲ سنت | `/dashboard/billing/usage` پیش و پس از ۳ صفحه | | ۲۰۲۶-۰۹-۲۰ | خواندنِ یک صفحه‌ی کتاب | `gpt-4o` | ۰٫۷۷ سنت | همان | | ۲۰۲۶-۰۹-۲۰ | خواندنِ یک صفحه‌ی کتاب | `gemini-3.6-flash` | ۲٫۱۳ سنت | همان | | ۲۰۲۶-۰۹-۲۰ | ساختِ یک سوالِ چهارگزینه‌ای | `o4-mini` | ۰٫۷۷ سنت | همان | | ۲۰۲۶-۰۹-۲۵ | یک جوابِ دستیار، پرامپتِ v3 | `gpt-4o-mini` | ۰٫۰۴۴ سنت | `rag_model_benchmark` | | ۲۰۲۶-۰۹-۲۵ | یک جوابِ دستیار، پرامپتِ v3 | `gpt-4.1-mini` | ۰٫۱۱۶ سنت | همان | | ۲۰۲۶-۰۹-۲۵ | یک جوابِ دستیار، پرامپتِ v3 | `gpt-5-mini` | ۰٫۱۷۱ سنت | همان | | ۲۰۲۶-۰۹-۲۵ | یک جوابِ دستیار، پرامپتِ v3 | `gpt-5.4-mini` | ۰٫۲۹ سنت | همان | | ۲۰۲۶-۰۹-۲۵ | یک جوابِ دستیار، پرامپتِ v3 | `o4-mini` | ۰٫۴۱ سنت | همان | | ۲۰۲۶-۰۹-۲۶ | میانگینِ همه‌ی جواب‌های سنجش | `gpt-4.1-mini` | ۰٫۰۹۶ سنت | میانگینِ `costUsd`ِ ۵۴۱ فراخوانی (۱) | | ۲۰۲۶-۱۰-۰۱ | یک جوابِ دستیار، پرامپتِ `tutor-v11-math-only`، ۱۰۳ مسئله‌ی کتاب | `gpt-4.1-mini` | ۰٫۱۶۲ سنت (دبستان ۰٫۱۲۹، دبیرستان ۰٫۲۲۵) | توکنِ ورودی تخمینی (۰٫۳۸۷ توکن به ازای هر حرف)، خروجی از جوابِ واقعی، ضربدر قیمتِ بالا | | ۲۰۲۶-۱۰-۰۱ | یک سوالِ زنده در اپ (۱۲ سوال) | `gpt-4.1-mini` | ۰٫۲۲۵ سنت | فراخوانیِ واقعی | | ۲۰۲۶-۱۰-۰۴ | یک جوابِ دستیار در لودتستِ سرورِ زنده (۵۰ جواب، استریم، سوال‌های تصادفیِ بانکِ سوالِ ده پایه) | `gpt-4.1-mini` | ۰٫۱۸۳ سنت (میانگین: ۳٬۱۸۱ توکنِ ورودی، ۳۴۸ خروجی) | `prompt_tokens`/`completion_tokens`ِ ذخیره‌شده روی پیام‌ها ضربدر قیمتِ بالا؛ داشبوردِ GapGPT خوانده نشد | عددِ برنامه‌ریزیِ قیمت‌گذاری **۰٫۲۰ سنت برای هر سوالِ دستیار** است و حدودِ ۷۰٪ِ آن ورودی است. هزینه‌ی embedding جدا اندازه گرفته نشده است. قیمتِ رسمیِ `text-embedding-3-small` بسیار کمتر از چت است، ولی این را روی GapGPT نسنجیده‌ایم. ## وقتی قیمت عوض شد یا شک کردید ۱. **هزینه‌ی واقعیِ اپ، بی‌خرج:** از ۲۰۲۶-۱۰-۰۱ هر جوابِ دستیار `prompt_tokens` و `completion_tokens` را روی `ai_tutor.Message` ذخیره می‌کند. جمعِ توکن‌های یک بازه را در قیمتِ این فایل ضرب کنید (پرس‌وجو در `docs/ai-cost-and-guardrails.md`). ۲. **قیمتِ امروزِ GapGPT، با چند سنت:** یک سوالِ کوتاه بفرستید و `usage.cost` را با `(ورودی × قیمتِ ورودی + خروجی × قیمتِ خروجی) / 1e6` مقایسه کنید. اگر نخواند، قیمت عوض شده است. موجودی را پیش و پس با `/dashboard/billing/usage` بسنجید (`rag_model_benchmark._usage_cents`)؛ این تنها عددِ قابلِ اتکاست، چون `hard_limit_usd` موجودی نیست. ۳. **ردیفِ تازه اضافه کنید**، با تاریخ، مدل، عدد و مدرک. ردیفِ قدیمی را نگه دارید. اگر قیمتِ دستیار عوض شد، سقفِ روزانه‌ی اشتراک‌ها (`Plan.ai_daily_quota`) را هم دوباره بسنجید: سهمِ هزینه از درآمدِ هر اشتراک در `docs/ai-cost-and-guardrails.md` با همین عددها حساب شده است.