قیمت شناس
بازگشت به وبلاگ

مدل رایگان هتزنر را روی ۱۱۲ جست‌وجوی واقعی سنجیدیم

هتزنر در دوره آزمایشی، دو مدل باز Qwen را رایگان سرو می‌کند. آن‌ها را با همان پرامپت و همان ۱۱۲ جست‌وجوی واقعی فارسی مقابل زنجیره پولی خودمان گذاشتیم. مدل MoE با نمره ۵۷ از دو مدل پولی جلو زد و صفر تومان هزینه داشت — و «فکر کردن» دقیقاً برای دو مدل، دو نتیجه متضاد داد.

هر جست‌وجوی قیمت در محصول ما دست‌کم دو بار به یک مدل زبانی نیاز دارد و هزینه همین کار، بزرگ‌ترین هزینه جاری ما است. پس وقتی هتزنر یک API رایگان و سازگار با OpenAI روی دو مدل باز Qwen عرضه کرد، سؤال این نبود که ارزان است یا نه — رایگان است — سؤال این بود که آیا به‌اندازه‌ای خوب هست که جلوی ترافیک واقعی بگذاریمش. این گزارش، پاسخ سنجیده‌شده روی جست‌وجوهای واقعی خودمان و با همان پرامپتی است که منتشر کرده‌ایم.

۱۱۲
جست‌وجوی واقعی فارسی، بازپخش‌شده
۵۷ از ۱۰۰
بهترین نمره رایگان — جلوتر از دو مدل پولی
صفر
هزینه کل این بنچمارک
۳٫۸ ثانیه
میانه هر فراخوانی، بی فکر کردن

تکلیف: کدام آگهی واقعاً همان کالاست؟

وقتی کاربری یک واسکازین مشخص را می‌جوید، خزنده ما حدود ۲۰ تا ۲۴ آگهی از فروشگاه‌های مختلف برمی‌گرداند. میان آن‌ها روغن موتور هست، گرانروی‌های دیگر هست، لوازم جانبی هست و گاهی چیزی کاملاً بی‌ربط. کار مدل این است که تنها همان کالای واقعی را نگه دارد و هر ردیف را برچسب بزند، با یک خروجی JSON دقیق و بدون هیچ توضیح اضافه.

این تکلیف از دو جهت شکست می‌خورد و هر دو برای کاربر بد است: مدل می‌تواند آن‌قدر سخت‌گیر باشد که چیزی نگه ندارد — کاربر صفحه خالی می‌بیند در حالی که کالا در فهرست بوده — یا آن‌قدر شل باشد که کل فهرست را نگه دارد، که یعنی عملاً فیلتری وجود ندارد. هر دو را جداگانه سنجیدیم، و سخت‌ترین نمونه ممکن را برداشتیم: همان ۱۱۲ جست‌وجویی که فیلتر فعلی ما در عمل روی آن‌ها هیچ نتیجه‌ای نگه نداشته بود.

روش، و اینکه چرا تکرارپذیر است

هر مدل دقیقاً همان فهرست نامزدها را می‌بیند که مدل اصلی در لحظه دیده بود، و پرامپت از همان بیلد منتشرشده خوانده می‌شود نه از یک نسخه بازنویسی‌شده — سنجیدن پرامپتی که آن را منتشر نکرده‌اید، اندازه‌گیری هیچ‌چیز است. دما صفر است، سقف خروجی ۵۰۰۰ توکن، و هر دو برای همه مدل‌ها یکسان. نمره زیر به‌سادگی درصد همان ۱۱۲ جست‌وجوی خالی‌مانده است که مدل نجات داده؛ آن شکست‌هایی که یک درصد تنها پنهانشان می‌کند، در جدول پایین‌تر آمده‌اند.

رتبه‌بندی

نجات جست‌وجوهایی که فیلتر ما خالی گذاشته بوددرصد از ۱۱۲ جست‌وجوی سخت — بالاتر بهتر
  1. inclusionai/ling-3.0-flashپولی · هر فراخوانی ۰٫۰۰۰۳ دلار۱۰۰
  2. openai/gpt-5.6-lunaپولی · هر فراخوانی ۰٫۰۰۰۶ دلار۹۶
  3. Qwen3.6-35B-A3B — هتزنررایگان · میانه ۳٫۸ ثانیه۵۷
  4. deepseek-v4-flashپولی۴۲
  5. gemini-3.5-flash-liteپولی · مدلی که اکنون اجرا می‌کنیم۲۴
  6. Qwen3.8-27B — هتزنر، بی فکر کردنرایگان · پاسخ خالی می‌دهد۹
یک معیار، یک پرامپت، و برای هر جست‌وجو یک فهرست نامزد یکسان. دو مدل هتزنر رایگان‌اند؛ باقی فهرست به‌ازای هر فراخوانی هزینه دارند.

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

این بهترین مدل فهرست نیست و چنین ادعایی نمی‌کنیم. دو مدل پولی صدر جدول به‌روشنی قوی‌ترند و فاصله ۵۷ تا ۱۰۰ فاصله زیادی است. چیزی که ۵۷ می‌خرد، سهم بزرگی از حجم کار است با هزینه صفر، در حالی که مدل‌های پولی همچنان پشت آن ایستاده‌اند برای هرچه از دستش می‌رود.

مدلنمرهکل فهرست را نگه می‌داردJSON خرابمیانه فراخوانیهزینه
inclusionai/ling-3.0-flash۱۰۰۳٪۱۰٫۲ ثانیه۰٫۰۰۰۳ دلار
openai/gpt-5.6-luna۹۶۰٪۴٫۲ ثانیه۰٫۰۰۰۶ دلار
Qwen3.6-35B-A3B (هتزنر)۵۷۵٪۴٪۳٫۸ ثانیهرایگان
deepseek-v4-flash۴۲۱۸٪۳٪۰٫۰۰۰۲ دلار
gemini-3.5-flash-lite۲۴۱٫۹ ثانیه۰٫۰۰۲۴ دلار
Qwen3.8-27B (هتزنر، بی فکر کردن)۹۰٪۰٪۱٫۶ ثانیهرایگان
«کل فهرست را نگه می‌دارد» یعنی فیلتر خودش را خاموش کرده، که به‌همان بدی نگه‌نداشتن هیچ‌چیز است. خط تیره یعنی نسنجیده‌ایم، نه صفر.

«فکر کردن» همه‌چیز را تعیین کرد — در دو جهت متضاد

هر دو مدل هتزنر پیش از پاسخ «فکر می‌کنند»، و این غیرقابل‌حدس‌ترین بخش کل این تجربه بود: دو مدل دو تنظیم متضاد می‌خواهند، و اشتباه‌کردن در هر دو حالت بی‌صدا است.

مدل MoE نباید فکر کند. با فکر کردن روشن، یک جست‌وجوی ۲۰ نامزدی ۱۶۶ ثانیه طول کشید و ۳٬۶۹۷ توکن خروجی داد که جز حدود ۷۰ توکن، همه‌اش فکر کردن بود — ۱۶۴ ثانیه از آن زمان را پیش از نوشتن نخستین حرف پاسخ صرف کرد. با فکر کردن خاموش، همان جست‌وجو ۷٫۶ ثانیه و ۱۴۶ توکن شد و پاسخ بهتری داد: برچسب‌های «دقیق» و «متغیر» را با قطعیت زد، جایی که نسخه متفکر همه را محتاطانه «مرتبط» علامت زده بود.

مدل چگال (dense) تصویر آینه‌ای آن است. با فکر کردن خاموش سریع و تمیز و بی‌فایده است: میانه خروجی شش توکن، چون پاسخ خالی می‌دهد و تمام. این بدترین شکلی است که یک فیلتر می‌تواند داشته باشد، چون هیچ مرحله بعدی نمی‌تواند «چیزی پیدا نکردم» را از «تلاش نکردم» تشخیص دهد. فکر کردن را روشن کنید و پاسخ‌هایش خوب می‌شود — هر جست‌وجوی سختی که فرصت اجرایش را داشتیم نجات داد — اما هر فراخوانی ۵۰ تا ۵۷ ثانیه می‌خواهد، مقابل سقف سخت ۶۰ ثانیه‌ای اتصال. خوب، و برای استفاده بیش از حد کند.

یک یافته دیگر: اینکه کدام مدل سرپا است، در طول روز عوض می‌شود

در یک بعدازظهر دیدیم که دسترس‌پذیری دو مدل کاملاً جابه‌جا شد. اولش مدل چگال هیچ پاسخی نمی‌داد — پنج تلاش، و هر بار اتصال دقیقاً سر ۶۰ ثانیه قطع شد، حتی برای درخواستی که تمام وظیفه‌اش گفتن کلمه «ok» بود — در حالی که MoE در حدود چهار ثانیه پاسخ می‌داد. نود دقیقه بعد، مدل چگال در ۵٫۷ ثانیه پاسخ می‌داد و این‌بار MoE بود که تایم‌اوت می‌شد.

این یک سرویس آزمایشی است و قصد نداریم آن را رسوایی جلوه دهیم؛ این هزینه طبیعی ظرفیت رایگان است و به‌جای دلسردکردن ما، شکل پیاده‌سازی‌مان را تعیین کرد. ما هر دو مدل را صدا می‌زنیم، سالم‌ترین و سریع‌ترین اول، با یک مهلت کوتاه برای هر مدل و عقب‌نشینی‌ای که هر کدام را که فعلاً ناخوش است کنار می‌گذارد. یک پایه رایگان یک امتیاز اضافه است، پس اگر سریع پاسخ ندهد منتظر نمی‌مانیم و به مدل پولی می‌رویم — کوتاه‌کردن یک فراخوانی کند در واقع پاسخ کاربر را سریع‌تر می‌کند و تنها چیزی که از دست می‌رود یک درخواست رایگان است.

هتزنر چه چیزهایی را درست انجام داده

  • این API واقعاً با OpenAI سازگار است. لایه ارائه‌دهنده ما همین گویش را می‌فهمد، پس کل کار یک کلاس تازه بود و هیچ آداپتوری لازم نشد — در نخستین تلاش جواب داد.
  • انتخاب مدل‌ها جدی است. این‌ها دو مدل باز توانمند با پنجره متن ۲۶۲ هزار توکنی‌اند، نه یک نمایش تبلیغاتی، و یکی‌شان از مدل‌های پولی‌ای که همین حالا استفاده می‌کردیم نمره بهتری گرفت.
  • اعلام کرده‌اند محتوای درخواست و پاسخ را ذخیره نمی‌کنند و قصد هم ندارند. برای محصولی که متن جست‌وجو در آن فهرست خرید یک مشتری است، این یک ویژگی است نه یک بند تشریفاتی.
  • سهمیه توکن ورودی دست‌ودل‌بازانه است — چهار میلیون در دقیقه بیش از آن است که باری با این شکل بتواند مصرف کند.
  • در دوره آزمایشی رایگان است، با قول اطلاع‌دادن پیش از تغییر. همین برای اینکه رویش بسازیم کافی بود.

چه چیزی بیشترین کمک را می‌کند — به‌عنوان بازخورد

  • ده درخواست در دقیقه برای هر کلید، محدودیت اصلی است، نه کیفیت. یک پرسش کاربر برای ما چند فراخوانی است و یک اجرای قیمت‌گیری انبوه حدود ۱۹۰ فراخوانی، پس این سقف — و نه مدل — تعیین می‌کند چه سهمی از ترافیک ما می‌تواند اینجا بنشیند.
  • یک محدودیت مستندنشده حدوداً ۶۰ ثانیه‌ای روی درخواست‌های غیراستریم وجود دارد: اتصال بی هیچ کد وضعیت و بی هیچ بدنه‌ای قطع می‌شود. چون یک مدل متفکر به‌درستی می‌تواند بیشتر از آن فکر کند، این خطا شبیه اشکال شبکه به‌نظر می‌رسد نه تایم‌اوت. مستندکردنش، یا برگرداندن یک ۵۰۴، یک بعدازظهر از نفر بعدی می‌خرد.
  • ممکن است یک مدل در /v1/models فهرست شده باشد اما در واقع سرو نشود. اگر آن فهرست آمادگی واقعی را نشان دهد، کلاینت‌ها می‌توانند مدل سرد را دور بزنند، نه اینکه با یک توقف ۶۰ ثانیه‌ای کشفش کنند.
  • لطفاً شمار توکن‌های فکر کردن را در usage.completion_tokens_details بگذارید. این توکن‌ها به‌عنوان خروجی حساب می‌شوند و از همان بودجه max_tokens خرج می‌کنند، پس بدون آن‌ها نمی‌توان پاسخ بریده‌شده را از پاسخ بد تشخیص داد — همین نقطه‌کور یک‌بار برای ما به یک باگ واقعی تبدیل شد.
  • یک راه مستند برای تنظیم کلید فکر کردن کمک می‌کند. امروز از طریق chat_template_kwargs کار می‌کند، اما قالبی که آن فیلد را نشناسد بی‌صدا نادیده‌اش می‌گیرد، و این مهم‌ترین تنظیم را به یک حدس تبدیل می‌کند.

خلاصه‌اش: منتشرش کردیم. سرویس رایگان هتزنر حالا بخشی از کار تشخیص ارتباط را پشت مقایسه قیمت ما انجام می‌دهد و زنجیره پولی پشت آن ایستاده برای هرچه از دستش می‌رود. هر دو بنچمارک با یک دستور اجرا می‌شوند و از جست‌وجوهای ثبت‌شده خودمان می‌خوانند.