قیمت API هوش مصنوعی چگونه محاسبه میشود؟ راهنمای Token، مدلها و کاهش هزینه
راهنمای محاسبه قیمت API هوش مصنوعی؛ از Token ورودی و خروجی تا هزینه مدلهای متن، تصویر، صوت، ویدئو و Agentها و روشهای عملی کاهش مصرف.
مقدمه
قیمت API هوش مصنوعی یکی از مهمترین معیارها برای انتخاب مدل و زیرساخت مناسب است. بسیاری از توسعهدهندگان در ابتدا تصور میکنند هر درخواست API قیمت ثابتی دارد، اما هزینه نهایی میتواند به عوامل متعددی وابسته باشد.
در مدلهای متنی معمولاً تعداد Tokenهای ورودی و خروجی مهم است. در مدلهای تصویر، تعداد تصویر، کیفیت و Resolution اثر دارد. هزینه مدلهای صوتی ممکن است بر اساس مدت فایل یا تعداد کاراکتر محاسبه شود و قیمت مدلهای ویدئویی معمولاً به مدت، ابعاد، Frame Rate و نوع مدل وابسته است.
در سیستمهای پیشرفتهتر مانند RAG و AI Agent، یک درخواست کاربر ممکن است چند فراخوانی مدل، جستوجوی برداری، Tool Calling، Retry و Fallback ایجاد کند. بنابراین هزینه واقعی این سیستمها فقط قیمت یک پاسخ نیست.
برای محاسبه درست قیمت API هوش مصنوعی باید این موارد را در نظر بگیرید:
- مدل انتخابشده
- Token ورودی
- Token خروجی
- Cached Token
- Reasoning Token
- حجم Context
- تعداد تصویر
- کیفیت و ابعاد تصویر
- مدت صوت
- مدت و Resolution ویدئو
- تعداد مراحل Agent
- Tool Calling
- RAG
- Retry
- Fallback
- نرخ ارز
- هزینه زیرساخت و Provider
در این مقاله، روش محاسبه هزینه مدلهای مختلف را بررسی میکنیم و یاد میگیریم چگونه مصرف API را در محیط واقعی اندازهگیری و کنترل کنیم.
پاسخ کوتاه: قیمت API هوش مصنوعی چگونه محاسبه میشود؟
قیمت API هوش مصنوعی براساس مدل و نوع ورودی و خروجی محاسبه میشود. در مدلهای متنی، هزینه معمولاً از مجموع Tokenهای ورودی و خروجی به دست میآید. در مدلهای تصویر، صوت و ویدئو، عواملی مانند تعداد، کیفیت، Resolution و مدت نیز مؤثرند.
فرمول کلی مدلهای متنی:
هزینه ورودی =
تعداد Token ورودی
÷ ۱٬۰۰۰٬۰۰۰
× قیمت یک میلیون Token ورودی
هزینه خروجی =
تعداد Token خروجی
÷ ۱٬۰۰۰٬۰۰۰
× قیمت یک میلیون Token خروجی
هزینه کل =
هزینه ورودی
+ هزینه خروجی
+ سایر هزینههای قابل اعمال
اگر Agent، RAG، ابزار یا Retry داشته باشید، هزینه تمام فراخوانیهای ایجادشده باید با یکدیگر جمع شوند.
تفاوت قیمت اشتراک با قیمت API هوش مصنوعی
اشتراک یک اپلیکیشن چت با حساب API یکسان نیست.
در اشتراک اپلیکیشن، کاربر معمولاً مبلغ ثابتی برای استفاده از رابط آماده پرداخت میکند. محدودیتهای مصرف نیز توسط همان اپلیکیشن تعیین میشوند.
در API، هزینه براساس مصرف واقعی نرمافزار محاسبه میشود.
| ویژگی | اشتراک اپلیکیشن | API هوش مصنوعی |
|---|---|---|
| پرداخت ثابت ماهانه | معمولاً بله | معمولاً خیر |
| محاسبه بر اساس Token | برای کاربر قابل مشاهده نیست | معمولاً بله |
| استفاده در نرمافزار | محدود | بله |
| API Key | معمولاً ندارد | بله |
| کنترل Model ID | محدود | بله |
| اتصال به Backend | مستقیم نیست | بله |
| Tool Calling و RAG | محدود به محصول | قابل پیادهسازی |
| مدیریت بودجه | محدود | قابل برنامهریزی |
داشتن اشتراک یک سرویس چت معمولاً به معنی داشتن اعتبار API نیست. برای استفاده برنامهنویسی باید حساب API و Billing مربوط به آن را جداگانه بررسی کنید.
Token چیست؟
مدلهای زبانی متن را مستقیماً به شکل کلمه کامل پردازش نمیکنند. متن به واحدهای کوچکتری به نام Token تقسیم میشود.
Token ممکن است:
- یک کلمه
- بخشی از کلمه
- علامت نگارشی
- عدد
- فاصله
- بخشی از کد
باشد.
تعداد Token دقیقاً با تعداد کلمات برابر نیست. زبان، Tokenizer و مدل بر تعداد Token اثر دارند.
برای مثال، این جمله:
API هوش مصنوعی برای اتصال نرمافزارها به مدلها استفاده میشود.
ممکن است بسته به Tokenizer به تعداد متفاوتی Token تبدیل شود.
برای تخمین هزینه دقیق، بهتر است از اطلاعات Usage پاسخ API یا Tokenizer سازگار با همان مدل استفاده کنید.
Input Token چیست؟
Input Token تمام Tokenهایی است که به مدل ارسال میشوند.
ورودی فقط پیام جدید کاربر نیست و ممکن است شامل این موارد باشد:
- System Prompt
- پیام کاربر
- تاریخچه گفتگو
- اسناد RAG
- توضیحات ابزارها
- JSON Schema
- نتیجه Toolهای قبلی
- دستورهای امنیتی
- نمونههای Few-shot
- Memory
- Metadata
- پیام Agentهای دیگر
بنابراین ممکن است پیام کاربر فقط ۲۰ Token باشد، اما درخواست نهایی هزاران Token ورودی داشته باشد.
نمونه:
System Prompt: ۵۰۰ Token
تاریخچه گفتگو: ۳۰۰۰ Token
اسناد RAG: ۶۰۰۰ Token
پیام جدید کاربر: ۵۰ Token
Tool Schema: ۱۲۰۰ Token
مجموع ورودی:
۱۰٬۷۵۰ Token
اگر فقط متن پیام کاربر را برای محاسبه هزینه در نظر بگیرید، تخمین شما بسیار کمتر از مصرف واقعی خواهد بود.
Output Token چیست؟
Output Token مقدار محتوایی است که مدل تولید میکند.
خروجی میتواند شامل:
- پاسخ متنی
- کد
- JSON
- Tool Call
- Structured Output
- بعضی Tokenهای استدلالی، بسته به مدل و API
باشد.
قیمت Output Token در بسیاری از مدلها بیشتر از Input Token است؛ زیرا تولید خروجی معمولاً منابع محاسباتی بیشتری مصرف میکند.
برای کاهش هزینه خروجی:
- پاسخ را کوتاه درخواست کنید
- قالب خروجی تعیین کنید
max_tokensیا سقف خروجی مناسب قرار دهید- از مدل نخواهید اطلاعات تکراری تولید کند
- Structured Output محدود بسازید
- توضیح طولانی را فقط هنگام نیاز فعال کنید
Cached Token چیست؟
بعضی مدلها و Providerها از Prompt Caching پشتیبانی میکنند. اگر بخش بزرگی از Prompt در درخواستهای بعدی تکرار شود، ممکن است Tokenهای کششده با قیمت متفاوتی محاسبه شوند.
بخشهای مناسب Cache:
- System Prompt ثابت
- دستورهای سازمانی
- Tool Schema
- مستندات ثابت
- Context پایه
- نمونههای Few-shot
Prompt Caching میتواند هزینه و Latency را کاهش دهد، اما چند شرط دارد:
- مدل باید از Cache پشتیبانی کند
- ساختار Prompt باید پایدار باشد
- بخش ثابت معمولاً باید قبل از بخش متغیر قرار گیرد
- حداقل طول برای Cache ممکن است وجود داشته باشد
- Cache ممکن است TTL داشته باشد
- Cache Hit تضمینشده نیست
اطلاعات Usage ممکن است Tokenهای Cached را جدا نشان دهد:
{
"usage": {
"prompt_tokens": 12000,
"completion_tokens": 500,
"prompt_tokens_details": {
"cached_tokens": 8000
}
}
}
ساختار دقیق Usage به مدل و Provider بستگی دارد.
Reasoning Token چیست؟
مدلهای استدلالی ممکن است پیش از تولید پاسخ نهایی، پردازش بیشتری انجام دهند. این بخش میتواند با عنوانهایی مانند Reasoning Token یا Thinking Token گزارش شود.
Reasoning بیشتر ممکن است کیفیت را برای مسائل پیچیده افزایش دهد، اما:
- هزینه بیشتر میشود
- Latency افزایش مییابد
- برای وظایف ساده ارزش اقتصادی ندارد
مدل استدلالی برای این موارد مناسبتر است:
- Debug پیچیده
- تحلیل معماری
- حل مسئله چندمرحلهای
- برنامهریزی Agent
- تحلیل امنیتی
- استدلال ریاضی
- تصمیمسازی پیچیده
برای طبقهبندی ساده، استخراج فیلد، ترجمه کوتاه یا پاسخ FAQ معمولاً مدل سریع و اقتصادی مناسبتر است.
فرمول محاسبه قیمت مدل متنی
فرض کنید قیمت یک مدل بهصورت زیر است:
ورودی:
A دلار برای یک میلیون Token
خروجی:
B دلار برای یک میلیون Token
اگر درخواست دارای:
۲۰٬۰۰۰ Token ورودی
۲٬۰۰۰ Token خروجی
باشد:
هزینه ورودی =
۲۰٬۰۰۰ ÷ ۱٬۰۰۰٬۰۰۰ × A
هزینه خروجی =
۲٬۰۰۰ ÷ ۱٬۰۰۰٬۰۰۰ × B
هزینه کل =
هزینه ورودی + هزینه خروجی
مثال فرضی:
قیمت ورودی:
۱ دلار برای یک میلیون Token
قیمت خروجی:
۴ دلار برای یک میلیون Token
محاسبه:
هزینه ورودی =
۲۰٬۰۰۰ ÷ ۱٬۰۰۰٬۰۰۰ × ۱
= ۰٫۰۲ دلار
هزینه خروجی =
۲٬۰۰۰ ÷ ۱٬۰۰۰٬۰۰۰ × ۴
= ۰٫۰۰۸ دلار
هزینه کل =
۰٫۰۲۸ دلار
این اعداد فقط مثال آموزشی هستند و قیمت واقعی مدلها ممکن است تغییر کند.
تبدیل هزینه دلاری به ریالی
اگر قیمت پایه مدل دلاری باشد، هزینه ریالی به نرخ تبدیل ارز وابسته است.
فرمول ساده:
هزینه ریالی خام =
هزینه دلاری
× نرخ تبدیل دلار به ریال
هزینه نهایی ممکن است شامل این موارد نیز باشد:
- هزینه Provider
- هزینه انتقال و پرداخت
- هزینه زیرساخت
- هزینه Routing
- هزینه Monitoring
- هزینه پشتیبانی
- حاشیه سرویس
- مالیات یا هزینههای قانونی، در صورت اعمال
بنابراین مقایسه مبلغ کسرشده فقط با قیمت خام Provider ممکن است کامل نباشد. پلتفرم باید روش قیمتگذاری، نرخ تبدیل و هزینه نهایی را تا حد امکان شفاف نمایش دهد.
حداقل هزینه هر درخواست
بعضی زیرساختها ممکن است حداقل هزینهای برای هر درخواست داشته باشند.
اگر هزینه محاسبهشده از حداقل کمتر باشد:
هزینه نهایی =
حداقل هزینه درخواست
این سیاست برای پوشش هزینههای ثابت پردازش، Routing، Logging و Billing استفاده میشود.
وجود حداقل هزینه باید در مستندات قیمتگذاری اعلام شود، زیرا روی درخواستهای بسیار کوچک اثر بیشتری دارد.
چرا هزینه یک درخواست با شمارش Token پیام کاربر برابر نیست؟
هزینه براساس کل Payload پردازششده محاسبه میشود، نه فقط سؤال جدید.
مواردی که ممکن است فراموش شوند:
- System Prompt
- تاریخچه کامل گفتگو
- اسناد RAG
- Tool Schema
- خروجی ابزار
- پیامهای Agent
- Retry
- Fallback
- Reasoning
- تصویر ورودی
- حداقل هزینه درخواست
- نرخ تبدیل
- هزینههای غیرTokenی مدل
اگر درخواست چند بار به دلیل Retry اجرا شود، هر تلاش میتواند مصرف جداگانه داشته باشد.
هزینه Context Window
Context Window ظرفیت مدل است، اما استفاده از Context بزرگ رایگان نیست. هر Token واردشده میتواند هزینه ایجاد کند.
برای مثال، اگر در هر درخواست ۵۰ هزار Token تاریخچه ارسال شود، حتی پاسخ کوتاه ممکن است هزینه قابلتوجهی داشته باشد.
روشهای کاهش هزینه Context:
- محدود کردن تاریخچه
- خلاصهسازی مکالمه
- حذف پیامهای نامرتبط
- بازیابی هدفمند اسناد
- کاهش تعداد Chunkهای RAG
- استفاده از Metadata Filter
- فشرده کردن Tool Result
- شروع Session جدید هنگام تغییر موضوع
- استفاده از حافظه ساختاریافته
- نگهداری تصمیمها بهجای کل گفتگو
Context Window بزرگتر به این معنی نیست که باید همیشه از تمام ظرفیت آن استفاده کنید.
هزینه Streaming
Streaming پاسخ را بهتدریج ارسال میکند. در اغلب موارد، Streaming قیمت Token را کاهش نمیدهد.
مزیت Streaming:
- نمایش سریعتر پاسخ
- تجربه کاربری بهتر
- کاهش زمان انتظار ادراکی
- امکان توقف زودهنگام توسط کاربر
اگر کاربر پاسخ را زود متوقف کند و Provider تولید را لغو کند، ممکن است Output Token کمتری مصرف شود. اما این رفتار باید در همان API آزمایش شود.
در Streaming، اطلاعات Usage ممکن است:
- در Chunk نهایی ارسال شود
- نیازمند گزینه خاص باشد
- در بعضی مدلها ارائه نشود
- با تأخیر در Log ثبت شود
برای Billing نباید فقط به متن دریافتشده در UI متکی باشید.
هزینه Structured Outputs
Structured Output معمولاً هزینه مستقلی جدا از Token ندارد، اما میتواند بر تعداد Tokenها و Retry اثر بگذارد.
مزایای اقتصادی:
- خروجی کوتاهتر
- Parsing سادهتر
- کاهش پاسخ نامعتبر
- کاهش Retry
- اتصال مستقیم به Workflow
نمونه:
{
"category": "billing",
"priority": "high",
"requires_human": true
}
در مقابل، اگر از مدل بخواهید توضیحی چندصفحهای تولید کند و سپس آن را Parse کنید، Token خروجی و احتمال خطا افزایش مییابد.
هزینه Tool Calling
Tool Calling میتواند چند مرحله ایجاد کند:
کاربر
→ مدل
→ Tool Call
→ اجرای ابزار
→ نتیجه ابزار
→ مدل
→ پاسخ نهایی
در این جریان حداقل دو فراخوانی مدل ممکن است انجام شود:
- انتخاب ابزار
- تولید پاسخ نهایی پس از مشاهده نتیجه
اگر ابزار دیگری لازم باشد، مراحل بیشتر میشوند.
هزینه Tool Calling شامل:
- Tokenهای مدل در هر Turn
- Tool Schema
- نتیجه ابزار
- زیرساخت اجرای ابزار
- API خارجی
- Retry
- Log و Monitoring
است.
هزینه RAG
یک سیستم RAG معمولاً این مراحل را دارد:
- دریافت سؤال
- ساخت Embedding سؤال
- جستوجوی Vector Database
- بازیابی Chunkها
- افزودن Chunkها به Prompt
- فراخوانی مدل زبانی
- تولید پاسخ
هزینه RAG میتواند شامل این موارد باشد:
- Embedding اسناد
- Embedding سؤال
- Vector Database
- Storage
- Search
- Reranking
- Token اسناد بازیابیشده
- مدل تولید پاسخ
- Citation و پردازش خروجی
هزینه یکباره Indexing
برای ساخت اولیه پایگاه دانش، تمام اسناد Chunk و Embedding میشوند.
هزینه Indexing =
مجموع Token اسناد
× قیمت Embedding
هزینه هر Query
هزینه Query =
Embedding سؤال
+ جستوجوی برداری
+ Reranking
+ Token Context بازیابیشده
+ Token خروجی مدل
بزرگ کردن تعداد Chunkهای بازیابیشده همیشه کیفیت را بهتر نمیکند و هزینه ورودی را افزایش میدهد.
هزینه AI Agent
در Agent، یک درخواست کاربر ممکن است چند Turn ایجاد کند.
نمونه:
۱. مدل درخواست را تحلیل میکند
۲. ابزار جستوجو را فراخوانی میکند
۳. مدل نتیجه را بررسی میکند
۴. API سفارش را فراخوانی میکند
۵. مدل درخواست تأیید میکند
۶. کاربر تأیید میکند
۷. ابزار ثبت Ticket اجرا میشود
۸. مدل پاسخ نهایی میسازد
هزینه Agent:
هزینه Agent =
مجموع هزینه تمام Model Callها
+ Tool Callها
+ RAG
+ Retry
+ Fallback
+ حافظه و Storage
+ Monitoring
بنابراین بهتر است بهجای Cost per Request از این معیار استفاده کنید:
Cost per Successful Task
Cost per Successful Task چیست؟
ممکن است مدل ارزان در اولین تلاش وظیفه را حل نکند و چند Retry نیاز داشته باشد. مدل گرانتر ممکن است با مراحل کمتر موفق شود.
فرمول:
Cost per Successful Task =
هزینه تمام تلاشها
÷ تعداد Taskهای موفق
مثال:
مدل A:
هزینه هر تلاش ۰٫۰۱ دلار
نرخ موفقیت ۳۰ درصد
مدل B:
هزینه هر تلاش ۰٫۰۳ دلار
نرخ موفقیت ۹۰ درصد
مدل A لزوماً اقتصادیتر نیست، زیرا برای رسیدن به موفقیت ممکن است تلاشهای بیشتری لازم باشد.
در Agentها این موارد را هم اندازهگیری کنید:
- تعداد Turn
- تعداد Tool Call
- Retry
- زمان توسعهدهنده
- نرخ نیاز به مداخله انسانی
- نرخ شکست
- Latency
- Regression
هزینه Multi-Agent
در سیستم Multi-Agent چند Agent تخصصی با یکدیگر کار میکنند.
برای مثال:
- Triage Agent
- Research Agent
- Analysis Agent
- Reviewer Agent
- Final Response Agent
هر Agent میتواند یک یا چند Model Call داشته باشد. اگر Agentها موازی اجرا شوند، Latency کاهش مییابد، اما هزینه کل افزایش پیدا میکند.
فرمول مفهومی:
هزینه Multi-Agent =
مجموع هزینه تمام Agentها
+ Orchestration
+ Shared Context
+ Review
+ Retry
Multi-Agent را فقط زمانی استفاده کنید که تخصص و جداسازی وظایف ارزش واقعی ایجاد کند.
قیمت API تولید تصویر
مدلهای تصویر ممکن است به روشهای مختلف قیمتگذاری شوند:
- قیمت ثابت هر تصویر
- ابعاد تصویر
- کیفیت
- تعداد تصویر
- Token ورودی
- Token خروجی تصویری
- تعداد مراحل
- نوع مدل
- ویرایش یا تولید
- Reference Image
- Batch
عوامل مؤثر:
Resolution
تصویر بزرگتر معمولاً پردازش بیشتری نیاز دارد.
نمونه ابعاد:
1024×1024
1536×1024
1024×1536
کیفیت
سطوحی مانند:
low
medium
high
میتوانند قیمت متفاوت داشته باشند.
تعداد خروجی
اگر n=4 باشد، ممکن است هزینه چهار تصویر محاسبه شود.
ورودی تصویر
در Image Editing یا Image-to-Image، پردازش تصویر ورودی نیز ممکن است هزینه داشته باشد.
Tokenهای تصویری
بعضی مدلها هزینه را بر اساس Tokenهای تصویری محاسبه میکنند. در این حالت، فقط usage متنی پاسخ برای تخمین کافی نیست.
چرا هزینه تصویر از Token نشاندادهشده بیشتر است؟
دلایل احتمالی:
- هزینه خروجی تصویر جدا محاسبه شده است
- Resolution بالاتر انتخاب شده است
- کیفیت High بوده است
- چند تصویر تولید شده است
- Token تصویری جداست
- هزینه Generation در Usage متنی نمایش داده نشده است
- حداقل هزینه درخواست اعمال شده است
- نرخ تبدیل ارز و هزینه سرویس اضافه شده است
برای محاسبه دقیق، باید مدل قیمتگذاری همان Endpoint تصویری را بررسی کرد.
قیمت API تحلیل تصویر
در مدلهای Vision، تصویر ورودی میتواند به Token تصویری تبدیل شود.
عوامل مؤثر:
- ابعاد تصویر
- Detail Level
- تعداد تصاویر
- مدل
- Prompt متنی
- پاسخ خروجی
- Base64 یا URL
- پیشپردازش Provider
اگر چند تصویر ارسال کنید، مصرف هر تصویر میتواند به هزینه اضافه شود.
برای کاهش هزینه:
- تصویر را به اندازه لازم Resize کنید
- از Detail پایینتر برای تحلیل عمومی استفاده کنید
- تصاویر تکراری را Cache کنید
- فقط بخش لازم را Crop کنید
- تعداد تصویر را محدود کنید
قیمت تبدیل گفتار به متن
Speech-to-Text معمولاً براساس مدت صوت قیمتگذاری میشود.
فرمول کلی:
هزینه =
مدت صوت
× قیمت هر دقیقه یا ساعت
عوامل دیگر:
- مدل
- زبان
- Diarization
- Timestamp
- کیفیت صوت
- Realtime یا Batch
- تعداد کانال
- Translation
برای کاهش هزینه:
- سکوتهای طولانی را حذف کنید
- فایلها را فشرده کنید
- بخشهای غیرضروری را ارسال نکنید
- Batch Processing را بررسی کنید
- مدل مناسب کیفیت صوت را انتخاب کنید
قیمت تبدیل متن به گفتار
Text-to-Speech ممکن است براساس موارد زیر قیمتگذاری شود:
- تعداد کاراکتر
- Token
- مدت صوت خروجی
- نوع صدا
- کیفیت
- مدل
- Voice Cloning
- Realtime
فرمول کلی:
هزینه =
تعداد کاراکتر یا Token ورودی
× نرخ مدل
صدای باکیفیتتر یا مدل چندزبانه ممکن است قیمت بیشتری داشته باشد.
قیمت API تولید ویدئو
تولید ویدئو از پرهزینهترین کاربردهای AI API است.
عوامل مهم:
- مدت ویدئو
- Resolution
- Frame Rate
- نسبت تصویر
- کیفیت
- مدل
- صدا
- Text-to-Video
- Image-to-Video
- Reference Video
- تعداد Generation
یک فرمول عمومی ثابت برای تمام مدلهای ویدئویی وجود ندارد.
بعضی مدلها قیمت ثابت برای هر ثانیه دارند. برخی هزینه را بر اساس Tokenهای ویدئویی محاسبه میکنند.
فرمول نمونه Token ویدئویی ممکن است شکلی شبیه این داشته باشد:
Video Tokens =
عرض
× ارتفاع
× مدت
× Frame Rate
÷ ضریب مدل
ضریب و فرمول دقیق باید از مستندات همان مدل دریافت شود.
تأثیر Resolution بر قیمت ویدئو
افزایش عرض و ارتفاع باعث رشد تعداد Pixelها میشود.
برای مثال، دو برابر کردن عرض و ارتفاع به معنی چهار برابر شدن تعداد Pixel است:
عرض × ۲
ارتفاع × ۲
تعداد Pixel:
× ۴
بنابراین افزایش Resolution میتواند هزینه را بهصورت غیرخطی افزایش دهد.
تأثیر مدت ویدئو
اگر قیمت براساس ثانیه یا Token ویدئویی باشد، افزایش مدت مستقیماً هزینه را افزایش میدهد.
برای کنترل هزینه:
- ابتدا نسخه کوتاه تولید کنید
- Prompt را قبل از Generation نهایی آزمایش کنید
- از Resolution پایین برای Preview استفاده کنید
- خروجیهای ناموفق را تحلیل کنید
- تعداد Variation را محدود کنید
- Seed یا Reference مناسب استفاده کنید
هزینه Retry
اگر درخواست به دلیل Timeout یا خطای موقت دوباره ارسال شود، ممکن است تلاش قبلی نیز مصرف ایجاد کرده باشد.
Retry باید فقط برای خطاهای مناسب انجام شود:
- Timeout
- 429
- خطای شبکه
- ۵xx
این خطاها معمولاً نباید Retry شوند:
- 401
- 403
- Model not found
- ورودی نامعتبر
- موجودی ناکافی
Retry نامحدود میتواند هزینه را چند برابر کند.
هزینه Fallback
Fallback یعنی پس از شکست مدل اصلی، مدل دیگری استفاده شود.
مدل اصلی
→ شکست
→ مدل جایگزین
اگر مدل اصلی بخشی از پاسخ را پردازش کرده باشد، ممکن است هزینه آن نیز محاسبه شود. سپس درخواست کامل یا بخشی از آن برای مدل جایگزین ارسال میشود.
بنابراین:
هزینه Fallback =
هزینه تلاش اول
+ هزینه مدل جایگزین
Fallback باید:
- برای خطاهای مناسب فعال شود
- سقف تعداد داشته باشد
- مدل سازگار انتخاب کند
- در Observability ثبت شود
- در محاسبه Billing لحاظ شود
هزینه Batch API
Batch Processing برای کارهایی مناسب است که پاسخ فوری لازم ندارند:
- پردازش هزاران متن
- Embedding اسناد
- طبقهبندی
- خلاصهسازی انبوه
- تولید Metadata
- ارزیابی Dataset
بعضی Providerها برای Batch قیمت کمتر یا Rate Limit متفاوت ارائه میکنند.
مزایا:
- هزینه کمتر در بعضی سرویسها
- پردازش انبوه
- مدیریت بهتر Queue
- مناسب Taskهای آفلاین
محدودیت:
- پاسخ فوری نیست
- مدیریت Job لازم است
- خطای هر Item باید بررسی شود
- نتیجه ممکن است با تأخیر آماده شود
چگونه هزینه ماهانه را تخمین بزنیم؟
ابتدا این متغیرها را مشخص کنید:
- کاربران فعال روزانه
- درخواست هر کاربر
- Token ورودی متوسط
- Token خروجی متوسط
- روزهای فعالیت
- نرخ Retry
- درصد Fallback
- درخواستهای RAG
- تعداد Tool Call
- نوع مدل
فرمول ساده:
درخواست ماهانه =
کاربران فعال روزانه
× درخواست هر کاربر
× روزهای ماه
Token ورودی ماهانه:
درخواست ماهانه
× میانگین Token ورودی
Token خروجی ماهانه:
درخواست ماهانه
× میانگین Token خروجی
سپس قیمت مدل اعمال میشود.
مثال تخمین هزینه ماهانه
فرض کنید:
۱۰۰۰ کاربر فعال روزانه
۵ درخواست برای هر کاربر
۳۰ روز
۱۵۰۰ Token ورودی در هر درخواست
۳۰۰ Token خروجی در هر درخواست
تعداد درخواست:
۱۰۰۰ × ۵ × ۳۰
= ۱۵۰٬۰۰۰ درخواست
Token ورودی:
۱۵۰٬۰۰۰ × ۱۵۰۰
= ۲۲۵٬۰۰۰٬۰۰۰ Token
Token خروجی:
۱۵۰٬۰۰۰ × ۳۰۰
= ۴۵٬۰۰۰٬۰۰۰ Token
حالا باید نرخ ورودی و خروجی مدل انتخابشده اعمال شود. سپس هزینه Retry، Fallback، Embedding و زیرساخت اضافه شود.
محاسبه هزینه با Python
from dataclasses import dataclass
@dataclass
class ModelPrice:
input_per_million: float
output_per_million: float
cached_input_per_million: (
float | None
) = None
def calculate_text_cost(
input_tokens: int,
output_tokens: int,
price: ModelPrice,
cached_tokens: int = 0,
) -> dict:
normal_input_tokens = max(
input_tokens - cached_tokens,
0,
)
input_cost = (
normal_input_tokens
/ 1_000_000
* price.input_per_million
)
cached_rate = (
price.cached_input_per_million
if price.cached_input_per_million
is not None
else price.input_per_million
)
cached_cost = (
cached_tokens
/ 1_000_000
* cached_rate
)
output_cost = (
output_tokens
/ 1_000_000
* price.output_per_million
)
total_cost = (
input_cost
+ cached_cost
+ output_cost
)
return {
"input_cost": input_cost,
"cached_cost": cached_cost,
"output_cost": output_cost,
"total_cost": total_cost,
}
استفاده با قیمت فرضی:
price = ModelPrice(
input_per_million=1.0,
output_per_million=4.0,
cached_input_per_million=0.2,
)
result = calculate_text_cost(
input_tokens=20_000,
output_tokens=2_000,
cached_tokens=8_000,
price=price,
)
print(result)
قیمتها را Hard-code نکنید. بهتر است از Model Registry یا تنظیمات قابل بهروزرسانی استفاده کنید.
محاسبه هزینه با JavaScript
function calculateTextCost({
inputTokens,
outputTokens,
cachedTokens = 0,
inputPricePerMillion,
outputPricePerMillion,
cachedPricePerMillion,
}) {
const normalInputTokens =
Math.max(
inputTokens - cachedTokens,
0
);
const inputCost =
normalInputTokens
/ 1_000_000
* inputPricePerMillion;
const cachedRate =
cachedPricePerMillion
?? inputPricePerMillion;
const cachedCost =
cachedTokens
/ 1_000_000
* cachedRate;
const outputCost =
outputTokens
/ 1_000_000
* outputPricePerMillion;
return {
inputCost,
cachedCost,
outputCost,
totalCost:
inputCost
+ cachedCost
+ outputCost,
};
}
ثبت Usage در Python
اتصال به API درواره:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ[
"DARVAREH_API_KEY"
],
base_url=(
"https://api.darvareh.ir/v1"
),
)
response = (
client.chat.completions.create(
model="YOUR_MODEL_ID",
messages=[
{
"role": "user",
"content": (
"API هوش مصنوعی "
"را توضیح بده."
),
}
],
)
)
usage = response.usage
print({
"input_tokens":
usage.prompt_tokens,
"output_tokens":
usage.completion_tokens,
"total_tokens":
usage.total_tokens,
})
ساختار Usage ممکن است بسته به مدل متفاوت باشد.
مدیریت قیمت مدلها
یک جدول Model Registry بسازید:
CREATE TABLE model_pricing (
model_id TEXT PRIMARY KEY,
input_price_per_million NUMERIC,
output_price_per_million NUMERIC,
cached_input_price_per_million NUMERIC,
pricing_unit TEXT NOT NULL,
currency TEXT NOT NULL,
effective_from TIMESTAMPTZ NOT NULL,
effective_to TIMESTAMPTZ
);
قیمت باید دارای تاریخ اعتبار باشد. اگر قیمت تغییر کند، مصرف قبلی نباید با قیمت جدید دوباره محاسبه شود.
برای هر درخواست ثبت کنید:
- Model ID
- قیمت در زمان درخواست
- نرخ ارز در زمان درخواست
- Token
- هزینه خام
- هزینه نهایی
- Request ID
نرخ ارز و تاریخچه قیمت
اگر Billing ریالی و قیمت پایه دلاری است، نرخ ارز باید در زمان درخواست ثبت شود.
ساختار مناسب:
CREATE TABLE exchange_rates (
id UUID PRIMARY KEY,
base_currency TEXT NOT NULL,
quote_currency TEXT NOT NULL,
rate NUMERIC NOT NULL,
effective_at TIMESTAMPTZ NOT NULL
);
در Usage Log بهتر است exchange_rate_id یا نرخ Snapshotشده ذخیره شود.
این کار باعث میشود:
- صورتحساب قابل بازسازی باشد
- تغییر نرخ فقط روی مصرف آینده اعمال شود
- اختلاف مالی قابل بررسی باشد
- گزارش تاریخی دقیق بماند
کنترل هزینه برای هر کاربر
در SaaS، مصرف باید به کاربر یا Organization نسبت داده شود.
اطلاعات پیشنهادی:
{
"user_id": "user-42",
"organization_id": "org-1",
"api_key_id": "key-10",
"model_id": "MODEL_ID",
"input_tokens": 1200,
"output_tokens": 300,
"cost": 0.0024,
"request_id": "req-123"
}
بودجه میتواند در چند سطح باشد:
- حساب
- Organization
- API Key
- کاربر
- پروژه
- مدل
- روزانه
- ماهانه
محدود کردن Max Tokens
برای جلوگیری از خروجی بسیار بلند:
response = (
client.chat.completions.create(
model="YOUR_MODEL_ID",
messages=messages,
max_tokens=500,
)
)
بعضی مدلها بهجای max_tokens از پارامتر دیگری مانند max_completion_tokens استفاده میکنند. سازگاری Model ID را بررسی کنید.
سقف بیش از حد پایین ممکن است پاسخ را ناقص کند. مقدار باید متناسب با Task باشد.
کاهش هزینه با Model Routing
همه درخواستها را به مدل گران ارسال نکنید.
نمونه:
| وظیفه | مدل پیشنهادی |
|---|---|
| طبقهبندی | سریع و اقتصادی |
| استخراج اطلاعات | مدل کوچک با خروجی ساختاریافته |
| خلاصهسازی | مدل استاندارد |
| استدلال پیچیده | مدل قوی |
| کدنویسی | مدل Coding |
| تصویر | مدل تصویری متناسب با کیفیت |
| Preview ویدئو | Resolution پایین |
| خروجی نهایی ویدئو | مدل و کیفیت بالاتر |
Router میتواند نوع Task، ریسک، بودجه و Latency را بررسی کند.
کاهش هزینه RAG
- Chunk مناسب بسازید
- تعداد نتایج را محدود کنید
- Metadata Filter اعمال کنید
- Hybrid Search استفاده کنید
- Reranking انجام دهید
- اسناد تکراری را حذف کنید
- Context را فشرده کنید
- پاسخهای پرتکرار را Cache کنید
- Embedding سند را دوباره نسازید
- فقط اسناد تغییرکرده را Re-index کنید
کاهش هزینه Agent
- سقف Turn تعیین کنید
- Tool Call تکراری را تشخیص دهید
- نتیجه ابزار را خلاصه کنید
- Agentهای غیرضروری را حذف کنید
- Task ساده را به Workflow تبدیل کنید
- مدل سریع برای Triage استفاده کنید
- Human Approval را فقط برای عملیات حساس قرار دهید
- Retry را محدود کنید
- Deadline و Budget تعریف کنید
- Context Agentها را جدا کنید
Cache پاسخ
برای درخواستهای قطعی یا پرتکرار میتوان پاسخ را Cache کرد.
Cache Key باید شامل موارد زیر باشد:
- Model ID
- Prompt Version
- ورودی
- تنظیمات
- Tenant
- زبان
- نسخه داده
برای داده شخصی، پویا یا حساس، Cache باید Scope و TTL مناسب داشته باشد.
Monitoring هزینه
Metricهای ضروری:
- هزینه روزانه
- هزینه ماهانه
- هزینه هر مدل
- هزینه هر API Key
- هزینه هر کاربر
- هزینه هر Organization
- Cost per Request
- Cost per Successful Task
- Token ورودی
- Token خروجی
- Cache Hit Rate
- Retry Rate
- Fallback Rate
- Tool Calls
- Agent Turns
Alertها:
- عبور از بودجه روزانه
- رشد ناگهانی مصرف
- افزایش Output Token
- افزایش Retry
- استفاده از مدل گران غیرمنتظره
- افزایش مصرف API Key
- کاهش Cache Hit
- Loop Agent
خطاهای رایج در محاسبه قیمت
محاسبه فقط پیام آخر
تاریخچه، System Prompt و RAG نادیده گرفته میشوند.
استفاده از قیمت یکسان برای ورودی و خروجی
در بسیاری از مدلها قیمت متفاوت است.
نادیده گرفتن Cached Token
ممکن است قیمت متفاوتی داشته باشد.
نادیده گرفتن Tool Loop
یک درخواست کاربر چند Model Call ایجاد میکند.
نادیده گرفتن Retry و Fallback
تلاشهای شکستخورده ممکن است مصرف داشته باشند.
محاسبه تصویر از روی Token متن
هزینه Generation یا Token تصویری ممکن است جدا باشد.
استفاده از قیمت فعلی برای Usage تاریخی
قیمت و نرخ ارز باید Snapshot شوند.
Hard-code کردن قیمتها
قیمت مدلها تغییر میکند و نیاز به Registry دارد.
نداشتن حداقل هزینه
اگر پلتفرم حداقل هزینه اعمال میکند، باید در Calculator لحاظ شود.
انتخاب API هوش مصنوعی ارزان
«ارزان» فقط به قیمت Token مربوط نیست.
معیارهای درست:
- Cost per Successful Task
- کیفیت پاسخ
- Retry
- Latency
- پایداری
- Rate Limit
- Context
- Tool Calling
- هزینه توسعه
- هزینه Review
- Fallback
- دسترسی و روش پرداخت
مدلی با قیمت بالاتر ممکن است با مراحل کمتر، نتیجه اقتصادیتری ایجاد کند.
قیمت API هوش مصنوعی درواره
درواره یک API سازگار با OpenAI ارائه میکند و توسعهدهندگان میتوانند از طریق آن به مدلهای مختلف دسترسی داشته باشند.
Base URL:
https://api.darvareh.ir/v1
قیمت هر مدل میتواند بر اساس موارد زیر متفاوت باشد:
- Provider
- مدل
- نوع ورودی و خروجی
- Token
- تصویر
- صوت
- ویدئو
- نرخ ارز
- سیاست قیمتگذاری
پیش از استفاده:
- صفحه مدل را بررسی کنید
- واحد قیمتگذاری را بخوانید
- ورودی و خروجی را جدا ببینید
- ویژگیهای غیرTokenی را بررسی کنید
- درخواست آزمایشی ارسال کنید
- Usage و مبلغ کسرشده را مقایسه کنید
- سپس تخمین Production بسازید
چکلیست کنترل هزینه Production
قیمت
- قیمت مدل ثبت شده است
- واحد قیمتگذاری مشخص است
- ورودی و خروجی جدا هستند
- تاریخ اعتبار قیمت وجود دارد
- نرخ ارز Snapshot میشود
Usage
- Token ثبت میشود
- تصویر و ویدئو جدا ثبت میشوند
- Tool Call ثبت میشود
- Retry و Fallback ثبت میشوند
- Request ID وجود دارد
بودجه
- سقف روزانه وجود دارد
- سقف ماهانه وجود دارد
- بودجه API Key تعریف شده است
- Alert فعال است
- رفتار پس از عبور از بودجه مشخص است
بهینهسازی
- Model Routing وجود دارد
- Context محدود است
- Max Tokens تعیین شده است
- Cache بررسی شده است
- Agent Loop محدود است
- Batch برای Taskهای آفلاین بررسی شده است
امنیت
- API Key در Frontend نیست
- مصرف هر Tenant جداست
- Rate Limit وجود دارد
- سوءاستفاده شناسایی میشود
- کلید افشاشده سریع ابطال میشود
پرسشهای متداول
قیمت API هوش مصنوعی چگونه محاسبه میشود؟
در مدل متنی معمولاً براساس Token ورودی و خروجی و در مدلهای تصویر، صوت و ویدئو براساس واحدهایی مانند تعداد، کیفیت، Resolution و مدت محاسبه میشود.
Token چیست؟
واحدی است که مدل برای پردازش ورودی و تولید خروجی استفاده میکند. Token الزاماً یک کلمه کامل نیست.
آیا Token ورودی و خروجی قیمت یکسان دارند؟
در بسیاری از مدلها خیر. قیمت خروجی ممکن است بیشتر باشد.
آیا System Prompt هم هزینه دارد؟
بله. تمام محتوای ارسالشده به مدل بخشی از Input Token است.
آیا تاریخچه چت هزینه دارد؟
بله. اگر تاریخچه در هر درخواست دوباره ارسال شود، Token ورودی ایجاد میکند.
Streaming ارزانتر است؟
معمولاً خیر. Streaming روش دریافت پاسخ را تغییر میدهد.
آیا RAG هزینه را افزایش میدهد؟
RAG هزینه Embedding، جستوجو، Context اسناد و تولید پاسخ دارد، اما میتواند دقت را افزایش و Hallucination را کاهش دهد.
Agent چقدر هزینه دارد؟
به تعداد Turn، مدل، Tool Call، RAG، Retry و Fallback وابسته است. یک درخواست کاربر ممکن است چند فراخوانی مدل ایجاد کند.
چرا هزینه تصویر با Token متن برابر نیست؟
زیرا تولید تصویر ممکن است هزینه مستقل، Token تصویری، کیفیت، Resolution یا قیمت ثابت هر Generation داشته باشد.
چرا هزینه ویدئو زیاد است؟
ویدئو شامل تعداد زیادی Frame و Pixel است و مدت، Resolution، Frame Rate و مدل بر هزینه اثر دارند.
Cached Token چیست؟
بخشی از Prompt تکراری است که در مدلهای پشتیبان Cache ممکن است با قیمت متفاوت پردازش شود.
Reasoning Token چیست؟
Token یا ظرفیت محاسباتی مربوط به استدلال داخلی بعضی مدلهاست و میتواند هزینه و Latency را افزایش دهد.
چگونه هزینه را کاهش دهیم؟
مدل مناسب انتخاب کنید، Context را محدود کنید، Max Tokens تعیین کنید، Cache و Batch را بررسی کنید و Agent Loop و Retry را کنترل کنید.
چگونه هزینه ماهانه را تخمین بزنیم؟
تعداد درخواست، Token متوسط، قیمت مدل، روزهای فعالیت، Retry، Fallback، RAG و Agent Turnها را محاسبه کنید.
API هوش مصنوعی رایگان است؟
بعضی سرویسها اعتبار یا مدل آزمایشی دارند، اما Production معمولاً براساس مصرف هزینه دارد.
Base URL درواره چیست؟
https://api.darvareh.ir/v1
مدلهای قابل دسترس را چگونه دریافت کنیم؟
GET https://api.darvareh.ir/v1/models
آیا میتوان برای API Key بودجه تعیین کرد؟
در یک زیرساخت حرفهای بهتر است بودجه روزانه و ماهانه، RPM و TPM برای هر کلید قابل تنظیم باشد.
جمعبندی
قیمت API هوش مصنوعی فقط از تعداد کلمات پیام کاربر به دست نمیآید. برای محاسبه دقیق باید تمام ورودی، خروجی و مراحل پردازش را در نظر بگیرید.
در مدل متنی:
هزینه =
Input Token
+ Output Token
+ Cached Token
+ Reasoning Token
در RAG:
هزینه =
Embedding
+ Vector Search
+ Reranking
+ Context
+ Model Output
در Agent:
هزینه =
مجموع Model Callها
+ Tool Calls
+ RAG
+ Retry
+ Fallback
در مدلهای تصویر، صوت و ویدئو نیز تعداد، کیفیت، Resolution، مدت و نوع مدل اهمیت دارند.
برای کنترل هزینه:
- Usage واقعی را ثبت کنید
- قیمتها را Versioning کنید
- نرخ ارز را Snapshot کنید
- Model Routing بسازید
- Context را کاهش دهید
- Max Tokens تعیین کنید
- Retry و Fallback را محدود کنید
- Agent Turnها را کنترل کنید
- بودجه و Alert تعریف کنید
- Cost per Successful Task را اندازه بگیرید
درواره با ارائه API سازگار با OpenAI، امکان دسترسی به مدلهای مختلف را از طریق یک Base URL فراهم میکند:
https://api.darvareh.ir/v1
پیش از انتخاب مدل، علاوه بر قیمت خام Token، کیفیت، Latency، پایداری، Rate Limit و هزینه واقعی موفقیت را بررسی کنید.
مقالات مرتبط پیشنهادی
- API هوش مصنوعی چیست؟ راهنمای کامل AI API
- چگونه API هوش مصنوعی دریافت کنیم؟
- Token در API هوش مصنوعی چیست؟
- چگونه هزینه API هوش مصنوعی را کاهش دهیم؟
- Prompt Caching چیست؟
- Context Window چیست؟
- آموزش استفاده از API درواره با cURL
- آموزش اتصال API درواره به PHP و Laravel
- AI Router چیست؟
- Fallback و Retry در API هوش مصنوعی
- Observability در هوش مصنوعی چیست؟
برای مشاهده مدلهای هوش مصنوعی و بررسی قیمت هر مدل، در درواره ثبتنام کنید و از صفحه مدلها، واحد قیمتگذاری، قابلیتها و کاربرد مدل موردنظر را بررسی کنید.
پس از ساخت API Key، مدلهای فعال را از Endpoint زیر دریافت کنید:
https://api.darvareh.ir/v1/models
سپس یک درخواست آزمایشی ارسال کنید، Usage واقعی را اندازه بگیرید و براساس الگوی مصرف پروژه، هزینه روزانه و ماهانه را تخمین بزنید.
با استفاده از API سازگار با OpenAI درواره میتوانید مدلهای متناسب با کیفیت، سرعت و بودجه پروژه را از طریق یک اتصال واحد به نرمافزار خود اضافه کنید.