- subscription.0017/0018, payment.0013: pack plans deleted, QuestionCredit/HeartsPass models and Plan.kind / question_credits / hearts_days / Order.question_credits / hearts_days dropped. The only paid pack order was the company owner's test account (user 26). - Assistant: no credit spending; quota is the daily cap only (free 2, every plan 4, gift subscription 4). - Bazaar: verify_purchase is subscription-only (no inapp guess), start/purchase responses lose productType, verify refuses an order without a subscription. A paid order with no subscription now logs ERROR. - Removed POST /api/payment/orders (internal; no caller). Its permission tests stay. - Pack-based tests rewritten on subscriptions (refund, security, Bazaar token); pack-only test files deleted. - docs: profit table for 4/day on both payment routes plus free users; handbook, operations, CLAUDE.md current. 949 tests green. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
73 lines
7.0 KiB
Markdown
73 lines
7.0 KiB
Markdown
# دفترِ قیمتِ مدلها (اندازهگیریشده، نه از جدولِ قیمت)
|
||
|
||
این فایل یک دفتر است: هر بار قیمت یا مدل عوض شد، **ردیفِ تازه اضافه کنید و ردیفِ قدیمی را پاک
|
||
نکنید.** هدف این است که اگر 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` با همین عددها حساب شده است.
|