یکی از اکتشافات جالب در مورد هوش مصنوعی زاینده این است که میتواند کدهای بسیار خوبی بنویسد. یکی از همکاران ما این قابلیت را در سال گذشته آزمایش کرد و از هوش مصنوعی فارسی زیگپ خواست تا یک افزونه وردپرس برایش بنویسد و زیگپ این کار را انجام داد؛ هرچند چنین پروژهای در برنامهنویسی ساده محسوب میشود.
اما یک ربات هوش مصنوعی برنامهنویسی چطور میتواند یک کد تمیز و عاری از اشکال بنویسد؟ آیا وجود چندین سایت هوش مصنوعی برنامهنویسی باعث خواهد شد تا برنامهنویسها که خودشان هوش مصنوعی را توسعه دادهاند، از کار بیکار شوند؟
کدنویسی با زیگپ
ابتدا بیایید ببینیم از یک هوش مصنوعی برنامهنویسی مانند زیگپ چه کارهایی برمیآید:
- زیگپ میتواند کدهای بسیار مفید یا غیرقابل استفاده تولید کند. مهم این است برای کسب بهترین نتایج، دستورات واضح و دقیق ارائه دهید. کدهای هوش مصنوعی در صورت کارسازند که دستورات درستی به هوش مصنوعی داده باشید.
- زیگپ به جای ساختن اپلیکیشنهای کامل از ابتدا، در کمک به وظایف یا روالهای برنامهنویسی خاص برتری دارد. پس به جای اینکه بخواهید تمام کار را برای شما انجام دهد، از آن برای بهینهسازی کارتان کمک بگیرید. بهترین هوش مصنوعی برنامهنویسی هم قرار نیست صفر تا صد کارها را برای شما انجام دهد.
- از زیگپ برای پیدا کردن و انتخاب کتابخانههای کدگذاری مناسب برای اهداف خاص استفاده و در یک بحث تعاملی برای محدود کردن گزینهها شرکت کنید.
- در مورد مالکیت کدهای تولید شده با هوش مصنوعی محتاط باشید و همیشه قابلیت اطمینان کد را بررسی کنید. کورکورانه به خروجی تولید شده اعتماد نکنید.
- تعاملات با هوش مصنوعی فارسی زیگپ را به عنوان یک مکالمه در نظر بگیرید. سوالات خود را بر اساس پاسخهای هوش مصنوعی اصلاح کنید تا به خروجی مورد نظر نزدیک شوید.
- براساس نکته قبلی، حتی میتوانید برای یادگیری کدنویسی هم از زیگپ استفاده کنید. مثلا از آن بپرسید برنامهنویسی هوش مصنوعی با c++ چگونه است و چه اساسی دارد؟ یا بخواهید نمونه کد هوش مصنوعی پایتون به شما ارائه دهد.
حال بیایید قابلیتهای هوش مصنوعی زیگپ در برنامهنویسی را عمیقتر مرور کنیم.
زیگپ کدام نوع از کدنویسی را بهتر انجام میدهد؟
دو واقعیت مهم در مورد چتباتها و کدنویسی وجود دارد. اولین مورد این است که هوش مصنوعی در واقع میتواند کدهای مفیدی بنویسد.
دوم این است که میتواند کاملا سردرگم شود، در تله بیفتد، برود پی نخودسیاه و کدهای غیرقابل مصرف تولید کند.
همکار ما این نکته را به سختی دریافت. پس از اتمام افزونه وردپرس، او تصمیم گرفت ببیند زیگپ تا کجا میتواند پیش برود.
او یک درخواست بسیار دقیق برای یک برنامه مک نوشت، شامل توضیحات دقیق عناصر رابط کاربری، تعاملات، آنچه در تنظیمات ارائه میشود، نحوه کار آنها و غیره. سپس درخواست را برای زیگپ فرستاد.
زیگپ با سیلی از متن و کد پاسخ داد. سپس، در اواسط کار، کدنویسی متوقف شد. وقتی از او خواستم ادامه دهد، کد و متن بیشتری را تحویل داد.
پس از درخواست همکار ما برای ادامه و دریافت کدهای بیشتر، مشخص شد که کدها چندان قابل استفاده نیست.
بعد از یک سری آزمایشهای مکرر، برای او روشن شد که اگر از زیگپ، ChatGPT یا هر هوش مصنوعی دیگری بخواهید یک برنامه کامل را تحویل دهد، با شکست مواجه میشود. نتیجه این مشاهدات این است که اگر چیزی در مورد کدنویسی نمیدانید و میخواهید زیگپ چیزی برای شما بسازد، شکست میخورد.
جایی که زیگپ موفق میشود – و این کار را بسیار خوب انجام میدهد – در مورد کمک به کسی است که از قبل میداند چگونه برنامهنویسی کند تا روالهای خاصی بسازد و وظایف خاصی را انجام دهد. برنامهای را که در نوار منو اجرا میشود درخواست نکنید. اما اگر از زیگپ برای قرار دادن یک منو در نوار منو درخواست کنید، و سپس آن را در پروژه خود بچسبانید، ابزار کاملا خوب عمل میکند.
همچنین، به خاطر داشته باشید که در حالی که ChatGPT یا زیگپ به نظر میرسد مقدار زیادی از دانش خاص دامنه دارند (و اغلب دارند)، اما فاقد خرد انسانی هستند. به این ترتیب، این ابزار ممکن است قادر به نوشتن کد باشد، اما قادر به نوشتن کدهای حاوی تفاوتهای ظریف برای مشکلات بسیار خاص یا پیچیدهای نیست که درک آنها به تجربه عمیق انسانی نیاز دارد.
از زیگپ برای تکنیکهای نمایشی، نوشتن الگوریتمهای کوچک و تولید زیرروالها استفاده کنید. حتی میتوانید زیگپ را دریافت کنید تا به شما کمک کند یک پروژه بزرگتر را به تکهها تقسیم کنید، و سپس میتوانید از آن بخواهید که به شما در کدنویسی آن تکهها کمک کند.
بنابراین، با در نظر گرفتن این موضوع، اجازه دهید به چند مرحله خاص نگاه کنیم که چگونه زیگپ میتواند به شما در نوشتن کد کمک کند.
چگونه از زیگپ برای نوشتن کد استفاده کنیم؟
درخواست خود را محدود و شفاف کنید
این اولین قدم این است که تصمیم بگیرید چه چیزی از زیگپ بخواهید، اما هنوز چیزی از آن نپرسید. تصمیم بگیرید که میخواهید عملکرد یا روال شما چه کاری انجام دهد، یا میخواهید در مورد چه چیزی یاد بگیرید تا در کدتان گنجانده شود. در مورد پارامترهایی که قرار است به کد خود منتقل کنید و آنچه میخواهید دریافت کنید، تصمیم بگیرید. و سپس ببینید که چگونه میخواهید آن را توصیف کنید.
تصور کنید برای انجام این کار به یک برنامهنویس انسانی پول میدهید. آیا به آن شخص اطلاعات کافی میدهید تا بتواند روی تکلیف شما کار کند؟ یا خیلی مبهم هستید و شخصی که استخدام کردهاید به احتمال زیاد یا هی سوال میپرسد یا چیزی کاملا نامرتبط با خواستههای شما را تحویل میدهد؟
از زیگپ برای کشف کتابخانهها و منابع استفاده کنید
با ظهور ابزارهای هوش مصنوعی، استفاده از کتابخانه هوش مصنوعی برای استخراج و خلاصهسازی هوشمندانه کدها منطقیتر است. یکی از مکانهایی که زیگپ به نسبت انسان برتری دارد (و همچنین منطقهای است که میتوانید به راحتی آن را تایید کنید تا از الگوی رفتاری معتبر اما نادرست آن جلوگیری کنید) یافتن کتابخانهها و منابع است.
از یکی از همکاران برنامهنویس خود خواستیم تا تجربیاتش در این زمینه را برایمان بنویسد:
«من با یک پرامپت شروع کردم که برای استخراج اطلاعات در مورد اینکه چه کتابخانههایی عملکرد مورد نظر من را ارائه میدهند طراحی شده بود. کتابخانه مجموعه ای از کدهایی است که برنامهنویس میتواند به آن دسترسی داشته باشد که بسیاری از کارهای سنگین را برای یک هدف خاص انجام میدهد. بخش بزرگی از برنامهنویسی مدرن یافتن و انتخاب کتابخانههای مناسب است، بنابراین این نقطه شروع خوبی است.
در این مورد، من به بلوکهای کد نوشته شده توسط افراد دیگر نگاه میکنم که متن را خلاصه میکنند. این اولین پرامپت من است:
| ده کتابخانه مختلف AI منبع باز (و زبانهایی که با آنها کار میکنند) را توصیف کنید که میتوانم از آنها برای تولید خلاصهای از محتوای اصلی هر صفحه وب، بدون توجه به تبلیغات یا مطالب جاسازی شده استفاده کنم.
این پرامپت دقیقا همان چیزی را که میخواستم به من داد، از جمله اشارهای به پیشنهاداتی که OpenAI برای برنامهنویسها فراهم میکند. فکر میکنم OpenAI در اینجا عالی عمل میکند، اما برای این پروژه فرضی، نمیخواهم برای هزینههای API بودجه بگذارم. بنابراین. من این پرامپت را محدود میکنم:
| پیشنهاد دیگری که رایگان باشد نداری؟
این پاسخی است که زیگپ داد: “بله، هر ده کتابخانه هوش مصنوعی منبعباز و رایگان برای استفاده هستند. با این حال، برخی از آنها ممکن است محدودیتهای استفاده داشته باشند یا برای دسترسی به ویژگیها یا منابع اضافی نیاز به پرداخت داشته باشند.” بنابراین، بر اساس آن، من پرامپت خود را روشن کردم:
| کدام یک از این کتابخانهها محدودیت استفاده و نیازی به پرداخت اضافی یا مجوز ندارند؟
در این مورد، زیگپ هشت انتخاب کتابخانه به من داد، اما هیچکدام از آنها به زبان PHP که قصد کدنویسی با آن را داشتم، اشاره نکردند. بنابراین، این دستور بعدی است:
| از بین آن 8 کتابخانه، آیا میتوانم از یکی با PHP استفاده کنم؟
سه کتابخانه را برگرداند، اما من مطمئن نبودم که هر کدام چه کاری انجام میدهند. خب یک سوال دیگر:
| تفاوت بین Sumy، Gensim و NLTK چیست؟
اما چون مطمئن نبودم که منظورم را میفهمد، برنامه خودم را برای زیگپ روشن کردم:
| اگر بخواهم خلاصهای از مقالات خبری صفحه وب ایجاد کنم، کدام کتابخانه بهتر کار میکند؟
پاسخی که دریافت کردم واضح و امیدوارکننده بود: “Sumy به طور خاص برای خلاصهسازی متن طراحی شده است، که وظیفه ایجاد خلاصهای است که مهمترین اطلاعات را از یک قطعه متن میگیرد.
شاید به نظر برنامهنویسی نباشد، اما به شما اطمینان میدهم که اینطور است. برنامهنویسی فقط انتشار خطوط کد روی یک صفحه نیست. برنامهنویسی به این معناست که چگونه میتوان همه منابع و سیستمهای مختلف را با هم ادغام و چگونه با تمام اجزای مختلف راه حل خود صحبت کرد. در اینجا زیگپ به من کمک کرد تا آنالیز یکپارچهسازی را انجام دهم.»
از زیگپ بخواهید تا یک نمونه کد برایتان بنویسد.
قبلتر هم گفتیم، استفاده از زیگپ برای نوشتن کامل یک کد یا برنامه درست نیست و نتیجه خوبی نخواهید گرفت. از سویی چتباتهای هوش مصنوعی در اصلاح یا رفع باگ کدهای قبلا نوشتهشده هم کارنامه خوبی ندارند.
بهترین کار این است که از زیگپ بخواهید برای نوشتن یک کد جدید، یک مثال جدید برایتان تولید کند.
این محدودیت به این معنی است که شما باید خودتان آن را انجام دهید. همانطور که میدانیم، اولین پیشنویس یک قطعه کد به ندرت کد نهایی است. بنابراین، حتی اگر انتظار داشته باشید که زیگپ کد نهایی را تولید کند، واقعا یک نقطه شروع خواهد بود، جایی که باید آن را تکمیل کنید، آن را در پروژه بزرگتر خود ادغام کنید، آن را آزمایش کنید، آن را اصلاح کنید، اشکال زدایی کنید و غیره.
اما این بدان معنا نیست که کد مثال یا نمونهای که زیگپ برای شما مینویسد بیارزش است.
سوالات متداول
آیا زیگپ جایگزین برنامهنویسان خواهد شد؟
خیر، حداقل الان نه. زیگپ در سطح یک دانشجوی برنامهنویسی با استعداد سال اول برنامهریزی میکند، اما مبتدی است. این ابزار ممکن است نیاز به برنامهنویسان سطح ابتدایی را کاهش دهد، اما در سطح فعلی، فکر میکنم زندگی برنامهنویسان سطح ابتدایی (و حتی برنامهنویسان با تجربه بیشتر) را برای نوشتن کد و جستجوی اطلاعات آسانتر میکند و باعث صرفهجویی در زمان آنها میشود.
چگونه میتوانم پاسخهای کدنویسی را در زیگپ دریافت کنم؟
کافی است از آن درخواست کنید. در بالا دیدید که چگونه از یک گفتگوی گفتگوی تعاملی برای محدود کردن پاسخهای مورد نظر استفاده کردیم. هنگامی که با زیگپ کار میکنید، انتظار نداشته باشید که یک پرامپت به طور جادویی تمام کارهای شما را برای شما انجام دهد. اما از آن به عنوان کمککننده و منبع استفاده کنید تا اطلاعات بسیار مفیدی در اختیار شما قرار دهد. البته، این اطلاعات را آزمایش کنید، زیرا همانطور که «جان شولمن» یکی از بنیانگذاران OpenAI میگوید، “بزرگترین نگرانی ما در مورد واقعیت بود، زیرا مدل دوست دارد از خودش چیزهایی بسازد.”
آیا سلامت کدهای نوشتهشده با هوش مصنوعی تضمینشده است؟
ابدا! اما شما همچنین نمیتوانید به کدهایی که برنامهنویسان انسانی هم مینویسند اعتماد کنید. حتی خبرهترین برنامهنویس هم به کدی که مینویسد اعتماد صددرصد ندارد. کد از فرایند کدسازیِ به طرز باورنکردنی ناقصی بیرون میآید.
همیشه اشکالاتی وجود دارد. قبل از ارسال، باید آزمایش، تست و آزمایش مجدد انجام دهید. سپس، تست آلفا با چند قربانی منتخب. سپس آزمایش بتا را با جامعه کاربری گستردهتر خود انجام دهید. حتی بعد از همه اینها، اشکالاتی وجود خواهد داشت. فقط به این دلیل که یک هوش مصنوعی در این برنامه کدنویسی بازی میکند به این معنی نیست که میتواند کدهای بدون اشکال انجام دهد. اعتماد کامل نکنید، چرا که طبیعت دنیا همین است!
وقتی از زیگپ میپرسم، توضیحات من در مورد یک مشکل برنامهنویسی چقدر باید دقیق باشد؟
جزئینگر باشید. به تفصیل اینطور به قضیه نگاه کنید: هر چه بیشتر جا را برای تفسیر باز بگذارید، هوش مصنوعی راه خودش را بیشتر خواهد رفت. وقتی به زیگپ دستور میدهیم تا در حین برنامهنویسی به ما کمک کند، تصور کنید که یک کار برنامهنویسی را به یک دانشجو یا کارمند تازهکار محول کردهاید. آیا به آن شخص جزئیات کافی دادید تا بتواند پیشنویس اولیه را ایجاد کند یا باید تعداد زیادی سوال اضافی از شما بپرسد؟
اگر زیگپ برای من کدی تولید کند، صاحب آن کد کیست؟
همانطور که مشخص است، هنوز رویه قضایی زیادی برای پاسخ قطعی به این سوال وجود ندارد. آن هم در کشور ما که هنوز هیچ دورخیزی برای قانونگذاری در زمینه هوش مصنوعی در آن صورت نگرفته است!
ایالات متحده، کانادا و بریتانیا به چیزی که دارای حق انتشار است نیاز دارند که توسط دست انسان ایجاد شده باشد، بنابراین کد تولیدشده توسط ابزار هوش مصنوعی ممکن است دارای حق انتشار نباشد. همچنین مسائل مربوط به مسئولیت بر اساس اینکه کد آموزشی از کجا آمده و کد حاصل چگونه استفاده میشود وجود دارد.