আমি কীভাবে অল্প বাজেটে AI তুলনা করার পেজগুলো তৈরি করেছি
আমার AI টুলস ডিরেক্টরির জন্য তুলনা করার পেজগুলো তৈরি করা প্রয়োজন ছিল।
হিসাবটা বেশ ভীতিজনক ছিল। ২০০টি মডেল নিয়ে প্রায় ২০,০০০ সম্ভাব্য জোড়া (pairs) তৈরি করার সম্ভাবনা ছিল। প্রতিদিন প্রতিটি জোড়ার জন্য কন্টেন্ট তৈরি করতে Claude Haiku ব্যবহার করলে খরচ অনেক বেশি হয়ে যেত।
যুক্তি এবং সীমাবদ্ধতা ব্যবহার করে আমি কীভাবে এটি সমাধান করেছি তা নিচে দেওয়া হলো।
কৌশল
আমি উচ্চ-উদ্দেশ্যমূলক (high-intent) কুয়েরিগুলোর ওপর গুরুত্ব দিয়েছি। ব্যবহারকারীরা "Llama 3 vs Mistral" সম্পর্কে জানতে চান। তারা একটি সিদ্ধান্ত চান, কোনো দীর্ঘ প্রবন্ধ নয়।
খরচ নিয়ন্ত্রণে আমি এই নিয়মগুলো ব্যবহার করেছি:
• মডেলগুলোকে তাদের পাইপলাইন ট্যাগ অনুযায়ী গ্রুপ করা। • প্রতিটি গ্রুপ থেকে ডাউনলোড সংখ্যার ভিত্তিতে শুধুমাত্র শীর্ষ ৪টি মডেল বেছে নেওয়া। • মোট জোড়ার সংখ্যার ওপর একটি কঠোর সীমা নির্ধারণ করা।
এর ফলে আমার জোড়ার সংখ্যা ২০,০০০ থেকে কমিয়ে প্রায় ৫০-এ নিয়ে আসা সম্ভব হয়েছে। এটি জনপ্রিয় মডেলগুলোকে কভার করার পাশাপাশি খরচও কম রাখে।
টেকনিক্যাল সেটআপ
আমি একটি ETL প্রসেস তৈরি করেছি যা প্রতি রাতে চলে। এটি idempotent। এর মানে হলো, যদি জোড়াটি ইতিমধ্যে আমার ডাটাবেসে থাকে, তবে স্ক্রিপ্টটি সেটি এড়িয়ে যায়।
বেশিরভাগ রাতে স্ক্রিপ্টটি মাত্র ৩ সেকেন্ডে শেষ হয়ে যায় এবং খরচ হয় $0, কারণ এটি সবকিছু এড়িয়ে যায়।
এটিকে দক্ষ রাখতে আমি বেশ কিছু কৌশল ব্যবহার করি:
• Prompt Caching: আমি একটি শেয়ার্ড Claude Haiku ক্লায়েন্ট ব্যবহার করি। যেহেতু সিস্টেম প্রম্পট একই থাকে, তাই ক্যাশিং ব্যবহারের ফলে পরবর্তী কলগুলো প্রায় বিনামূল্যে হয়ে যায়। • Lean Prompts: আমি মডেলের সারাংশগুলোকে ৪০০ ক্যারেক্টারে সীমাবদ্ধ রাখি। এটি ইনপুটকে ছোট এবং দ্রুত রাখে। • Static Generation: আমি ডাটাকে স্ট্যাটিক JSON ফাইলে রূপান্তর করতে Astro ব্যবহার করি। ফলে ব্যবহারকারীর জন্য কোনো ধীরগতির ডাটাবেস কল বা edge function ল্যাটেন্সি থাকে না।
যখন এটি ব্যর্থ হয় তখন কী ঘটে?
AI অনির্দেশ্য হতে পারে। মাঝে মাঝে Claude ভুল JSON প্রদান করে।
আমি একটি ফলব্যাক (fallback) সিস্টেম লিখেছি। যদি AI ব্যর্থ হয়, তবে পেজটি ক্র্যাশ করে না। পরিবর্তে, এটি একটি স্ট্যান্ডার্ড টেমপ্লেট দেখায়। এটি ব্যবহারকারীকে প্রতিটি মডেলের আলাদা পেজ দেখার পরামর্শ দেয়। আমি এই ব্যর্থতাগুলো আমার ডাটাবেসে ট্র্যাক করি যাতে পরে সেগুলো পুনরায় চেষ্টা (retry) করতে পারি।
আমি যা ভিন্নভাবে করতাম
আমি যদি আজ নতুন করে শুরু করতাম, তবে দুটি জিনিস পরিবর্তন করতাম:
১. Cross-pipeline comparisons: দুটি একই ধরণের টেক্সট মডেলের তুলনায় একটি টেক্সট মডেলের সাথে একটি ভিশন মডেলের তুলনা করা অনেক বেশি মূল্যবান। ২. Search-driven selection: ডাউনলোড সংখ্যা ব্যবহার করার পরিবর্তে, কোন জোড়াগুলো তৈরি করা হবে তা নির্ধারণ করতে আমি ব্যবহারকারীদের প্রকৃত সার্চ লগ ব্যবহার করতাম।
সীমাবদ্ধতার মধ্যে কাজ করা আপনাকে আরও বুদ্ধিদীপ্তভাবে তৈরি করতে বাধ্য করে।
Optional learning community: https://t.me/GyaanSetuAi
