۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

نقد و بررسی: CodeWhisperer، Bard و Copilot X

Amazon CodeWhisperer، Google Bard، و GitHub Copilot X چالش برنامه‌نویسی جفت هوش مصنوعی ما را پشت سر می‌گذارند. هر ابزاری نقاط قوت خود را دارد و هیچ کدام کامل نیستند.

Amazon CodeWhisperer، Google Bard، و GitHub Copilot X چالش برنامه‌نویسی جفت هوش مصنوعی ما را پشت سر می‌گذارند. هر ابزاری نقاط قوت خود را دارد و هیچ کدام کامل نیستند.

وقتی در مورد پیش‌نمایش GitHub Copilot در سال ۲۰۲۱ نوشتم، متوجه شدم که برنامه‌نویس جفت هوش مصنوعی همیشه کد خوب، صحیح یا حتی در حال اجرا تولید نمی‌کند، اما همچنان تا حدودی مفید است. در آن زمان، به این نتیجه رسیدم که نسخه های آینده می توانند صرفه جویی در زمان واقعی داشته باشند. دو سال بعد، Copilot در حال بهبود است. این روزها حتی برای افراد هم هزینه دارد و رقابت هم دارد. علاوه بر این، دامنه دستیاران کدنویسی فراتر از تولید کد به توضیحات کد، خلاصه‌های درخواستی، اسکن امنیتی و کارهای مرتبط گسترش یافته است.

سه ابزار برای برنامه نویسی جفت هوش مصنوعی

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

  • Amazon CodeWhisperer محصولی است که مستقیماً با Copilot رقابت می کند. یک “همراه برنامه نویسی” مانند Copilot، CodeWhisperer با Visual Studio Code و JetBrains IDE ادغام می شود، پیشنهادات کد را در پاسخ به نظرات و تکمیل کد بر اساس کد موجود ایجاد می کند و می تواند کد را برای مسائل امنیتی اسکن کند. CodeWhisperer از پنج زبان برنامه نویسی به خوبی پشتیبانی می کند و ۱۰ زبان دیگر را با درجه کمتری پشتیبانی می کند. به‌طور اختیاری می‌تواند مرجع‌ها را برای کد مورد استفاده خود پرچم‌گذاری و ثبت کند و به‌صورت اختیاری پیشنهادهای کدی را که شبیه داده‌های آموزشی منبع باز هستند، فیلتر کند.
  • Google Bard یک رابط مبتنی بر وب برای LaMDA است. (مدل زبان برای کاربردهای گفتگو)، یک مدل هوش مصنوعی مکالمه ای که قادر به گفتگوی روان و چند چرخشی است. Bard اخیراً توانایی کمک به کدنویسی و موضوعات مربوط به کدنویسی را اضافه کرده است. زمانی که Bard کدی را منتشر می کند که ممکن است مشمول مجوز منبع باز باشد، منابع آن را ذکر می کند و اطلاعات مربوطه را ارائه می دهد. بارد در توضیح کد نیز خوب است.
  • GitHub Copilot X مجموعه‌ای از ویژگی‌های پیش‌نمایش فنی است که Copilot اصلی را با رابط‌های چت و ترمینال، پشتیبانی از درخواست‌های کشش و پذیرش اولیه GPT-4 OpenAI گسترش می‌دهد. در حال حاضر، برای دسترسی به این قابلیت‌های Copilot X باید یک اشتراک Copilot فعال داشته باشید و به لیست انتظار بپیوندید، بدون هیچ تضمینی در مورد زمان دسترسی به ویژگی‌های جدید. بعد از اینکه به لیست انتظار پیوستم حدود یک ماه طول کشید تا دعوتنامه من رسید. توجه داشته باشید که Copilot X یک محصول در دسترس GitHub Copilot نیست (و ممکن است هرگز نباشد). من از نام Copilot X در سراسر این بررسی استفاده می‌کنم تا نسخه GPT-4 Copilot را که آزمایش کردم از محصول کنونی Copilot مبتنی بر GPT-3 تشخیص دهم.

استفاده از یکی از این مولدهای کد تنها راه تولید کد نیست. برای شروع، می توانید به ترانسفورماتورهای همه منظوره مانند GPT-4 و پیشینیان آن، از جمله ChatGPT، BingGPT/ دسترسی داشته باشید. Bing Chat (در مرورگر Edge موجود است) و Boo.ai. همچنین ابزارهای هوش مصنوعی مختص کد دیگری نیز وجود دارد، مانند StarCoder، Tabnine، Cody، AlphaCode، Polycoder و Replit Ghostwriter. در هر موردی که ذکر کردم، استفاده از احتیاط و آزمایش و بررسی دقیق کد تولید شده قبل از استفاده از آن ضروری است.

نحوه آزمایش ابزارها

در مقاله قبلی خود در مورد تولید کد، من تولیدکنندگان کد هوش مصنوعی را بر اساس کار نسبتاً آسان نوشتن یک برنامه برای تعیین تعداد روزهای بین دو تاریخ ارزیابی کردم. اکثر آنها خوب بودند، اگرچه برخی از آنها به راهنمایی بیشتری نسبت به دیگران نیاز داشتند. برای این بررسی، من مولدهای کد را در کار دشوارتر خراش دادن InfoWorld.com برای فهرستی از مقالات امتحان کردم. من به آنها یک طرح کلی دادم اما کمک اضافی نکردم. هیچ کدام کد درستی تولید نکردند، اگرچه برخی از آنها نزدیکتر از دیگران بودند. به عنوان یک کار اضافی، از ابزارهایی که توضیح کد را پشتیبانی می‌کنند خواستم تا یک نمونه کد پایتون از دوره برنامه نویسی مقدماتی MIT Open Courseware.

چرا محاسبات لبه برای توسعه نرم افزار مدرن اهمیت دارد؟

برای مرجع، طرح کلی که به تولیدکنندگان کد دادم این است:


Scrape infoworld.com front page:
	Open https://www.infoworld.com/
	Find all articles by looking for links with ‘article’ in the href; extract title, author, date from each
	List all articles alphabetically by title; eliminate duplicates 
	List all articles alphabetically by author last name
	List all articles latest first

به طور کلی، من سعی کردم مانند یک برنامه نویس ساده لوح تر از خودم عمل کنم، فقط برای اینکه ببینم ابزارها چه کاری انجام می دهند.

اکنون، بیایید با دقت بیشتری به هر یک از تولیدکنندگان کد خود نگاه کنیم.

Amazon CodeWhisperer

در داخل IDE شما، Amazon CodeWhisperer نظرات زبان انگلیسی و کدهای اطراف شما را تجزیه و تحلیل می‌کند تا بفهمد چه کدی باید برای تکمیل آنچه تایپ می‌کنید ایجاد کند. سپس، کدی را به عنوان پیشنهاد ارائه می دهد که می توانید آن را بپذیرید یا رد کنید، یا می توانید از CodeWhisperer برای کد جایگزین بخواهید، یا نادیده بگیرید و به نوشتن کد خود ادامه دهید. مدل زبان بزرگ CodeWhisperer (LLM) روی میلیاردها خط کد از جمله آمازون و کد منبع باز آموزش داده شد. هر پیشنهاد داده شده نه تنها بر اساس نظرات شما و زمینه کد فوری است، بلکه بر اساس محتوای سایر فایل‌های باز شده در IDE است.

علاوه بر تولید کد، CodeWhisperer می‌تواند کدهای پایتون، جاوا و جاوا اسکریپت شما را برای آسیب‌پذیری‌های امنیتی اسکن کرده و راه‌حل‌هایی برای آن‌ها پیشنهاد دهد. لیست آسیب‌پذیری‌هایی که مورد بررسی قرار می‌گیرد شامل پروژه امنیتی برنامه‌های وب باز (OWASP)، بهترین شیوه‌های کتابخانه رمزنگاری، بهترین شیوه‌های API AWS و سایر بهترین شیوه‌های API است. اسکن‌های امنیتی بر حسب درخواست انجام می‌شوند، برخلاف تکمیل کد، که به‌طور مداوم در هنگام کدنویسی ارائه می‌شود، مگر اینکه پیشنهادات را خاموش کنید.

زبان‌های برنامه‌نویسی و IDE‌ها

بهترین زبان های برنامه نویسی CodeWhisperer برای تولید کد (متداول ترین زبان ها در مجموعه آموزشی) جاوا، پایتون، جاوا اسکریپت، تایپ اسکریپت و سی شارپ هستند. این به میزان کمتری روی Ruby، Go، PHP، C++، C، Shell، Scala، Rust، Kotlin و SQL آموزش داده شده است.

افزونه های CodeWhisperer برای Visual Studio Code و JetBrains IDE وجود دارد. همچنین می‌توانید CodeWhisperer را برای استفاده در داخل AWS Cloud9 و AWS Lambda فعال کنید. در هر دو مورد، باید مجوزهای IAM خود را ویرایش کنید و همچنین کادر Enable CodeWhisperer را علامت بزنید.

من CodeWhisperer را در Visual Studio Code نصب کردم. چهار مرحله وجود دارد:

  • افزونه CodeWhisperer را به VS Code اضافه کنید.
  • یک اتصال به AWS اضافه کنید.
  • در وب سایت AWS وارد شوید.
  • CodeWhisperer را از پانل ابزارهای توسعه دهنده AWS شروع کنید.

دستورالعمل‌های استفاده از CodeWhisperer.

شکل ۱. پس از نصب و مجوز CodeWhisperer (در سمت چپ)، می‌توانید دستورالعمل‌های استفاده را که در اینجا در سمت راست نشان داده شده است، مشاهده کنید.

پیشنهادات و تکمیل کد

ارزش تماشای برخی از ویدئوهایی را دارد که نشان‌دهنده قابلیت‌های CodeWhisperer هستند، فهرست‌شده در صفحه منبع CodeWhisperer . آنها بیشتر از آنچه من می توانم در کلمات و اسکرین شات ها به شما می گویند. هنگام تماشای آنها، برای من روشن شد که CodeWhisperer روی کدهایی می درخشد که APIهای AWS را فراخوانی می کند.

React 19 بر اساس انتقال های غیر همگام ساخته شده است

با این وجود، در اینجا تصویری از کد تولید شده از CodeWhisperer وجود دارد:

CodeWhisperer در حال تولید کد.

شکل ۲. کد تولید کد CodeWhisperer.

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

برنامه CodeWhisper.

شکل ۳. برنامه ایجاد شده توسط CodeWhisperer را امتحان می‌کنید.

اسکن های امنیتی و منابع منبع باز

من اسکن امنیتی CodeWhisperer را روی پروژه خود نیز اجرا کردم. جای تعجب نیست که هیچ مشکلی در این فایل شناسایی نشد، اگرچه اسکن CodeWhisperer نشت منبعی را در فایل دیگری که توسط GitHub Copilot X ایجاد شده بود پیدا کرد. اسکن امنیتی CodeWhisperer یک ویژگی متمایزکننده است که هنوز در تولیدکنندگان کد هوش مصنوعی رقیب ظاهر نشده است. p>

این فایل هیچ مرجع منبع باز را راه‌اندازی نمی‌کند، اما وقتی Log مرجع CodeWhisperer را باز کردم، پیوندی به تنظیماتی پیدا کردم که کنترل می‌کند CodeWhisperer کدی را پیشنهاد کند که چنین ارجاعی دارد یا خیر. در نمونه‌های آمازون که مشاهده کردم، کد پیشنهادی با ارجاعات، نوع مجوز را در بالا نشان می‌دهد.

خط اصلی برای CodeWhisperer

CodeWhisperer کد را در یک IDE تولید می کند و بررسی های امنیتی انجام می دهد، اما فاقد پنجره چت و توضیحات کد است. این ابزار کم و بیش همانطور که تبلیغ می شود کار می کند و قیمت (رایگان) برای توسعه دهندگان فردی مناسب است. برای توسعه دهندگان شرکتی، قیمت ۱۹ دلار در ماه برای CodeWhisperer مانند Copilot است. برای فروشگاه‌هایی که به شدت از AWS استفاده می‌کنند و مغازه‌هایی که باید بدانند چه زمانی پیشنهادهای کد به منبع باز ارجاع می‌شوند، CodeWhisperer را به Copilot ترجیح می‌دهم.

Google Bard

پشتیبانی از Bard برای برنامه‌نویسی اعلام شد در ۲۱ آوریل ۲۰۲۳. وبلاگ در پست به بیش از ۲۰ زبان برنامه نویسی از جمله C++، Go، Java، Javascript، Python و Typescript اشاره شده است.

وقتی از بارد لیست کامل را خواستم، پاسخ زیر را دریافت کردم:

Bard بیش از ۲۰ زبان برنامه نویسی را پشتیبانی می کند، از جمله:

  • C++
  • برو
  • جاوا
  • جاوا اسکریپت
  • پایتون
  • TypeScript
  • C#
  • PHP
  • یقوت
  • سوئیفت
  • کاتلین
  • زنگ زدگی
  • جولیا
  • R
  • هاسکل
  • ارلنگ
  • اسکالا
  • لوا
  • OCaml
  • طرح

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

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

من Bard را در توضیح کد و وظایف تولید کد آزمایش کردم که در زیر نشان داده شده است. توضیح کد بسیار خوب بود – آنقدر خوب که من تعجب کردم که آیا بارد بر روی آن نمونه کد دوره MIT آموزش دیده است، که مربوط به سال ۲۰۰۸ است و از آن زمان در وب در دسترس بوده است.

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

پیشنهاد OpenJDK ایجاد رکوردهای جاوا را ساده می کند

به‌جای رفع مشکلات، دوباره تولید کد را اجرا کردم و نتیجه کمی منطقی‌تر بود. با این حال، هنگامی که سعی کردم آن را در Colab اجرا کنم، خطای ویژگی ایجاد کرد. من آن ردیابی را به Bard برگرداندم، یک اصلاح ایجاد کرد، من کد “تثبیت” را در Colab اجرا کردم، و یک خطای نوع در نقطه دیگری وجود داشت. بس است، در حال حاضر! اگر واقعاً یک برنامه نویس ساده لوح بودم، دستانم را بالا می انداختم.

در مورد استناد به صفحات وب و کد منبع باز چطور؟ سؤالات متداول Bard این را داشت:

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

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

این دستورالعملی است که به Bard دادم و گفتگوی حاصل:


I'm about to give you some code to explain. Please wait until the code is complete.

Sure, I will wait until you are finished giving me the code. Please feel free to take your time. I am here to help you in any way that I can.

Here are some tips for explaining code:
•	Start by explaining the overall purpose of the code. What does it do? What problem is it trying to solve?
•	Then, break down the code into smaller chunks and explain each one in turn.
•	Use clear and concise language. Avoid jargon and technical terms.
•	Use examples to illustrate your points.
•	Be patient and don't be afraid to ask questions.

I am confident that I can help you explain any code that you give me. Just let me know what you need and I will do my best to help.



افزونه ها برای کد ویژوال استودیو و IDE های JetBrains. همچنین برای AWS Cloud9 و کنسول AWS Lambda فعال است.

هزینه: انفرادی، رایگان؛ حرفه ای، ۱۹ دلار برای هر کاربر در ماه.

پلتفرم: وب.

هزینه: رایگان، آزمایشی.

پلتفرم: Visual Studio و Visual Studio Code پشتیبانی شده برای Copilot X. IDE های اضافی برای نسخه های بدون پیش نمایش.

هزینه: ۱۰ دلار در ماه یا ۱۰۰ دلار در سال؛ تجارت: ۱۹ دلار برای هر کاربر در ماه.