چگونه صفحات مقایسه‌ای هوش مصنوعی را با بودجه‌ای محدود ساختم

نیاز داشتم برای دایرکتوری ابزارهای هوش مصنوعی خود، صفحات مقایسه‌ای بسازم.

محاسبات وحشتناک بود. با ۲۰۰ مدل، با تقریباً ۲۰,۰۰۰ جفتِ ممکن روبرو بودم. اگر می‌خواستم هر روز از Claude Haiku برای تولید محتوا برای هر جفت استفاده کنم، هزینه‌اش بسیار زیاد می‌شد.

در اینجا توضیح می‌دهم که چگونه با استفاده از منطق و محدودیت‌ها، این مشکل را حل کردم.

استراتژی

من روی پرس‌وجوهای هدفمند (high-intent queries) تمرکز کردم. کاربران می‌خواهند بدانند "Llama 3 در مقابل Mistral" چگونه است. آن‌ها به دنبال یک تصمیم‌گیری هستند، نه یک مقاله طولانی.

از این قوانین برای کنترل هزینه‌ها استفاده کردم:

• گروه‌بندی مدل‌ها بر اساس تگ pipeline آن‌ها. • انتخاب تنها ۴ مدل برتر بر اساس تعداد دانلود در هر گروه. • تعیین یک محدودیت سخت روی تعداد کل جفت‌ها.

این کار تعداد جفت‌های من را از ۲۰,۰۰۰ به حدود ۵۰ کاهش داد. این کار باعث می‌شود هزینه‌هایم پایین بماند و در عین حال محبوب‌ترین مدل‌ها را پوشش دهم.

تنظیمات فنی

من یک فرآیند ETL ساختم که هر شب اجرا می‌شود. این فرآیند idempotent است؛ یعنی اگر آن جفت از قبل در پایگاه داده من وجود داشته باشد، اسکریپت از آن عبور می‌کند.

بیشتر شب‌ها، اسکریپت در ۳ ثانیه اجرا می‌شود و هزینه‌اش ۰ دلار است، زیرا از همه موارد عبور می‌کند.

از چندین ترفند برای کارآمد نگه داشتن آن استفاده می‌کنم:

Prompt Caching: من از یک کلاینت مشترک Claude Haiku استفاده می‌کنم. از آنجایی که پرامپت سیستم ثابت می‌ماند، کش کردن باعث می‌شود فراخوانی‌های بعدی تقریباً رایگان باشند. • Lean Prompts: من خلاصه‌ی مدل‌ها را به ۴۰۰ کاراکتر محدود می‌کنم. این کار باعث می‌شود ورودی کوچک و سریع بماند. • Static Generation: من از Astro استفاده می‌کنم تا داده‌ها را به فایل‌های JSON استاتیک تبدیل کنم. هیچ فراخوانی کند پایگاه داده یا تأخیر (latency) در edge function برای کاربر وجود ندارد.

وقتی سیستم با شکست مواجه می‌شود چه اتفاقی می‌افتد؟

هوش مصنوعی می‌تواند غیرقابل پیش‌بینی باشد. گاهی اوقات Claude یک JSON نامعتبر برمی‌گرداند.

من یک سیستم جایگزین (fallback) نوشتم. اگر هوش مصنوعی با شکست مواجه شود، صفحه کرش نمی‌کند. در عوض، یک قالب استاندارد را نشان می‌دهد و به کاربر می‌گوید که صفحات مربوط به هر مدل را به صورت جداگانه بررسی کند. من این شکست‌ها را در پایگاه داده‌ام ردیابی می‌کنم تا بتوانم بعداً دوباره آن‌ها را امتحان کنم.

کارهایی که متفاوت انجام می‌دادم

اگر امروز دوباره از اول شروع می‌کردم، دو چیز را تغییر می‌دادم:

۱. مقایسه‌های بین خط لوله‌ای (Cross-pipeline): مقایسه یک مدل متنی با یک مدل vision ارزشمندتر از مقایسه دو مدل متنی مشابه است. ۲. انتخاب مبتنی بر جستجو: به جای استفاده از تعداد دانلودها، از لاگ‌های واقعی جستجوی کاربران استفاده می‌کردم تا تصمیم بگیرم کدام جفت‌ها ساخته شوند.

ساختن با محدودیت‌ها، شما را مجبور می‌کند هوشمندانه‌تر بسازید.

Source: https://dev.to/morinaga/how-i-built-pairwise-ai-model-compare-pages-with-claude-haiku-and-a-budget-cap-3hpm

Optional learning community: https://t.me/GyaanSetuAi