فاز 17 · درس 15

کاهش 50 درصدی هزینه‌ها با Batch API در مدل‌های زبانی

نوع
مفهومی
زمان
حدود 45 دقیقه
زبان‌ها
Python (stdlib, toy batch-vs-sync cost simulator)
پیش‌نیاز
فاز 17 · 14 (کش کردن پرامپت و کش‌گذاری معنایی)
نمایی تمثیلی از پردازش شبانه با بسته‌های داده منظم چیده‌شده روی تسمه نقاله در سکوت ساعت شبانه
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مفاهیم پایه
  4. سه API دسته‌ای مطرح
  5. مفهوم بنیادین: ناهمگام، نه کند
  6. تجمیع با کش‌گذاری
  7. تریاژ بار کاری
  8. تله‌ی تعاملی بودنِ ناقص
  9. تله‌ی ساختار خروجی
  10. اعدادی که باید به خاطر بسپارید
  11. پیاده‌سازی عملی
  12. خروجی کار
  13. تمرین‌ها
  14. اصطلاحات کلیدی
  15. برای مطالعه‌ی بیشتر

بسیاری از تیم‌های فنی هنگام اجرای پایپ‌لاین‌های حجیم مانند خلاصه‌سازی هزاران سند، تولید گزارش‌های دوره‌ای یا برچسب‌گذاری داده‌ها، فراخوانی‌ها را به همان شیوه تعاملی و همگام انجام می‌دهند. این کار هزینه‌های سرسام‌آوری به پروژه تحمیل می‌کند، در حالی که در اکثر این سناریوها کاربر نیازی به دریافت پاسخ لحظه‌ای ندارد و تحویل کار تا چند ساعت بعد یا صبح روز بعد کاملاً پاسخگوی نیاز محصول است.

ارائه‌دهندگان بزرگ هوش مصنوعی مانند OpenAI، Anthropic و گوگل قابلیتی با عنوان Batch API عرضه کرده‌اند که در ازای زمان تحویل تا 24 ساعت، 50 درصد تخفیف روی توکن‌های ورودی و خروجی ارائه می‌دهد. ترکیب این قابلیت با کش کردن پرامپت می‌تواند هزینه‌ی اجرای پایپ‌لاین‌های سنگین را تا 90 درصد کاهش دهد و بخش عمده‌ای از بودجه سازمان را آزاد کند.

پرداخت ارزی برای تهیه اعتبار API شرکت‌های خارجی مثل OpenAI و Anthropic از ایران با کارت‌های بانکی ممکن نیست و چالش‌های مالی خاص خود را دارد. از همین رو، مدیریت بهینه توکن‌ها و استفاده از اهرم‌هایی چون Batch API و کشینگ برای تیم‌های ایرانی اهمیتی دوچندان دارد تا با کمترین هزینه، بیشترین حجم پردازش را انجام دهند.

همه‌ی ارائه‌دهندگان بزرگ، یک API دسته‌ای (Batch API) ناهمگام با 50% تخفیف و زمان تحویل حدوداً 24 ساعته ارائه می‌دهند. OpenAI، Anthropic، Google و بیشتر پلتفرم‌های استنتاج (سطح دسته‌ای Fireworks، حالت دسته‌ای Together) همین الگو را پیاده کرده‌اند. ترکیب پردازش دسته‌ای با کش کردن پرامپت (prompt caching)، هزینه‌ی پایپ‌لاین‌های شبانه را به حدود 10% هزینه‌ی حالت همگامِ بدون کش می‌رساند. قاعده به شکلی بی‌رحمانه ساده است: اگر کاری تاخیرِ چندساعته را تاب می‌آورد، جایش در پردازش دسته‌ای است. پایپ‌لاین‌های تولید محتوا، دسته‌بندی اسناد، استخراج داده، تولید گزارش، برچسب‌گذاری انبوه، تگ‌گذاری کاتالوگ — هر وظیفه‌ای که تاخیر 24 ساعته را تحمل می‌کند، تا وقتی به حالت دسته‌ای منتقل نشود، به معنای دور ریختن پول است. الگوی محیط عملیاتی (پروداکشن) در سال 2026 این است که هر بار کاری (workload) جدید مدل‌های زبانی را به سه مسیر هدایت کنیم: تعاملی (همگام همراه با کش)، نیمه‌تعاملی (صف ناهمگام همراه با طرح پشتیبان)، دسته‌ای (شبانه، با تجمیع ورودی‌های کش‌شده). بیشترین هدررفت مربوط به بارهای کاری‌ای است که تظاهر به تعاملی بودن می‌کنند، اما عملاً تاخیر چنددقیقه‌ای را به‌راحتی می‌پذیرند.

اهداف یادگیری

  • نام بردن APIهای دسته‌ای سه ارائه‌دهنده‌ی بزرگ (OpenAI، Anthropic، Google) و تعهد مشترک آن‌ها مبنی بر 50% تخفیف به‌همراه زمان تحویل 24 ساعته.
  • محاسبه‌ی هزینه‌ی تجمیع پردازش دسته‌ای + ورودی کش‌شده روی یک بار کاری شبانه‌ی دسته‌بندی اسناد و مقایسه‌ی آن با خط مبنای همگام و بدون کش.
  • تریاژ بار کاری در یکی از مسیرهای تعاملی / نیمه‌تعاملی / دسته‌ای و توجیه مسیر انتخابی.
  • نام بردن دو تله‌ی رایج: تعاملی بودنِ ناقص (انتظار کاربر برای پاسخی سریع‌تر از 24 ساعت) و انحراف ساختار خروجی (متفاوت بودن قالب فایل دسته‌ای در هر ارائه‌دهنده).

صورت مسئله

تیم شما مسئول یک پایپ‌لاین شبانه‌ی تولید گزارش است: 50000 سند، خلاصه‌سازی تک‌تک اسناد، خوشه‌بندی خلاصه‌ها و نگارش یک گزارش مدیریتی. اجرای همگام این فرایند 4 ساعت طول می‌کشد و شبی 2000 دلار هزینه برمی‌دارد. در این میان درباره‌ی APIهای دسته‌ای می‌شنوید.

حالت دسته‌ای 50% تخفیف به همراه دارد. همچنین قابلیت کش کردن پرامپت را روی پرامپت سیستم (که بین همه‌ی 50 هزار فراخوانی مشترک است) فعال می‌کنید. با ترکیب این دو، صورت‌حساب به 180 دلار در شب می‌رسد — یعنی حدود 9% خط مبنا. همان پایپ‌لاین، تنها با سه تغییر در تنظیمات.

پردازش دسته‌ای ارزان‌ترین اهرم کاهش هزینه در جعبه‌ابزار مدل‌های زبانی است که هیچ‌کس سراغش نمی‌رود. دلیل اصلی به ساختار سازمانی برمی‌گردد: تیم‌ها فکر می‌کنند همه‌چیز باید «بلادرنگ» باشد، در حالی که تعهد سطح خدمات (SLA) در عمل «تا فردا صبح» است. این درس درباره‌ی این است که نگذارید 90% صورت‌حساب بی‌دلیل روی میز باقی بماند و بسوزد.

مفاهیم پایه

سه API دسته‌ای مطرح

API دسته‌ای OpenAI: بارگذاری فایل JSONL شامل فهرستی از درخواست‌ها. تعهد تحویل 24 ساعته (که در عمل معمولاً حدود 2 تا 8 ساعت طول می‌کشد). 50% تخفیف روی توکن‌های ورودی و خروجی. اندپوینت /v1/batches. ورودی‌های واجد شرایط کش هم علاوه‌بر این، از تعرفه‌ی ورودی کش‌شده بهره‌مند می‌شوند.

دسته‌های پیام Anthropic (Message Batches): بارگذاری فایل JSONL. زمان تحویل 24 ساعته. 50% تخفیف. پشتیبانی از cache_control — نوشتن در کش (cache write) به‌صورت صریح تعیین می‌شود و خواندن از کش در طول پردازش دسته‌ای به‌طور خودکار صورت می‌گیرد.

پیش‌بینی دسته‌ای Vertex AI گوگل: ورودی از طریق BigQuery یا GCS. تخفیف مشابه 50 درصدی برای Gemini. یکپارچه‌شده با پایپ‌لاین‌های Vertex.

مفهوم بنیادین: ناهمگام، نه کند

حالت دسته‌ای یعنی «قول می‌دهم کار را ظرف 24 ساعت تحویل دهم» — نه اینکه «انجام این کار حتماً 24 ساعت طول می‌کشد». میانه‌ی زمان پاسخ (P50) معمولاً بین 2 تا 6 ساعت است. ارائه‌دهنده، پردازش دسته‌ای شما را در ساعات کم‌مصرف و زمانی که ظرفیت GPUها آزاد است زمان‌بندی می‌کند.

تجمیع با کش‌گذاری

خلاصه‌سازی 50 هزار سند را با پرامپت سیستم یکسان 4K توکنی در نظر بگیرید:

  • همگامِ بدون کش: 50000 × ($ورودی × 4000 + $خروجی × 200) با تعرفه‌ی کامل.
  • همگامِ دارای کش: پرامپت سیستم بعد از اولین نوشتن در کش ذخیره می‌شود؛ 49999 درخواست بعدی ورودی را 10 برابر ارزان‌تر دریافت می‌کنند.
  • دسته‌ای دارای کش: تمام مزایای بالا به‌علاوه‌ی 50% تخفیف هم روی خواندن و هم روی نوشتن.

این ترکیب یعنی دسته‌ای + کش = تقریباً 10% هزینه‌ی حالت همگامِ بدون کش. هر بار کاری که شبانه اجرا می‌شود و پرامپت سیستم مشترک دارد، باید از این الگو استفاده کند.

تریاژ بار کاری

تعاملی (Interactive) — کاربر منتظر پاسخ می‌ماند. زمان تا اولین توکن (TTFT) مهم است. فراخوانی همگام همراه با کش پرامپت. امکان پردازش دسته‌ای وجود ندارد.

نیمه‌تعاملی (Semi-interactive) — کاربر وظیفه‌ای ثبت می‌کند و چند دقیقه بعد برای دیدن نتیجه سر می‌زند. صف ناهمگام به‌همراه طرح پشتیبان (fallback) برای برگشت به حالت همگام در صورت در دسترس نبودن حالت دسته‌ای؛ مثل نمایه‌سازی RAG با حجم متوسط.

دسته‌ای (Batch) — کاربر انتظار دارد نتایج را «تا فردا صبح» یا «تا آخر وقت کاری» تحویل بگیرد. پایپ‌لاین‌های محتوا، دسته‌بندی در مقیاس بزرگ، تحلیل آفلاین. همیشه دسته‌ای و همیشه همراه با کش تجمیعی.

اشتباه رایج: دسته‌بندی همه‌چیز در حالت تعاملی فقط به این دلیل که پایپ‌لاین در محیط عملیاتی کار می‌کند. محیط عملیاتی ارتباطی با مشخصات تاخیر ندارد — ملاک اصلی SLA است.

تله‌ی تعاملی بودنِ ناقص

برخی قابلیت‌ها در ظاهر تعاملی به نظر می‌رسند اما تاخیر 5 تا 10 دقیقه‌ای را تاب می‌آورند. مثلاً: گزارش شبانه‌ی وضعیت سلامت مشتری که یک دکمه‌ی «تازه‌سازی» دارد. کاربر روی تازه‌سازی کلیک می‌کند؛ 10 دقیقه صبر کردن برایش مشکلی ندارد. تیم این بخش را همگام پیاده می‌کند. در نتیجه 50 درخواست تازه‌سازی هم‌زمان، 10 برابرِ حالتی هزینه می‌تراشد که پردازش‌ها دسته‌ای اجرا شوند و نتیجه با ایمیل ارسال شود.

سؤالی که باید پرسید این است: «24 ساعت زمان برای این کاربر چه مفهومی دارد؟» اگر پاسخ این است که «اصلاً متوجه نمی‌شود»، کار را دسته‌ای اجرا کنید.

تله‌ی ساختار خروجی

قالب فایل‌های دسته‌ای در هر ارائه‌دهنده فرق دارد:

  • در OpenAI: فایل JSONL، در هر خط یک درخواست.
  • در Anthropic: فایل JSONL، در هر خط یک پیام؛ ساختار پاسخ درون همان تعبیه شده است.
  • در Vertex: جدول BigQuery یا پیشوند GCS همراه با TFRecord.

نوشتن «یک کلاینت دسته‌ای واحد» برای همه‌ی ارائه‌دهنده‌ها نیازمند کد تطبیق‌دهنده (adapter) مجزا برای هر کدام است. درگاه‌هایی که پردازش دسته‌ای چند ارائه‌دهنده را تبلیغ می‌کنند (مثل Portkey یا برخی سطوح LiteLLM) هم صرفاً پوسته‌ای نازک روی همین قالب خام کشیده‌اند.

اعدادی که باید به خاطر بسپارید

  • تخفیف پردازش دسته‌ای در همه‌ی ارائه‌دهنده‌ها: 50% ثابت روی ورودی + خروجی.
  • تعهد زمانی (SLA): تضمین 24 ساعته، میانه‌ی معمول (P50) بین 2 تا 6 ساعت.
  • ترکیب دسته‌ای + ورودی کش‌شده: حدود 10% هزینه‌ی حالت همگام بدون کش.
  • قانون تریاژ بار کاری: اگر تاخیر 24 ساعته پذیرفتنی است، همیشه از پردازش دسته‌ای استفاده کنید.
تریاژ مسیر دسته‌ایدسته‌بندی بار کاری در مسیرها؛ تخلیه مسیر دسته‌ای در طول شب
BATCH LANE TRIAGEEvery new LLM workload triages into three lanes. Interactive stays synchronous at full price; semi-interactive goes on an async queue; everything tolerant of 24-hour latency drops into the batch lane at a 50% discount, stacked with cached input toward ~10% of synchronous cost. Most jobs that pretend to be real-time actually just need an answer by morning.تعاملیهمگام · قیمت کاملنیمه‌تعاملیصف ناهمگامدسته‌ای50٪ تخفیف · ~24ستریاژاگر تعاملی نیست، جایش در مسیر دسته‌ای است
هر بار کاری جدید در LLM به سه مسیر تریاژ می‌شود. کارهای تعاملی به‌صورت همگام با قیمت کامل می‌مانند؛ نیمه‌تعاملی‌ها به یک صف ناهمگام می‌روند؛ و هر آنچه تاخیر 24 ساعته را تحمل کند با 50٪ تخفیف وارد مسیر دسته‌ای می‌شود که با ترکیب کش ورودی تا حدود 10٪ هزینه همگام کاهش می‌یابد. اکثر کارهایی که وانمود می‌کنند بلادرنگ هستند، در واقع فقط تا صبح به پاسخ نیاز دارند.

پیاده‌سازی عملی

اسکریپت code/main.py هزینه‌ها را برای بار کاریِ 50 هزار سند در چهار حالت محاسبه می‌کند: همگام، همگام با کش، دسته‌ای، و دسته‌ای با کش؛ سپس میزان صرفه‌جویی را به دلار و درصد گزارش می‌دهد.

خروجی کار

این درس فایل outputs/skill-batch-triager.md را تولید می‌کند. این ابزار با دریافت ویژگی‌های بار کاری، آن را در یکی از مسیرهای تعاملی / نیمه‌تعاملی / دسته‌ای هدایت می‌کند و میزان صرفه‌جویی را تخمین می‌زند.

تمرین‌ها

  1. اسکریپت code/main.py را اجرا کنید. برای پایپ‌لاینی شامل 100 هزار سند با پرامپت سیستم 3K توکنی و خروجی 500 توکنی، میزان صرفه‌جویی ترکیب کامل (دسته‌ای + کش) را نسبت به خط مبنای همگام محاسبه کنید.
  2. سه قابلیت را در محصولی واقعی که می‌شناسید انتخاب کنید. هر کدام را در یکی از مسیرهای تعاملی / نیمه‌تعاملی / دسته‌ای قرار دهید.
  3. کاربری شکایت دارد که آماده شدن گزارش او 3 ساعت طول کشیده است. آیا این خطا در تریاژ دسته‌ای بوده یا این وظیفه ذاتاً باید تعاملی می‌بود؟ معیار تصمیم‌گیری برای این سناریو را بنویسید.
  4. تعهد SLA خروجی API دسته‌ای شما 24 ساعت است اما صدک نود و نهم (P99) به 20 ساعت می‌رسد. این موضوع را چگونه به کاربر اطلاع می‌دهید — رفتار سیستم پایین‌دستی در این حالت‌های مرزی چه خواهد بود؟
  5. نقطه‌ی سربه‌سر را حساب کنید: طول پیشوند مشترک باید چقدر باشد تا اجرای دسته‌ای + کش، ارزان‌تر از اجرای شبانه روی GPU رزروشده‌ی اختصاصی خودتان تمام شود؟

اصطلاحات کلیدی

اصطلاح در گفتار عامیانه معنای دقیق فنی
API دسته‌ای (Batch API) «تخفیف ناهمگام» 50% تخفیف با زمان تحویل 24 ساعته
JSONL «قالب پردازش دسته‌ای» هر خط یک درخواست JSON؛ استاندارد OpenAI و Anthropic
دسته‌های پیام (Message Batches) «بچ Anthropic» نام تجاری محصول API دسته‌ای شرکت Anthropic
پیش‌بینی دسته‌ای (Batch prediction) «بچ Vertex» محصول API دسته‌ای پلتفرم Vertex AI
تعهد زمان تحویل (Turnaround SLA) «قول 24 ساعته» سقف تضمین‌شده، نه زمان معمول؛ زمان معمول 2 تا 6 ساعت است
تریاژ بار کاری (Workload triage) «تصمیم‌گیری درباره‌ی تعاملی بودن» تصمیم‌گیری برای مسیریابی بین حالت‌های تعاملی / نیمه‌تعاملی / دسته‌ای
ساختار خروجی (Output schema) «قالب پاسخ» چیدمان فایل JSONL مختص هر ارائه‌دهنده؛ مستقل و قابل‌انتقال نیست
تخفیف تجمیعی (Stacked discount) «دسته‌ای + کش» کاهش هزینه به حدود 10% صورت‌حساب همگامِ بدون کش، در صورت اعمال هم‌زمان هر دو

برای مطالعه‌ی بیشتر

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درسپیشنهاد مشترک Batch API در سال 2026 بین OpenAI، Anthropic و Google چیست؟
  2. حین درسدر چهارچوب این درس، «تحویل 24 ساعته» در واقع چه چیزی را تضمین می‌کند؟
  3. حین درسترکیب پردازش دسته‌ای با کش ورودی چگونه صورت‌حساب را در مقایسه با همگامِ بدون کش برای یک بار کاری با پرامپت سیستمی مشترک تغییر می‌دهد؟
  4. حین درسدر سال 2026، پیش‌فرض قرار دادن کدام مسیر تریاژ برای پایپ‌لاین‌های محتوا و برچسب‌گذاری آفلاین اشتباه است؟
  5. پس از درستله‌ی اسکیمای خروجی در میان ارائه‌دهندگان مختلف چیست؟
  6. پس از درسطبق درس، ساده‌ترین قانون تصمیم‌گیری برای تریاژ یک بار کاری به مسیر دسته‌ای چیست؟

سؤالات متداول

تفاوت فراخوانی همگام با Batch API در مدل‌های زبانی چیست؟

در حالت همگام پاسخ فوراً و در لحظه دریافت می‌شود، اما در Batch API درخواست‌ها به‌صورت فایل دسته‌ای (معمولاً JSONL) ارسال شده و ظرف حداکثر 24 ساعت (معمولاً 2 تا 6 ساعت) با 50 درصد تخفیف تحویل داده می‌شوند.

ترکیب Batch API با کش پرامپت چگونه هزینه را تا 90 درصد کاهش می‌دهد؟

پرامپت سیستم مشترک بعد از اولین فراخوانی کش شده و ورودی‌های بعدی تا 10 برابر ارزان‌تر پردازش می‌شوند؛ سپس اعمال 50 درصد تخفیف پردازش دسته‌ای روی کل هزینه، رقم نهایی را به حدود 10 درصد حالت همگام بدون کش می‌رساند.

چه بارهایی کاری برای انتقال به Batch API مناسب هستند؟

هر تسکی که تاخیر چند ساعته را تحمل کند؛ مثل خلاصه‌سازی شبانه اسناد، دسته‌بندی کاتالوگ محصولات، تگ‌گذاری انبوه و تحلیل‌های آفلاین داده.

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.