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

Techboy

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

بررسی برنامه‌نویس Amazon Q: تکمیل کد، چت کد و مهارت‌های AWS

Amazon Q Developer برای تکمیل خطوط کد، رشته‌های سند و بلوک‌های کد if/for/while/try به خوبی کار می‌کند، اما نمی‌تواند توابع کامل را برای موارد استفاده خاص ایجاد کند.

Amazon Q Developer برای تکمیل خطوط کد، رشته‌های سند و بلوک‌های کد if/for/while/try به خوبی کار می‌کند، اما نمی‌تواند توابع کامل را برای موارد استفاده خاص ایجاد کند.

وقتی Amazon CodeWhisperer، Google Bard، و GitHub Copilot را در ژوئن ۲۰۲۳ بررسی کردم، CodeWhisperer می‌توانست کد را در یک IDE تولید کند و بررسی‌های امنیتی انجام داد، اما فاقد پنجره چت و توضیحات کد بود. نسخه فعلی CodeWhisperer اکنون Amazon Q Developer نامیده می شود، و دارای یک پنجره چت است که می تواند کد، و چندین ویژگی دیگر را که ممکن است به شما مرتبط باشد، توضیح دهد، به خصوص اگر توسعه زیادی را با استفاده از AWS انجام دهید.

Amazon Q Developer در حال حاضر در Visual Studio Code، Visual Studio، JetBrains IDEs، کنسول آمازون و خط فرمان macOS اجرا می شود. Q Developer همچنین عوامل ناهمزمان، ترجمه زبان برنامه نویسی و تبدیل/ ارتقاء کد جاوا را ارائه می دهد. علاوه بر تولید، تکمیل و بحث در مورد کد، Q Developer می‌تواند تست‌های واحد بنویسد، کد را بهینه‌سازی کند، آسیب‌پذیری‌ها را اسکن کند، و اصلاحاتی را پیشنهاد کند. از مکالمات به زبان انگلیسی و کد در Python، Java، JavaScript، TypeScript، C#، برو، Rust، PHP، Ruby، Kotlin، C، C++< /a>، اسکریپت نویسی پوسته، SQL و زبان های برنامه نویسی Scala.

می‌توانید با توسعه‌دهنده آمازون Q درباره قابلیت‌های AWS گپ بزنید و از او بخواهید منابع شما را بررسی کند، صورت‌حساب‌تان را تجزیه و تحلیل کند، یا راه‌حل‌های معمار شما را بررسی کند. در مورد الگوهای معمارانه AWS، مستندات، و پیاده سازی راه حل می داند.

بر اساس Amazon، Amazon Q Developer “با پشتیبانی Amazon Bedrock” و در “محتوای AWS با کیفیت بالا” آموزش دیده است. از آنجایی که Bedrock از بسیاری از مدل‌های پایه پشتیبانی می‌کند، در بیانیه وب مشخص نیست که کدام یک برای Amazon Q Developer استفاده شده است. من پرسیدم، و این پاسخ را از سخنگوی AWS دریافت کردم: “Amazon Q از چندین مدل برای اجرای وظایف خود استفاده می کند و از منطق برای هدایت وظایف به مدلی استفاده می کند که بهترین مناسب برای کار است.”

Amazon Q Developer یک ردیاب مرجع دارد که تشخیص می دهد آیا پیشنهاد کد ممکن است شبیه کدهای در دسترس عموم باشد یا خیر. ردیاب مرجع می‌تواند این موارد را با نشانی اینترنتی مخزن و اطلاعات مجوز پروژه برچسب‌گذاری کند، یا به صورت اختیاری آنها را فیلتر کند.

Amazon Q Developer مستقیماً با GitHub Copilot، JetBrains AI و Tabnine رقابت می‌کند و به طور غیرمستقیم با تعدادی از مدل‌های زبان بزرگ (LLM) و مدل‌های زبان کوچک (SLM) که از کد اطلاع دارند، رقابت می‌کند. مانند Code Llama، StarCoder، Bard، OpenAI Codex و Mistral Codestral. GitHub Copilot می‌تواند به ده‌ها زبان طبیعی مکالمه کند، برخلاف آمازون Q Developer، و از تعدادی افزونه‌های برنامه‌نویسی، ابری، و فروشندگان پایگاه‌داده پشتیبانی می‌کند، برخلاف ارتباطات فقط AWS Amazon Q Developer.

نصب برنامه نویس Amazon Q

با توجه به محیط‌های متعددی که Amazon Q Developer می‌تواند در آن اجرا شود، تعجبی ندارد که نصب‌کننده‌های متعدد وجود داشته باشد. تنها نکته مشکل، امضا و احراز هویت است.

پیشنهاد OpenJDK API فایل کلاس جاوا را ارائه می دهد

نصب Q Developer در Visual Studio Code

می‌توانید Amazon Q Developer را از بازار کد ویژوال استودیو یا از نوار کناری Extensions در Visual Studio Code. با فشار دادن Shift-Command-X یا با انتخاب Extensions: Install Extensions از پالت فرمان می توانید از نماد Extensions در سمت چپ به آن نوار کناری بروید. برای پیدا کردن آن، “Amazon Q” را تایپ کنید. هنگامی که برنامه افزودنی را نصب کردید، باید همانطور که در زیر توضیح داده شده است، به AWS احراز هویت کنید.

amazon q developer 01

توسعه‌دهنده آمازون Q در Visual Studio Code شامل یک پنجره چت (در سمت چپ) و همچنین تولید کد است. پنجره چت قابلیت های Amazon Q Developer را نشان می دهد.

نصب Q Developer در JetBrains IDE

مانند Visual Studio Code، JetBrains بازاری برای پلاگین های IDE دارد، جایی که Amazon Q Developer موجود است. پس از دانلود و نصب افزونه، باید IDE را مجددا راه اندازی کنید. سپس باید همانطور که در زیر توضیح داده شده است به AWS احراز هویت کنید. توجه داشته باشید که افزونه Amazon Q Developer تکمیل کد تمام خط داخلی داخلی JetBrains را غیرفعال می کند.

amazon q developer 02

توسعه‌دهنده آمازون Q در IntelliJ IDEA و سایر IDE‌های JetBrains، یک پنجره چت در سمت راست و همچنین تکمیل کد دارد. پنجره چت قابلیت های Amazon Q Developer را نشان می دهد.

نصب برنامه نویس Q در جعبه ابزار AWS برای ویژوال استودیو

برای Visual Studio، Amazon Q Developer بخشی از AWS Toolkit است که می توانید آن را در Visual Studio Marketplace. مجدداً، هنگامی که جعبه ابزار را نصب کردید، باید همانطور که در زیر توضیح داده شده است، به AWS احراز هویت کنید.

امضا و احراز هویت برنامه‌نویس Amazon Q

فرایند احراز هویت گیج کننده است زیرا چندین گزینه و چندین مرحله وجود دارد که بین IDE و مرورگر وب شما جهش می کنند. قبلاً مجبور بودید این فرآیند را مرتباً تکرار کنید، اما مدیر محصول به من اطمینان می‌دهد که احراز هویت مجدد اکنون فقط هر سه ماه یکبار ضروری است.

نصب Q Developer برای خط فرمان

توسعه‌دهنده آمازون Q برای خط فرمان در حال حاضر فقط برای macOS است، اگرچه نسخه لینوکس در نقشه راه است و مستند شده به عنوان یک هدف راه دور. MacOS نصب اساساً یک دانلود یک DMG است فایل، به دنبال اجرای تصویر دیسک، کشیدن فایل Q به فهرست برنامه‌ها، و اجرای آن برنامه Q برای نصب برنامه CLI q و نماد نوار منو که می‌تواند تنظیمات و کاربر وب را نمایش دهد. راهنما. همچنین باید به AWS احراز هویت کنید، که شما را وارد می‌کند.

amazon q developer 03

در macOS، برنامه خط فرمان q از چندین برنامه پوسته و چند برنامه ترمینال پشتیبانی می کند. در اینجا من از iTerm2 و پوسته z استفاده می کنم. دستور q translate دستورات پوسته را برای شما می سازد و فرمان q chat یک دستیار هوش مصنوعی را باز می کند.

Google پشتیبانی Gemini LLM را به انبار داده BigQuery ارائه می‌کند

توسعه‌دهنده آمازون Q در کنسول AWS

اگر به‌جای کاربر ریشه به‌عنوان یک کاربر IAM در حال اجرا هستید، برای استفاده از Amazon Q Developer باید مجوزهای IAM را اضافه کنید. پس از دریافت مجوز، AWS باید نمادی را در سمت راست صفحه نمایش دهد که رابط برنامه‌نویس Amazon Q را نشان می‌دهد.

amazon q developer 04

پنجره برنامه‌نویس Q Amazon در سمت راست، که در کنسول AWS اجرا می‌شود، می‌تواند با شما در مورد استفاده از AWS چت کند و معماری و کد برای برنامه‌های AWS تولید کند.

ارزیابی توسعه دهنده Amazon Q

طبق گزارش AWS، “Amazon Q Developer Agent بالاترین امتیاز ۱۳.۴٪ را در SWE-Bench به دست آورد. Leaderboard و ۲۰.۵% در SWE-Bench Leaderboard (Lite)، مجموعه داده‌ای که قابلیت‌های کدنویسی را معیار قرار می‌دهد. قابلیت‌های اسکن امنیتی آمازون Q از همه ابزارهای قابل سنجش عمومی در تشخیص در محبوب‌ترین زبان‌های برنامه‌نویسی بهتر عمل می‌کند.

هر دو اعداد نقل شده در سایت SWE-Bench منعکس شده اند، اما دو مشکل وجود دارد. هیچ کدام از این دو عدد هنوز توسط SWE-Bench تایید نشده است و رتبه توسعه دهندگان Amazon Q در Lite Leaderboard به رتبه ۳ کاهش یافته است. علاوه بر این، اگر سند پشتیبانی در وب برای ادعای اسکن امنیتی آمازون وجود داشته باشد، از جستجوهای من طفره رفته است.

SWE-Bench، از کورنل، “یک چارچوب ارزیابی متشکل از ۲۲۹۴ مشکل مهندسی نرم افزار است که از مسائل واقعی GitHub و درخواست های کشش متناظر در ۱۲ مخزن محبوب Python استخراج شده است.” نمرات نشان دهنده نرخ راه حل است. مجموعه داده Lite زیرمجموعه ای از ۳۰۰ مشکل GitHub است.

بیایید بررسی کنیم که Amazon Q Developer چگونه در وظایف مختلفی که در برخی از ۱۵ زبان برنامه نویسی پشتیبانی می کند، رفتار می کند. این یک معیار رسمی نیست، بلکه تلاشی است برای درک اینکه چقدر خوب کار می کند. به خاطر داشته باشید که برنامه‌نویس Amazon Q حساس به متن است و سعی می کند از شخصیتی استفاده کند که فکر می کند به بهترین وجه با محیطی که از آن درخواست کمک می کنید مناسب است.

تولید کد درون خطی پیش‌بینی‌کننده با برنامه‌نویس Amazon Q

من یک سوال سافت بال را برای تولید کد پیش بینی امتحان کردم و از یکی از نمونه های پیشنهادی درون خطی آمازون استفاده کردم. دستور Python ارائه شده # تابع برای آپلود یک فایل در سطل S3 بود. با فشردن Option-C همانطور که گفته شد، کد زیر فرمان در تصویر زیر، پس از یک کاراکتر غیرقانونی که مجبور به حذف آن شدم، دریافت کردم. مجبور شدم import را در بالا تایپ کنم تا از آمازون Q بخواهم واردات را برای logging، boto3 و ClientError.

من همچنین از Q Chat استفاده کردم تا به من بگوید چگونه واردات را حل کنم. یک دستور pip را پیشنهاد کرد، اما در سیستم من که محیط Python اشتباه را برطرف کرد (نسخه ۳.۱۱). من مجبور شدم کمی در درخت دایرکتوری Frameworks کار کنم تا به خودم یادآوری کنم که از pip3 برای هدف قرار دادن محیط فعلی Python v 3.12 استفاده کنم. دلم می‌خواهد «دیزی، دیزی» را برای دیو بخوانم و از اینکه ذهنم در حال رفتن است شکایت کنم.

amazon q developer 05

تولید کد درون خطی و چت با برنامه نویس آمازون Q. همه کدهای زیر نظر # TODO توسط Amazon Q Developer ایجاد شده است، اگرچه چندین مرحله انجام شد.

من همچنین دو نمونه پیشنهادی داخلی دیگر آمازون را امتحان کردم. مثال برای تکمیل آرایه ای از کاربران جعلی در پایتون بیشتر کار می کند. مجبور شدم پایانی را خودم اضافه کنم. مثال برای تولید تست های واحد با فشار دادن گزینه-C ناموفق بود: به جای فراخوانی تابع، کاراکترهای غیرقانونی تولید می کرد. (من شروع به مشکوک کردن مشکلی با Option-C در VS Code در macOS کرده ام. ممکن است ربطی به Amazon Q Developer داشته باشد یا نداشته باشد.)

وقتی VS Code را مجدداً راه اندازی کردم، دوباره امتحان کردم و این بار Return را در خط زیر نظر فشار دادم، به خوبی کار کرد و تابع test_sum در زیر ایجاد شد.

# Write a test case for the above function.
def test_sum():
    """
    Unit test for the sum function.
    """
    assert sum(1, 2) == 3
    assert sum(-1, 2) == 1
    assert sum(0, 0) == 0

AWS نمونه‌هایی از تکمیل را نشان می‌دهد با آمازون Q Developer به بیش از نیم دوجین زبان برنامه نویسی در مستندات خود. مثال‌ها، مانند نمونه‌های پایتون که بحث کردیم، یا بسیار ساده هستند، به عنوان مثال. دو عدد اضافه کنید، یا به عملیات رایج AWS که توسط APIها پشتیبانی می‌شوند، مانند آپلود فایل‌ها در یک سطل S3 مربوط شود.

زبان طبیعی برای تولید کد با Amazon Q Developer

از آنجایی که اکنون بر این باور بودم که Amazon Q Developer می‌تواند پایتون را تولید کند، به‌ویژه برای نمونه‌های آزمایشی خود، چیزی کمی متفاوت را امتحان کردم. همانطور که در تصویر زیر نشان داده شده است، من یک فایل به نام quicksort.cpp ایجاد کردم، سپس یک نظر اولیه را تایپ کردم:

//function to sort a vector of generics in memory using the quicksort algorithm

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

Quicksort یک الگوریتم شناخته شده است. هر دو کتابخانه C و C++ پیاده سازی هایی از آن دارند، اما از ژنریک استفاده نمی کنند. در عوض، باید توابع مقایسه نوع خاص را بنویسید تا به qsort منتقل شوید. این تاریخی است، زیرا کتابخانه‌ها قبل از اضافه شدن ژنریک به زبان‌ها پیاده‌سازی شدند.