GitHub Copilot چیست؟
توسط sajjad
گیت هاب هفته گذشته اعلام کرد که Copilot، ابزار "برنامه نویس جفت هوش مصنوعی" خود را برای عموم عرضه می کند. Copilot از هوش مصنوعی برای ارائه طیف وسیعی از توابع پشتیبانی، از جمله تکمیل خودکار دستورالعملها، تولید کل توابع و تبدیل رشتههای اسناد و توضیحات به کد منبع عملکردی استفاده میکند.
Copilot به عنوان یک پیشنمایش فنی در سال ۲۰۲۱ راهاندازی شد. اکنون همه توسعهدهندگان میتوانند برای Copilot که به عنوان یک افزونه در محیطهای توسعه یکپارچه (IDE) مانند Visual Studio، VS Code، Neovim و JetBrains نصب میشود، درخواست دهند.
در زمان انتشار Copilot، هیجان زیادی در مورد قابلیت های کدنویسی خیره کننده آن وجود داشت. اما نگرانی هایی در مورد اینکه تا چه حد می توان به توانایی های آن اعتماد کرد و اینکه آیا تأثیر واقعی بر بهره وری توسعه دهندگان دارد یا خیر نیز وجود داشت. پس از گذشت یک سال و میلیاردها خط کد، سرانجام Copilot آماده است تا در دست هر توسعه دهنده ای قرار گیرد.
در اینجا چیزی است که ما در مورد تأثیر Copilot بر وظایف برنامه نویسی واقعی می دانیم که توسط سازندگان و توسعه دهندگان آن که از آن در کارهای روزمره خود استفاده کرده اند گفته شده است.
چه مقدار کد با Copilot نوشته می شود؟
پشت Copilot معماری ترانسفورماتور است، نوعی مدل یادگیری عمیق که در مدل های زبان بزرگ مانند GPT-3 و LaMDA استفاده می شود. ترانسفورماتورها به ویژه در پردازش داده های متوالی مانند متن، کد نرم افزار و توالی های پروتئینی خوب هستند. با توجه به یک اعلان، یک مدل ترانسفورماتور می تواند عناصر بعدی دنباله را پیش بینی کند، خواه کلمات باشد یا دستورالعمل های کامپیوتری. Copilot بر روی OpenAI's Codex ساخته شده است، یک ترانسفورماتور که بر روی ده ها میلیون مخزن کد آموزش دیده است. پس از نصب بر روی IDE شما، Copilot بر اساس کد موجود در فایل شما و همچنین نشانه هایی مانند نام توابع و کلاس های شما و نظرات موجود در کد شما پیشنهاداتی را ارائه می دهد.
شایان ذکر است که Copilot مانند یک برنامه نویس فکر و کدنویسی نمی کند. اما از آنجایی که در معرض مقادیر عظیمی از کد منبع قرار گرفته است، می تواند کدهای بسیار خوبی را پیشنهاد کند، به خصوص در مورد کارهای استاندارد و تکراری که اغلب در نرم افزار نوشتن اتفاق می افتد.
طبق گفته GitHub، بیش از ۱.۲ میلیون توسعه دهنده از پیش نمایش فنی Copilot در ۱۲ ماه گذشته استفاده کرده اند. در فایل هایی که Copilot فعال است، نزدیک به ۴۰ درصد از کد زبان های برنامه نویسی محبوب مانند پایتون را تشکیل می دهد.
Ryan J. Salva، معاون محصول در GitHub، به VentureBeat گفت که اگرچه نمی توان گفت که چه مقدار از کدنویسی انجام شده با Copilot در مقایسه با کاوش این ابزار، توسعه نرم افزار واقعی است، اما به نظر می رسد که نسبت ۴۰ درصد حفظ شود زیرا توسعه دهندگان از Copilot در طول چند روز استفاده کردند.
Github Copilot حواس پرتی را کاهش می دهد
سالوا گفت: «توسعه دهندگان اغلب در مورد ارزش ماندن در جریان و تأثیر مثبت [Copilot] بر بهره وری، خلاقیت و شادی کلی آنها صحبت می کنند.
به گفته Salva، در یک نظرسنجی که در طول پیشنمایش فنی Copilot بین ۱۷۰۰۰ توسعهدهنده توزیع شد، بیش از ۷۵٪ از توسعهدهندگان گزارش دادند که هنگام استفاده از Copilot «تلاش ذهنی کمتری روی کارهای برنامهنویسی تکراری صرف میکنند»، «روی کار رضایتبخشتر تمرکز میکنند» و «میمانند». در جریان.»
سالوا گفت: «با به حداقل رساندن حواسپرتیها و ایجاد زمان تمرکز، ما نه تنها کار را انجام میدهیم، بلکه روزهای بهتر و کم استرستری را ایجاد میکنیم. به طور حکایتی، ما داستانهایی از توسعهدهندگانی که از Copilot برای یادگیری زبانهای کدنویسی جدید استفاده میکنند، بهسرعت کد boilerplate برای کارهای معمولی تولید میکنند، نوشتن عبارات منظم یا صرفاً به یاد آوردن نحو برای یک API بدون نیاز به مراجعه به مستندات، شنیدهایم.
توسعه دهندگان VentureBeat برای تایید برخی از این نکات صحبت کردند. Abhishek Thakur، مهندس یادگیری ماشین در Hugging Face، از ژوئن ۲۰۲۱ از Copilot استفاده کرده است. او از آن در توسعه AutoTrain، ابزاری بدون کد برای آموزش مدلهای یادگیری ماشینی پیشرفته استفاده کرده است. او همچنین از آن برای مسابقات یادگیری ماشینی در Kaggle، ساختن آموزش ها و شرکت در هکاتون ها استفاده می کند.
«وقتی در حال کدنویسی هستم، کمترین مزاحمتها را میخواهم. در این راه، Copilot کمک بزرگی بوده است. تاکور میگوید، این زمان را کاهش داده است که ممکن است برای جستجوی راهحلها در وب صرف کنم و در عوض آنها را در IDE مورد علاقهام در اختیار داشته باشم.
بسیاری از توسعه دهندگان به دنبال راه حل هایی برای مشکلات کوچک در موتورهای جستجو و StackOverflow هستند، یک انجمن وب که در آن توسعه دهندگان قطعات کد را برای کارهای خاص به اشتراک می گذارند.
تاکور گفت: «بعد از استفاده از Copilot، من به ندرت از این وبسایتها بازدید میکنم و میتوانم روی کدنویسی تمرکز کنم.
تاکور گفت: «اگر شک دارم، سعی میکنم نظراتی را بنویسم و اجازه میدهم Copilot به من کمک کند تا تکههای کد را تکمیل کنم. ممکن است همیشه کامل نباشد، اما ایده خوبی از نحوه نوشتن کد می دهد. مابقی آن به عهده توسعه دهنده است که آن را تغییر داده و مجدداً استفاده کند. همین امر در مورد StackOverflow نیز صدق میکند: همیشه پاسخی ندارد، اما پاسخهای خوب زیادی دارد که ممکن است مناسب مورد استفاده شما باشد، و میتوانید آن را تغییر دهید و دوباره استفاده کنید.
انجام کارهای تکراری
لوئیس کاستریکاتو، کارآموز پژوهشی در Hugging Face و قبلا در EleutherAI، از Copilot برای محاسبات علمی استفاده کرده است، جایی که توابع اغلب دست و پا گیر هستند و استفاده از آنها سخت است. یکی از این توابع einsum PyTorch است که به پارامترهای غیر قابل انعطافی در مورد ابعاد تانسورهایی که می خواهید محاسبه کنید نیاز دارد.
کاستریکاتو گفت: «Einsum برای افرادی که قبلاً هرگز از آن استفاده نکردهاند بسیار غیر شهودی است، و لازم است که به شکلی که تانسورهای شما در هر دستوری که با مدل شما میآید، دقت کنید.» Copilot به ویژه در استنباط شکل تانسور و نوشتن خودکار عملیات einsum و همچنین نوشتن نظراتی که انتخاب هایی را که در نوشتن عبارت einsum انجام داده است، قوی است.
Snir Shechter، سرپرست تیم تحقیق و توسعه در Aporia، نیز نزدیک به یک سال است که از Copilot استفاده می کند. او گفت: "هنگام توسعه محصول اصلی ما در آپوریا، Copilot به من در نوشتن کد آسان کمک می کند." با توجه به قراردادهای نامگذاری خوب، Copilot میتواند کل عملکرد/بلاک بعدی کد را تکمیل کند. پس از آن، من فقط باید بررسی کنم تا ببینم همه چیز خوب است (و احتمالاً منطق خاصی را اضافه کنم). با تکمیل کدهای عمومی/تکراری بسیار خوب است و آن را بر اساس زمینه تشخیص می دهد."
عملکرد Copilot به ویژه برای کارهای طولانی و تکراری برجسته است. یک مثال راه اندازی یک سرور HTTP است که معمولاً بسته به زبانی که به آن نوشته می شود به چندین خط کد و تنظیمات نیاز دارد. در یک مطالعه، GitHub از نیمی از شرکت کنندگان خواسته بود تا کد سرور HTTP را به صورت دستی بنویسند و نیمی دیگر را کار را با استفاده از Copilot کامل کنید.
Salva گفت: «دادههای اولیه نشان میدهد که توسعهدهندگان نه تنها به احتمال زیاد کار خود را هنگام استفاده از Copilot کامل میکنند، بلکه آن را نیز در نیمی از زمان انجام میدهند.
سوق دادن توسعه دهندگان به داکیومنت کد بهتر
Copilot زمانی بهتر عمل می کند که برنامه نویسان توضیحات مفصل تری ارائه دهند. جالب اینجاست که استفاده از آن توسعه دهندگان را وادار کرده است تا کدهای خود را بهتر مستند کنند.
سالوا گفت: «در چند ماه اول پیشنمایش فنی، شاهدیم که Copilot رفتار افراد را هنگام نوشتن کد تغییر میدهد – یعنی با نوشتن نظرات بهتر و پرمخاطبتر. "این نه تنها به این دلیل است که پیشنهادات Copilot بهبود می یابد، بلکه خواندن آن را برای دیگران آسان تر می کند."
Copilot همچنین به ابزار خوبی برای مستندسازی کد نرم افزار تبدیل شده است، وظیفه ای که اغلب نادیده گرفته می شود، به خصوص زمانی که برنامه نویسان به دنبال ضرب الاجل هستند.
Castricato از Copilot برای مستندسازی کد خود، تکمیل خودکار رشتههای اسناد و پیشنهادات نوع در پایتون استفاده میکند. این خوانایی کد را بهبود می بخشد و مدیریت کد را برای او و سایر توسعه دهندگان آسان تر می کند.
او گفت: "Copilot مقدار اسنادی را که من برای کد خود می نویسم حداقل ۲ یا ۳ برابر افزایش داده است."
محدودیت ها
کاستریکاتو گفت: «[Copilot] اغلب در پیادهسازی کل الگوریتمها بسیار ضعیف است. به عنوان مثال، وقتی برای اولین بار Copilot را دریافت کردم، می خواستم ببینم که آیا می تواند اشکال اساسی برنامه نویسی پویا را بدون راهنمایی قابل توجه پیاده سازی کند یا خیر. به طرز بدی شکست خورد و من خیلی سریع متوجه شدم که برای استفاده کامل از Copilot، باید مراحلی را که Copilot برای پیاده سازی یک الگوریتم خاص باید بردارد (از طریق نظرات) با جزئیات توضیح دهید."
فراتر از وظایف اصلی، Copilot برای عملکرد صحیح به نظرات فراوان نیاز دارد. و در برخی موارد، برای ارائه پیشنهادات مفید به یک فایل کد کاملاً ساختاریافته نیاز دارد.
کاستریکاتو گفت: «در این زمینه، Copilot با جایگزینی حتی ابتدایی ترین مهندسان نرم افزار فاصله زیادی دارد.
سالوا اذعان کرد که Copilot هنوز یک کار در حال پیشرفت و یک تجربه توسعه دهنده جدید است. تیم محصول همچنان از نحوه استفاده توسعه دهندگان از آن درس می آموزد و در حال تنظیم مدل هوش مصنوعی است که آن را تقویت می کند.
سالوا گفت: "Copilot سعی می کند منظور شما را درک کند و بهترین کدی را که می تواند تولید کند، اما کدی که پیشنهاد می کند ممکن است همیشه کارساز نباشد یا حتی منطقی نباشد." "در حالی که ما سخت کار می کنیم و شاهد پیشرفت در Copilot برای تولید کد بهتر هستیم، پیشنهادات باید مانند هر کد دیگری به دقت مورد آزمایش، بررسی و بررسی قرار گیرند. ما در حال جمعآوری دادههای تلهمتری هستیم تا مدل را بهتر کنیم، که از کاربران داخل UI درخواست میکنیم.»
آیا Copilot ارزش این قیمت را دارد؟
در حال حاضر، Copilot با ۱۰ دلار در ماه یا ۱۰۰ دلار در سال، با ۶۰ روز آزمایش رایگان ارائه می شود، که به نظر می رسد برای توسعه دهندگان نرم افزار معامله ای باشد. علاوه بر این، این ابزار برای دانشجویان و نگهبانان پروژه های منبع باز محبوب رایگان خواهد بود.
تاکور گفت: «فکر میکنم کاملاً ارزش این قیمت را دارد. به عنوان یک مهندس یادگیری ماشین، میدانم که در ساخت محصولاتی از این قبیل، به خصوص Copilot، که پیشنهاداتی با تاخیر زیر میلیثانیه ارائه میدهد، چیزهای زیادی انجام میشود. ایجاد زیرساختی که این نوع مدلها را به صورت رایگان ارائه میکند، در دنیای واقعی برای مدت زمان طولانیتری امکانپذیر نیست.»
تاکور همچنین خاطرنشان کرد که با ادامه کاهش هزینههای زیرساخت هوش مصنوعی، ممکن است قیمت Copilot در آینده کاهش یابد.
او گفت: «اما در این مرحله، به نظر من، کاملاً ارزش این قیمت را دارد، به خصوص برای شخصی مثل من که تقریباً هر روز از زمان پیشنمایش از Copilot استفاده میکند.»
کاستریکاتو گفت که Copilot چندین ساعت در هفته برای او صرفه جویی کرده است و گاهی اوقات حتی یک یا دو روز در هفته عیب یابی می کند.
Copilot به من این امکان را می دهد که به سرعت بسیاری از آزمایش ها را آزمایش کنم - اغلب بدون نیاز به صرف زمان زیادی برای رفع اشکال. مجموعهای از آزمایشهایی که معمولاً برای اجرای آنها روزها طول میکشد، در عوض یک روز زمان میبرد.» "به عنوان یک ابزار حرفه ای، ارزش قیمتش را دارد. مطمئناً بیش از ۱۰ دلار در ماه برای من درآمد دارد. من به راحتی می توانم ببینم که هر شرکت بزرگی مجوز Copilot را برای همه کارکنان فنی خود توجیه می کند. این تقریباً یک هزینه پیش پا افتاده است.»
Salva معتقد است که این تازه شروع برنامهنویسی تقویتشده با هوش مصنوعی است و Copilot را به عنوان گام بعدی در خط طولانی ابزارهای توسعهدهنده میبیند.
او گفت: «همانطور که با کامپایلر، زبانهای برنامهنویسی سطح بالاتر و خود منبع باز دیدیم، پیشرفتهای ابزارسازی تأثیر توسعهدهندگان را در جهان ما تقویت کرده است. "در عین حال، همان ابزارها جایگزینی برای تجربه، مهارت و خلاقیت یک توسعه دهنده نیستند."
او افزود که با ابزارهای بهتر، تقاضای صنعت برای توسعه دهندگان به طور پیوسته افزایش یافته است. او گفت: "ما خوشبین هستیم که GitHub Copilot اثرات مشابهی داشته باشد، مکمل کار توسعه دهندگان و توانمندسازی آنها برای نوشتن کد آسان تر با تمرکز و خلاقیت بیشتر."
پست های توصیه شده
کلان داده
14 مهر, 1402
تحول دیجیتال
14 مهر, 1402
تجزیه و تحلیل داده ها
14 مهر, 1402