اگر تا به حال برای اصلاح یا توسعه یک کد از Chat GPT کمک گرفته باشید، احتمالا با یک اتفاق آشنا روبرو شده اید: کدی که قرار بود فقط یک بخش کوچک از آن تغییر کند، در نهایت با تغییر ساختار، حذف بعضی قابلیت ها یا به وجود آمدن چند خطای جدید تحویل داده می شود. این اتفاق لزوما به این معنی نیست که Chat GPT نمی تواند کدنویسی کند؛ بخش زیادی از این مشکل به نحوه تعریف مسئله و نوع تعامل ما با مدل برمی گردد. مخصوصا زمانی که قرار است یک ابزار اختصاصی یا یک سیستم اتوماسیون روی کد موجود ساخته شود، کوچک ترین ابهام در درخواست می تواند باعث شود مدل بخشی از ساختار قبلی را به شکلی متفاوت بازسازی کند.

۱. درخواست مبهم؛ وقتی نمی گوییم دقیقا چه چیزی باید تغییر کند
یکی از رایج ترین دلایلی که Chat GPT کد را خراب می کند، درخواست های کلی هستند.
مثلا به جای اینکه بگوییم:
«در همین کد، فقط رنگ دکمه را به #EC1C24 تغییر بده و هیچ بخش دیگری را تغییر نده.»
می گوییم:
«این کد را بهتر کن و ظاهرش را جذاب تر کن.»
در درخواست دوم، مرز مشخصی برای تغییر وجود ندارد. مدل باید خودش تصمیم بگیرد چه چیزی بهتر است؛ ممکن است CSS را بازنویسی کند، ساختار HTML را تغییر دهد، کلاس ها را جابه جا کند یا حتی بخشی از JavaScript را که به نظرش اضافی است حذف کند.
راه حل: همیشه محدوده تغییر را مشخص کنید. بگویید چه چیزی باید تغییر کند، چه چیزی نباید تغییر کند و خروجی دقیقا باید چه رفتاری داشته باشد.
۲. کلی گویی باعث می شود ChatGPT جای خالی تصمیم های شما را پر کند
مدل زمانی که با اطلاعات ناقص روبرو می شود، سعی می کند جاهای خالی را خودش پر کند.
عبارت هایی مثل:
- «ریسپانسیوش کن»
- «کد را حرفه ای تر کن»
- «این قسمت را بهتر کن»
- «سرعتش را بالا ببر»
- «UI را مدرن کن»
- «کد را بهینه کن»
به تنهایی دستورهای دقیقی نیستند.
برای یک انسان برنامه نویس، «ریسپانسیو کردن» ممکن است به معنای اصلاح چند breakpoint باشد؛ اما برای Chat GPT ممکن است بازطراحی بخش هایی از ساختار صفحه، تغییر اندازه فونت ها، تغییر Grid یا Flexbox و حتی بازنویسی CSS باشد.
هرچه تصمیم های بیشتری را به مدل واگذار کنید، احتمال اینکه نتیجه با چیزی که در ذهن شما بوده فاصله بگیرد بیشتر می شود.
راه حل: به جای تعریف نتیجه با یک کلمه، معیار نتیجه را توضیح دهید.
مثلا:
«در موبایل فقط چیدمان کارت ها از سه ستون به یک ستون تبدیل شود. اندازه فونت، رنگ ها، فاصله ها و ساختار HTML تغییر نکند.»
اینجا دیگر مدل مجبور نیست حدس بزند «ریسپانسیو» دقیقا یعنی چه.
۳. Regression؛ وقتی اصلاح یک قسمت، قسمت سالم دیگری را خراب می کند
یکی از مهم ترین مشکلات هنگام کار با Chat GPT، Regression است.
Regression یعنی تغییری که برای اضافه کردن یک قابلیت یا اصلاح یک مشکل انجام شده، باعث خراب شدن قابلیتی شود که قبلا درست کار می کرده است.
فرض کنید یک صفحه دارید که:
- انیمیشن آن درست کار می کند
- نسخه موبایل آن درست است
- دکمه ها به JavaScript متصل هستند
- ساختار HTML مشخصی دارد
از Chat GPT می خواهید فقط یک بخش از ظاهر کارت ها را تغییر دهد.
مدل ممکن است برای انجام این کار CSS را بازنویسی کند و در این فرآیند، selector دیگری را تغییر دهد که انیمیشن یا نسخه موبایل به آن وابسته بوده است.
نتیجه این می شود که:
مشکل اول حل شده، اما یک مشکل جدید ایجاد شده است.
این یکی از مهم ترین دلایلی است که نباید بعد از هر تغییر فقط بررسی کنید «چیزی که خواستم درست شد یا نه».
باید بررسی کنید:
«چیزهایی که قبل از این تغییر درست بودند، هنوز درست هستند؟»
راه حل: در درخواست خود صراحتا بنویسید:
«این تغییر نباید روی سایر بخش های کد، رفتار JavaScript، انیمیشن ها، نسخه موبایل یا ساختار فعلی تاثیر بگذارد.»
و بعد از هر تغییر، قابلیت های قبلی را دوباره تست کنید.

۴. Chat GPT همیشه کل معماری پروژه را در ذهن ندارد
وقتی یک پروژه بزرگ دارید، معمولا کد فقط همان چیزی نیست که در یک پیام برای Chat GPT فرستاده اید.
ممکن است یک فایل CSS به HTML دیگری وابسته باشد، یک کلاس توسط JavaScript استفاده شود یا یک component در چند صفحه مختلف استفاده شده باشد.
اگر فقط یک قطعه از کد را به مدل بدهید، Chat GPT ممکن است نداند که این قطعه در جای دیگری هم استفاده شده است.
در نتیجه چیزی که از نظر خودش یک تغییر ساده است، می تواند در پروژه اصلی اثر زنجیره ای ایجاد کند.
برای مثال اگر بگویید:
«این کلاس را حذف کن، استفاده نمی شود.»
مدل فقط بر اساس کدی که دیده تصمیم می گیرد. اگر همان کلاس در فایل دیگری استفاده شده باشد، حذف آن می تواند بخشی از سایت را خراب کند.
راه حل: وابستگی های مهم را به مدل بگویید. مثلا:
«این کلاس در چند کامپوننت دیگر هم استفاده شده، بنابراین نام کلاس را تغییر نده.»
یا:
«این تابع توسط چند بخش دیگر صدا زده می شود؛ فقط منطق داخلی آن را اصلاح کن.»
۵. بازنویسی کامل کد به جای اصلاح کد موجود
یکی از بدترین عادت ها هنگام استفاده از Chat GPT این است که برای یک تغییر کوچک، کل کد را دوباره تولید کنیم.
مثلا شما ۵۰۰ خط کد دارید و فقط می خواهید یک دکمه تغییر کند.
اگر از مدل بخواهید:
«کد کامل اصلاح شده را بده.»
ممکن است Chat GPT کل ۵۰۰ خط را از ابتدا تولید کند.
در این حالت احتمال تغییر ناخواسته بسیار بیشتر می شود.
ممکن است:
- یک کلاس حذف شود
- یک attribute تغییر کند
- ترتیب عناصر عوض شود
- یک event listener فراموش شود
- بخشی از CSS از بین برود
- نام یک متغیر تغییر کند
- یک dependency جا بیفتد
به همین دلیل در پروژه های واقعی، کمترین تغییر ممکن معمولا امن ترین تغییر است.
به جای بازسازی کل کد، بگویید:
«فقط بخش مربوط به این component را اصلاح کن و سایر قسمت ها را دست نزن.»
۶. از بین رفتن Context؛ وقتی Chat GPT نمی داند نسخه قبلی چه بوده
یکی دیگر از مشکلات زمانی اتفاق می افتد که کد در چند پیام متوالی تغییر می کند.
مثلا:
«این قسمت را اصلاح کن.»
بعد:
«حالا موبایلش را درست کن.»
بعد:
«انیمیشن هم اضافه کن.»
بعد:
«این مشکل را هم حل کن.»
در هر مرحله، مدل باید نسخه فعلی کد را مبنا قرار دهد. اگر نسخه کامل یا تغییرات قبلی به درستی در اختیارش نباشد، احتمال دارد بر اساس برداشت ناقص از نسخه قبلی تصمیم بگیرد.
این همان جایی است که جمله معروف زیر اتفاق می افتد:
«ولی من فقط گفتم یک چیز کوچک را تغییر بده!»
برای جلوگیری از این اتفاق، بهتر است در پروژه های بزرگ یک نسخه مرجع از کد داشته باشید و تغییرات را مرحله به مرحله روی همان ساختار کنترل کنید.
۷. مدل گاهی چیزی را که «اضافی» تشخیص می دهد، حذف می کند
Chat GPT در زمان بهینه سازی کد ممکن است بخش هایی را غیرضروری تشخیص دهد.
اما چیزی که از نگاه مدل اضافی به نظر می رسد، ممکن است در پروژه شما عمدا وجود داشته باشد.
مثلا:
- یک کلاس CSS
- یک wrapper در HTML
- یک متغیر JavaScript
- یک attribute
- یک event
- یک فاصله یا ساختار خاص در DOM
ممکن است در ظاهر کاربردی نداشته باشد، اما بخش دیگری از سیستم به آن وابسته باشد.
به همین دلیل درخواست هایی مثل:
«کد را تمیز کن و چیزهای اضافی را حذف کن.»
ریسک بالایی دارند.
اگر واقعا نیاز به Clean Up دارید، بهتر است مشخص کنید چه چیزهایی اجازه حذف دارند و چه چیزهایی نباید تغییر کنند.

۸. تغییر همزمان چند چیز؛ دشمن کنترل تغییرات
اگر در یک درخواست همزمان بخواهید:
- UI تغییر کند
- کد بهینه شود
- ریسپانسیو شود
- انیمیشن اضافه شود
- سرعت افزایش پیدا کند
- ساختار HTML تغییر کند
دیگر تشخیص اینکه کدام تغییر باعث ایجاد مشکل شده دشوار می شود.
فرض کنید بعد از این درخواست یک دکمه کار نمی کند.
مشکل از CSS است؟ JavaScript است؟ HTML تغییر کرده؟ یک selector حذف شده؟ یا تغییر ساختار DOM باعث مشکل شده؟
وقتی چند متغیر را همزمان تغییر می دهید، پیدا کردن علت اصلی سخت تر می شود.
راه حل: تغییرات را مرحله ای انجام دهید.
ابتدا ساختار را اصلاح کنید، تست کنید.
بعد CSS را تغییر دهید، تست کنید.
بعد JavaScript را تغییر دهید، تست کنید.
این کار شاید در ابتدا زمان بیشتری بگیرد، اما از ساعت ها Debug کردن جلوگیری می کند.
۹. فرض کردن به جای پرسیدن
Chat GPT دوست دارد پاسخ بدهد؛ حتی زمانی که اطلاعات کافی ندارد.
اگر بگویید:
«این API را به سایت وصل کن.»
اما مشخص نکنید API چه endpoint هایی دارد، چه authenticationای استفاده می کند و چه داده ای باید ارسال یا دریافت شود، مدل ممکن است بخشی از این اطلاعات را فرض کند.
کد ممکن است ظاهرا کاملا منطقی باشد، اما با سیستم واقعی شما سازگار نباشد.
در چنین شرایطی بهتر است اجازه بدهید مدل قبل از نوشتن کد سوال های لازم را بپرسد.
مثلا:
«اگر برای پیاده سازی این قابلیت اطلاعاتی کم است، قبل از تغییر کد سوال های لازم را از من بپرس و حدس نزن.»
این یک جمله ساده است، اما می تواند جلوی مقدار زیادی کدنویسی اشتباه را بگیرد.
۱۰. درخواست نکردن برای حفظ ساختار فعلی
یکی از مهم ترین جملاتی که در کار با Chat GPT باید یاد بگیرید این است:
«ساختار فعلی را حفظ کن و فقط تغییر موردنظر را اعمال کن.»
اگر حفظ ساختار برایتان مهم است، آن را صریح بگویید.
حتی بهتر است مشخص کنید:
«HTML فعلی حفظ شود، نام کلاس ها تغییر نکند، JavaScript موجود دست نخورده بماند و فقط CSS مربوط به این بخش اصلاح شود.»
هرچه مرز تغییر مشخص تر باشد، احتمال خروجی ناخواسته کمتر می شود.

۱۱. کد بدون تست؛ وقتی خروجی Chat GPT را نهایی فرض می کنیم
حتی اگر Chat GPT کدی تولید کند که کاملا منطقی به نظر برسد، هنوز باید آن را تست کرد.
کدنویسی فقط تولید کد نیست؛ بخشی از آن بررسی رفتار واقعی کد است.
ممکن است یک کد:
- روی دسکتاپ درست باشد اما روی موبایل خراب شود
- در Chrome درست کار کند اما در Safari مشکل داشته باشد
- در حالت عادی درست باشد اما با داده واقعی خطا بدهد
- در یک صفحه کار کند اما در صفحه دیگری conflict ایجاد کند
بنابراین بعد از هر تغییر، فقط ظاهر کد را بررسی نکنید؛ رفتار آن را تست کنید.
۱۲. کپی کردن خطای قبلی و ساختن یک زنجیره از اصلاحات اشتباه
گاهی یک خطای کوچک در نسخه اول ایجاد می شود. بعد شما همان کد اشتباه را دوباره به Chat GPT می دهید و می گویید:
«این مشکل را حل کن.»
مدل مشکل جدید را روی پایه ای حل می کند که خودش ممکن است قبلا خراب شده باشد.
بعد مشکل دیگری ایجاد می شود و دوباره آن را اصلاح می کنید.
بعد از چند مرحله، دیگر مشخص نیست کدام قسمت از کد نسخه اصلی بوده و کدام قسمت حاصل اصلاحات بعدی است.
این همان جایی است که پروژه وارد یک چرخه خطرناک می شود:
کد اولیه → تغییر → خطا → اصلاح → خطای جدید → اصلاح دوباره → فاصله گرفتن از ساختار اصلی
برای جلوگیری از این چرخه، قبل از تغییرات مهم یک نسخه سالم از کد نگه دارید و اگر تغییرات زیادی باعث بی ثباتی شد، به آخرین نسخه سالم برگردید.
پس مشکل از Chat GPT است یا نحوه استفاده از آن؟
واقعیت این است که معمولا هر دو عامل می توانند نقش داشته باشند.
Chat GPT یک برنامه نویس انسانی نیست که تمام معماری پروژه، تاریخچه تصمیمات، وابستگی های پنهان و محدودیت های محصول را به صورت کامل بداند. از طرف دیگر، اگر درخواست ما مبهم باشد و اطلاعات کافی درباره ساختار پروژه ندهیم، عملا بخشی از تصمیمات فنی را به حدس مدل واگذار کرده ایم.
بنابراین استفاده حرفه ای از Chat GPT در برنامه نویسی بیشتر از اینکه فقط به «پرامپت خوب» وابسته باشد، به مدیریت درست Context، تعریف محدوده تغییر، کنترل نسخه و تست مرحله ای وابسته است.
یک پرامپت ساده برای جلوگیری از خراب شدن کد
برای تغییرات حساس می توانید از چنین ساختاری استفاده کنید:
«کد زیر نسخه فعلی و سالم پروژه است. فقط تغییر مشخص شده را اعمال کن. ساختار HTML، نام کلاس ها، JavaScript، APIها، انیمیشن ها و قابلیت های موجود را حفظ کن. هیچ بخش دیگری را بازنویسی نکن. اگر برای انجام تغییر نیاز به تغییر بخش دیگری از کد داری، ابتدا دلیل آن را توضیح بده و حدس نزن. در نهایت فقط قسمت های تغییرکرده را مشخص کن و بررسی کن که تغییر جدید باعث Regression در قابلیت های قبلی نشده باشد.»
این نوع درخواست به جای اینکه فقط بگوید «چه چیزی بساز»، به مدل می گوید «چطور بدون خراب کردن چیزی که از قبل ساخته شده، آن را تغییر بده».
ساخت ابزار با Chat GPT فقط کدنویسی نیست
وقتی قرار است یک ابزار اختصاصی، سیستم اتوماسیون یا یک قابلیت اختصاصی برای کسب و کار ساخته شود، صرفا تولید چند خط کد با Chat GPT کافی نیست.
در کلیدی، ساخت ابزارها و اتوماسیون ها را با تکیه بر دانش فنی کدنویسی، معماری نرم افزار و پرامت نویسی انجام می دهیم. هدف فقط این نیست که AI برای شما کد تولید کند؛ بلکه باید بتواند در چارچوب درست، نیاز کسب و کار را به یک راهکار فنی قابل اجرا تبدیل کند.
ما در کلیدی می دانیم که استفاده از AI زمانی ارزشمند است که درست هدایت شود، کد آن کنترل شود و خروجی نهایی با ساختار و نیاز واقعی پروژه هماهنگ باشد.
به همین دلیل، بین «گرفتن کد از Chat GPT» و «ساخت یک ابزار حرفه ای با کمک AI» تفاوت زیادی وجود دارد.