تصویرسازی توسط دیکشا میشرا
تصویرسازی توسط دیکشا میشرا

Airbnb با استفاده از LLMها، مهاجرت ۱۸ ماهه Enzyme به RTL را تنها در ۶ هفته انجام می‌دهد

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

افشاگری‌های اخیر Airbnb نشان می‌دهد که تیم‌ها احتمالاً چگونه به طور فزاینده‌ای از هوش مصنوعی برای مدیریت و مهاجرت پایگاه‌های کد استفاده خواهند کرد. این شرکت اولین مهاجرت کد در مقیاس بزرگ و مبتنی بر مدل زبانی بزرگ (LLM) خود را تکمیل کرده و حدود ۳۵۰۰ فایل تست کامپوننت React را از Enzyme به کتابخانه تست React (RTL) به‌روزرسانی کرده است.

چارلز کووی-برانت، مهندس نرم‌افزار در Airbnb، در یک پست وبلاگی گفت: «ما در ابتدا تخمین زده بودیم که انجام این کار به صورت دستی ۱.۵ سال زمان مهندسی نیاز دارد، اما با استفاده از ترکیبی از مدل‌های پیشرفته و اتوماسیون قوی، کل مهاجرت را تنها در ۶ هفته به پایان رساندیم.»

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

۷۵٪ فایل‌های هدف تنها در ۴ ساعت مهاجرت داده شدند

در اواسط سال ۲۰۲۳، این شرکت مفهوم استفاده از LLMها را برای تبدیل موفقیت‌آمیز صدها فایل enzyme به RTL تنها در چند روز تأیید کرد. متعاقباً، این شرکت سال گذشته یک خط لوله (فرایند) مقیاس‌پذیر برای «مهاجرت مبتنی بر LLM» ایجاد کرد.

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

برای بهبود موفقیت مهاجرت، Airbnb در ابتدا با مهندسی پرامپت (prompt engineering) آزمایش کرد، اما دریافت که یک حلقه تلاش مجدد به روش سعی و خطا (brute-force retry loop) مؤثرترین روش است. این شرکت سیستمی را پیاده‌سازی کرد که در آن هر مرحله مهاجرت، اعتبارسنجی را چندین بار تکرار می‌کرد و به صورت پویا پرامپت‌ها را با خطاها و آخرین نسخه‌های فایل به‌روز می‌کرد.

علاوه بر افزایش تلاش‌های مجدد، Airbnb زمینه (context) پرامپت را نیز افزایش داد. رویکرد مهندسی پرامپت غنی از زمینه به LLMها کمک کرد تا الگوهای مختلف مختص تیم، رویکردهای رایج تست و معماری کلی پایگاه کد را درک کنند.

او گفت: «پرامپت‌های ما به چیزی بین ۴۰,۰۰۰ تا ۱۰۰,۰۰۰ توکن گسترش یافته بود و تا ۵۰ فایل مرتبط، مجموعه‌ای کامل از نمونه‌های چندموردی (few-shot) که به صورت دستی نوشته شده بودند، و همچنین نمونه‌هایی از فایل‌های تست موجود، خوب نوشته شده و موفق از درون همان پروژه را شامل می‌شد.»

با استفاده از تکنیک‌های فوق، Airbnb ۷۵٪ از فایل‌های هدف را تنها در چهار ساعت مهاجرت داد. با این حال، هنوز ۹۰۰ فایل وجود داشت که معیارهای اعتبارسنجی مرحله‌ای را پشت سر نگذاشته بودند. سپس شرکت ابزارهایی برای اجرای مجدد هدفمند ساخت. یک کامنت وضعیت مهاجرت، پیشرفت هر فایل را ردیابی می‌کرد، در حالی که یک ویژگی اجرای مجدد امکان فیلتر کردن بر اساس مرحله شکست را فراهم می‌نمود.

کووی-برانت گفت: «پس از اجرای این حلقه "نمونه‌برداری، تنظیم، پیمایش" به مدت ۴ روز، ما فایل‌های تکمیل شده خود را از ۷۵٪ به ۹۷٪ کل فایل‌ها رساندیم و کمتر از ۱۰۰ فایل باقی مانده بود.» شرکت احساس کرد که تلاش‌های مجدد بیشتر برای فایل‌های باقی‌مانده مانند «رسیدن به سقف» آن چیزی است که می‌توان از طریق اتوماسیون رفع کرد. آنها با بقیه فایل‌ها به صورت دستی برخورد کردند.

داستان موفقیت Airbnb اولین مورد برای مهاجرت کد با کمک هوش مصنوعی نیست. غول‌هایی مانند گوگل و آمازون در گذشته موارد مشابهی را فاش کرده‌اند.

گوگل شاهد بهبود ۵۰ درصدی سرعت بود

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

این شرکت نمونه‌ای از تبدیل انواع شناسه‌های منحصر به فرد از ظرفیت ۳۲ بیتی به ۶۴ بیتی در پایگاه کد Google Ads را ذکر کرد. این تبدیل ضروری بود زیرا شناسه‌های ۳۲ بیتی در معرض خطر فراتر رفتن از حداکثر مقدار خود بودند که می‌توانست به دلیل سرریز عدد صحیح (integer overflow) باعث خرابی سیستم شود.

گوگل با برشمردن چندین چالش بالقوه در فرآیند مهاجرت گفت: «انتظار می‌رفت که کل تلاش، در صورت انجام دستی، به صدها سال مهندسی نرم‌افزار و هماهنگی پیچیده بین تیمی نیاز داشته باشد.» سپس این شرکت یک گردش کار شامل یک جعبه ابزار مهاجرت مبتنی بر LLM و یک مهندس/متخصص انسانی طراحی کرد. گوگل دریافت که ۸۰٪ از تغییرات کد در لیست‌های تغییر کاملاً توسط هوش مصنوعی ایجاد شده‌اند، در حالی که ۲۰٪ باقیمانده یا توسط انسان نوشته شده یا ویرایش شده‌اند.

با این حال، این شرکت همچنین اشاره کرد که مهندسان باید تغییرات خاص تولید شده توسط هوش مصنوعی را به دلیل عدم دقت یا تغییرات غیرضروری، برگردانند یا تنظیم کنند. گوگل گفت: «این مشاهده منجر به سرمایه‌گذاری بیشتر در تأیید مبتنی بر LLM برای کاهش این بار شد.»

آیا مهندسان مهاجرت مبتنی بر هوش مصنوعی را دوست دارند؟

خدمات وب آمازون (AWS) تحقیقی در مورد همکاری انسان و هوش مصنوعی در مهاجرت کد انجام داد. این مطالعه بر انتقال کد قدیمی جاوا به نسخه مدرن با استفاده از Amazon Q Code Transformation متمرکز بود. از طریق مجموعه‌ای از مصاحبه‌ها با ۱۱ توسعه‌دهنده نرم‌افزار، این مطالعه نشان داد که توسعه‌دهندگان هوش مصنوعی را به عنوان یک هم‌تیمی همکار می‌بینند.

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

AWS در بخشی از گزارش اظهار داشت: «همانطور که بازبینی کد به توسعه‌دهندگان تازه‌کار کمک می‌کند تا پیشرفت کنند، انتقادات سازنده کاربر از سیستم هوش مصنوعی به آن امکان می‌دهد تا بهتر با انتظارات هماهنگ شود و به طور مداوم درک خود را مانند برنامه‌نویسی که بازخورد را جذب می‌کند، اصلاح کند.»

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

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

شرکت‌کننده ۹ (P9) در پاسخ به این خطا گفت: «احساس می‌کنم اینجا دارم گمراه می‌شوم. مقاله اول یک نسخه می‌گوید و دومی نسخه دیگری. کدام یک درست است؟»

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

P9 گفت: «نمی‌دانم آیا هیچ هوش مصنوعی را کاملاً قابل اعتماد می‌دانم یا نه. من هنوز هم همه چیز را دوباره بررسی خواهم کرد. انتظار ندارم که مخرب باشد، به من یک به‌روزرسانی وابستگی معتبر داد، اما من هنوز هم همه چیز را دوباره بررسی خواهم کرد.»

سناریوهای فوق، مهاجرت‌های کد مبتنی بر LLM هستند، اما نه مهاجرت‌هایی که کاملاً توسط خود LLMها تکمیل شده باشند. هنوز نیاز به نظارت، بازبینی و تأیید انسانی وجود دارد.