استفاده از مدلهای آفلاین AI برای توسعه نرمافزار
از اینکه این مطلب رو نه الزاما به عنوان یک موضوع مهندسی، بلکه با در نظر گرفتن شرایط تحمیلی این روزهای اینترنت ایران؛ و تفکر مخرب اینترنت طبقاتی دارم مینویسم؛ حس بدی دارم!
اپیزود اخیر پادکست Merge Conflict، در مورد موضوع جالبیه که که شاید توی شرایط فعلی اینترنت ایران، مرورش بد نباشه. استفاده از مدلهای مختلف AI داخل VS Code و GitHub Copilot، ولی از طریق BYOK (یا Bring Your Own Key).
یعنی به جای اینکه فقط از مدلهای پیشفرض Copilot، Claude Code، Cursor یا ابزارهای مشابه استفاده بشه، بتونیم کلید API خودمون را از OpenAI، Anthropic، Azure Foundry، OpenRouter یا حتی سرویسهای دیگه که خودمون هاست کردیم بگیریم. بدون وابستگی به اینترنت. بدون مصرف اعتبار Copilot. مثلا Qwen با حدود ۲۷ میلیارد پارامتر، با quantization چهار بیتی، روی یک GPU با ۲۴ گیگابایت VRAM اجرا میشه. و تجربه گوینده توی خیلی از کارهای روزمره کدنویسی، تشخیص تفاوت بین این مدلهای کوچیک و لوکال از مدلهای بزرگی مثل Opus یا Sonnet رو سخت کرده!
نکته اول اینکه شاید ما بیش از حد روی «اسم مدل» حساس شدیم. یا اولویت مدل رو به فرایند برتری دادیم.
به جای اینکه بپرسیم Claude بهتره یا GPT؟ Sonnet بهتره یا Opus؟ شاید سوال مهمتر این باشه که آیا workflow ما درست طراحی شده یا نه؟ این چالش فقط برای دلداری دادن برای استفاده از مدل آفلاین نیست؛ خیلی شرکتها و تیمها چالش هزینه مصرف توکن رو دارن (و مثلا مایکروسافت اشتراک Claude code نیروهاش رو داره قطع میکنه) یا تجربه شخصی خودم: اعدادی که هر ماه از میزان مصرف توکن و هزینهی AI تیمم میگیرم؛ باعث شد بفهمم خیلی از برنامهنویسها ولو اینکه توی حوزه خودشون که اتفاقا AI هم هست، تخصص عمیق و تجربه طولانی دارن؛ الزاما LLM رو به خوبی نمیشناسن و ۵ رکن Harness و Model و Context و Tools و Prompts رو درک نکردند. برای همین مصرف توکنشون و هزینهشون خیلی بالاست؛ و مثلا برای تولید توضیحات PR هم از مدلهای بزرگ و گرون مثل Opus 4.7 و GPT 5.5 و... استفاده میکنن!! اگر دوست داشتید میتونیم روی این موضوع عمیقتر صحبت کنیم بعدن.
ولی به صورت کلی؛ اگه context رو خوب بسازیم؛ فایلهای درست رو در اختیار agent بگذاریم، planning داشته باشیم، task رو خوب خرد کنیم و خروجی رو مرحله به مرحله review کنیم، شاید تفاوت مدلها توی خیلی از سناریوهای روزمره کمتر از چیزی باشه که تصور میکنیم.
دوم اینکه agent فقط مدل نیست. و چیزی که ما توی VS Code، Copilot، Claude Code یا Cursor یا گراکبیلد تجربه میکنیم، فقط یه LLM خام نیست. پشتش کلی system prompt، ابزار خوندن و ویرایش فایل، حافظه، planning mode، sub-agent، permissions و کلی glue code دیگه وجود داره. به همین دلیل دو ابزار مختلف با یک مدل یکسان، لزوما تجربه یکسانی نمیدن.
مدل مهمه؛ اما harness یا همون محیطی که مدل رو تبدیل به یه دستیار کدنویسی واقعی میکنه هم به همون اندازه مهمه و باید خوب یادش بگیریم. باز به تجربه خودم برگردم که چند ماه پیش متوجه شدم که بعضی از بچههای تیم؛ در مورد امکان و شیوه دیباگ کردن مدل AI و ایجنتهاش بیاطلاعن؛ این یعنی همونطور که ما در رابطه با یک IDE جدید، زیر و بم امکانات، میانبرها و ابزارهای دیباگ کردنش رو یاد میگیریم؛ باید کارکرد و اجزاء ابزارهایی مثل کوپایلوت و کلادکد و... رو هم عمیق و اصولی یاد بگیریم و مثل چت تلگرام ازشون استفاده نکنیم.
و اینکه هنوز محدودیتها جدیان. همه یک RTX 3090 یا 4090 ندارن (البته وقتی وضع اینترنت اینه شاید شرکتها بتونن بهش فکر کنن؛ من سعی کردم ببینم الان قیمت ریالی این کارتها چنده؛ ولی به طور شرمآوری هر سایت داخلی که توی صفحه اول گوگل اومد، در دسترس نبود!!).
نهایتا این مطلب هم برای استفاده از مدلهای لوکال و Copilot CLI شاید مفید باشه.
امیدوارم چنین راهکارهایی از سر انتخاب و ترجیح انجام باشه به جای اجبار و ناچاری.
خوشحال میشم نظر یا تجربه شما رو هم بدونم 😊