راهنمای کدنویسی ایمن و مؤثر با هوش مصنوعی

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

8 دقیقه مطالعهبه‌روزرسانی

Glass blocks connected by glowing lines with small gears

چت هوش مصنوعی واقعاً برای برنامه‌نویسی مفید است: توضیح کدهای ناآشنا، پیدا کردن علت خطاها، نوشتن کدهای روتین (boilerplate)، طراحی تست‌ها و آموزش زبان یا کتابخانه‌ای جدید. با این حال، آن‌قدر با اعتمادبه‌نفس اشتباه می‌کند که باید با هر پاسخ مثل یک پول ریکوئست (pull request) از طرف یک همکار سریع اما بی‌دقت برخورد کنید. این راهنما به شما نشان می‌دهد چطور درخواست‌های خوبی بنویسید و خروجی دریافتی را بررسی کنید.

چت هوش مصنوعی در چه بخش‌هایی از کدنویسی قوی است؟

  • توضیح کد: «این تابع را خط‌به‌خط برایم توضیح بده».
  • دیباگ کردن: خواندن پیام خطا و استک تریس (stack trace) و پیشنهاد دلایل احتمالی.
  • توابع کوچک و مشخص: پارس کردن تاریخ، اعتبارسنجی ورودی‌ها، تبدیل داده‌ها.
  • کدهای روتین (Boilerplate): فایل‌های کانفیگ، پردازش آرگومان‌های خط فرمان، کنترلرهای پایه API.
  • تست‌ها: نوشتن پیش‌نویس تست‌های واحد (unit test)، از جمله سناریوهای خاصی (edge cases) که فراموش کرده‌اید.
  • رجکس (Regex)، SQL و دستورات تک‌خطی شل، همراه با توضیح هر بخش.
  • یادگیری: «من پایتون بلدم؛ نشان بده این کد در Go چطور نوشته می‌شود و تفاوت‌ها را توضیح بده».
  • بررسی کد (Code review): تشخیص مشکلات خوانایی، خطاهای مدیریت‌نشده و حفره‌های امنیتی واضح.

هوش مصنوعی در تصمیم‌گیری‌های کلان معماری که به کل پایگاه کد (codebase) شما بستگی دارند، نسخه‌های بسیار جدید کتابخانه‌ها که شاید ندیده باشد، و هر چیزی که به آن دسترسی ندارد ضعیف‌تر عمل می‌کند. در چتی مثل ChatG، هوش مصنوعی فقط چیزهایی را می‌بیند که پیست می‌کنید. این ابزار نمی‌تواند فایل‌های شما را باز کند یا کدتان را اجرا نماید.

چگونه برای رفع باگ درخواست بنویسیم؟

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

ضعیف:
کدم کار نمی‌کند، درستش کن.
[۲۰۰ خط کد پیست‌شده]
قوی:
Python 3.12, pandas 2.x. This function should return the average order
value per customer, but it raises KeyError: 'customer_id'.

Code:
[فقط تابع و نمونه‌ای از ۵ سطر داده را پیست کنید]

Full traceback:
[پیست کنید]

من چک کردم و فایل CSV ستون customer_id دارد. دلایل احتمالی چه هستند؟
قبل از نمایش کد اصلاح‌شده، راه‌حل را توضیح بده.

کد خود را به کوچک‌ترین قطعه‌ای که هنوز مشکل را بازتولید می‌کند کاهش دهید. این کار اغلب خودش باگ را آشکار می‌کند و خطوط مهم را در مرکز توجه نگه می‌دارد. می‌توانید یک پرامپت دیباگ در چت باز کنید و جاهای خالی را پر نمایید.

چگونه درخواست نوشتن کد جدید بدهیم؟

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

یک تابع TypeScript به نام slugify(title: string): string بنویس.
- حروف کوچک، فقط ASCII؛ حروف صدادار رایج با اعراب را جایگزین کن (مثلاً é بشود e).
- هر توالی از کاراکترهای غیرحرفی-عددی را با یک خط فاصله جایگزین کن.
- خط فاصله‌ها را از دو طرف حذف کن؛ حداکثر طول ۶۰، هرگز کلمه را از وسط قطع نکن.
- بدون کتابخانه خارجی.
سپس ۸ تست واحد با Vitest برای آن بنویس، شامل رشته خالی و ورودی حاوی ایموجی.

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

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

قبل از تحویل کد، همه‌چیز را بررسی کنید

کد تولیدشده توسط هوش مصنوعی ممکن است تمیز به نظر برسد اما همچنان اشتباه باشد. این بررسی‌ها را به روال کاری خود اضافه کنید:

  1. آن را اجرا کنید. هرگز کدی را بدون اجرای خود آن و تست‌هایش وارد پروژه نکنید.
  2. بررسی کنید که تمام توابع و گزینه‌ها وجود داشته باشند. هوش مصنوعی گاهی متدها، پارامترها یا کلیدهای کانفیگ من‌درآوردی می‌سازد یا از موارد منسوخ در نسخه‌های قبلی استفاده می‌کند. آن‌ها را در مستندات رسمی همان نسخه‌ای که استفاده می‌کنید بررسی کنید.
  3. نام هر پکیج را قبل از نصب بررسی کنید. محققان امنیتی مواردی را ثبت کرده‌اند که دستیارهای هوش مصنوعی پکیج‌هایی را پیشنهاد داده‌اند که اصلاً وجود ندارند و مهاجمان می‌توانند این نام‌ها را با کدهای مخرب ثبت کنند (حمله‌ای که گاهی "slopsquatting" نامیده می‌شود). قبل از نصب، مطمئن شوید پکیج واقعی، فعال و رسمی است.
  4. کد را از نظر امنیتی بررسی کنید. به دنبال کدهای SQL ساخته‌شده با الحاق رشته‌ها (string concatenation)، نبود اعتبارسنجی ورودی‌ها، غیرفعال بودن بررسی گواهی‌های امنیتی، وجود سکرت‌ها در کد و دسترسی‌های بیش از حد مجاز بگردید. مستقیماً از هوش مصنوعی بپرسید: «با این فرض که تمام ورودی‌ها مخرب هستند، این کد را از نظر امنیتی بررسی کن.»
  5. آن‌قدر کد را بخوانید تا کامل درکش کنید. اگر نمی‌توانید عملکرد یک بخش را توضیح دهید، درباره‌اش بپرسید یا آن را مرج (merge) نکنید. این شما هستید که باید در آینده از آن نگهداری کنید.

اطلاعات حساس و کدهای محرمانه را وارد چت نکنید

هرگز API keyها، رمزهای عبور، توکن‌ها، کلیدهای خصوصی یا رشته‌های اتصال دیتابیس (connection strings) را در هیچ چت هوش مصنوعی پیست نکنید. آن‌ها را با متغیرهای فرضی مانند YOUR_API_KEY جایگزین کنید. اگر تصادفاً یک سکرت واقعی را خارج از سیستم‌های خود افشا کردید، بلافاصله آن را تغییر داده و باطل کنید (rotate).

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

پرامپت‌های مفید برای برنامه‌نویسان

این کد را برای برنامه‌نویسی توضیح بده که [زبان] را بلد است اما با این
کتابخانه کار نکرده. بخش‌به‌بخش پیش برو و هر چیزی را که خطرناک یا
قدیمی به نظر می‌رسد مشخص کن.
[کد را پیست کنید]
این تغییرات (diff) را مثل یک مهندس ارشد بررسی کن. نظراتت را در دسته‌های
باگ‌ها، امنیت، پرفورمنس و خوانایی مرتب کن. دقیق باش و خطوط مورد نظرت
را نقل‌قول کن.
[diff را پیست کنید]
یک رجکس (regular expression) بنویس که [توضیحات] را تطبیق دهد. هر بخش
را توضیح بده و ۵ رشته که باید مچ شوند و ۵ رشته که نباید مچ شوند ارائه بده.
من پایتون را خوب بلدم و دارم Rust یاد می‌گیرم. نشان بده چطور می‌توانم
[وظیفه] را در Rust انجام دهم، و مفاهیم ownership و borrowing را طوری
توضیح بده که انگار بار اول است آن‌ها را می‌بینم.

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

اشتباهات رایج

  • پیست کردن کل پروژه. متن‌های بسیار طولانی بخش‌های اصلی را پنهان می‌کنند و ممکن است از سقف پردازش چت بیشتر شوند. فقط فایل‌ها یا توابع مرتبط را بفرستید.
  • قبول کردن راه‌حلی که صورت‌مسئله را پاک می‌کند. قرار دادن همه‌چیز در یک بلوک try/except فقط پیام خطا را پنهان می‌کند، نه باگ را. بپرسید چرا این خطا رخ می‌دهد.
  • افتادن در چرخه تکرار. اگر دو یا سه تلاش ناموفق بود، دست نگه دارید و رویکرد خود را تغییر دهید: کانتکست بیشتر بدهید، نمونه کوچک‌تری بسازید یا یک چت جدید با خلاصه‌ای شفاف از مشکل باز کنید.
  • ذکر نکردن نسخه‌ها. APIهای فریم‌ورک‌ها بین نسخه‌های اصلی تغییر می‌کنند، پس نسخه‌ای را که استفاده می‌کنید مشخص کنید.
  • نادیده گرفتن لایسنس‌ها. اگر هوش مصنوعی بخش قابل‌توجهی از کد شخص دیگری را تولید کرد، قبل از استفاده لایسنس آن را بررسی کنید.

همچنین ببینید: برنامه‌نویسان چگونه از ChatG استفاده می‌کنند و راهنمای عمومی نوشتن پرامپت.

روال کاری برای حفظ کنترل روی کد

  1. ابتدا هدف را بدون کد شرح دهید. قبل از نوشتن هر کدی، دو یا سه رویکرد ممکن و مزایا و معایب هرکدام را بخواهید.
  2. یک رویکرد را انتخاب کنید و گام اول را کوچک بردارید. بررسی یک تابع یا یک فایل در هر مرحله بسیار آسان‌تر از بررسی یک فیچر کامل است.
  3. آن را اجرا کنید و نتیجه را گزارش دهید. خروجی واقعی یا متن خطا را پیست کنید، نه فقط اینکه «کار نمی‌کند».
  4. تست بخواهید و سپس بررسی مجدد کنید. پرسیدن «این کد چه سناریوهای خاصی را در نظر نگرفته است؟» معمولاً باگ بعدی را پیدا می‌کند.
  5. پیام کامیت (commit message) را خودتان بنویسید. اگر نمی‌توانید خلاصه کنید که چه چیزی و چرا تغییر کرده، هنوز آن تغییر را به اندازه کافی نفهمیده‌اید.

سوالات متداول

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

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

از چه زبان‌های برنامه‌نویسی پشتیبانی می‌کند؟

چت هوش مصنوعی معمولاً با زبان‌های پرکاربرد مانند Python، JavaScript، TypeScript، Java، C#، C++، Go، PHP، SQL و شل اسکریپت به‌خوبی کار می‌کند، و در زبان‌های کم‌کاربردتر دقت کمتری دارد. کیفیت پاسخ‌ها برای کتابخانه‌ها و نسخه‌های بسیار جدید نیز کاهش می‌یابد.

آیا ChatG می‌تواند کدم را اجرا کند یا ریپازیتوری من را ببیند؟

خیر. ChatG یک محیط چت است: فقط چیزهایی را که در آن پیست می‌کنید می‌بیند و کدی را اجرا نمی‌کند. همه‌چیز را در محیط خودتان اجرا و تست کنید.

آیا استفاده تجاری از کدهای تولیدشده توسط هوش مصنوعی مجاز و امن است؟

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

همه‌چیز برای شروع آماده است

چت را باز کنید و اولین سؤالتان را بپرسید. رایگان است و نیازی به نصب هیچ برنامه‌ای نیست.

شروع گفتگو