چگونه از هوش مصنوعی برای تحویل کد استفاده میکنم
از تلاش برای نوشتن پرامپتهای هوشمندانه دست بردارید. مهندسی کانتکست را شروع کنید.
اکثر مردم از هوش مصنوعی به روش اشتباه استفاده میکنند. آنها در یک جمله درخواست یک ویژگی (feature) میکنند. هوش مصنوعی کدی برمیگرداند که از کتابخانههای اشتباه استفاده میکند، قراردادهای نامگذاری شما را نقض میکند و باگهای قدیمی را دوباره بازمیگرداند. شما کل بعدازظهر خود را صرف اصلاح این آشفتگی میکنید.
هوش مصنوعی بدون کانتکست، مانند یک توسعهدهنده جونیور (junior developer) است که هرگز کدبیس شما را نخوانده است. او همه چیز را از دیروز فراموش میکند. شما یک نیروی جدید را با یک تیکت تکخطی نمیسپرید و انتظار کد بینقص از او ندارید؛ بلکه به او یک سند آشناسازی (onboarding document) میدهید.
من در مخزن (repo) خود از یک فایل حافظه پروژه استفاده میکنم. این فایل مانند یک سند آشناسازی عمل میکند که هوش مصنوعی هر بار آن را میخواند. این فایل شامل قوانین خاص پروژه است که یک فرد غریبه از آنها آگاه نیست:
• موارد غیرقابل مذاکره: ظاهر URLها و نحوه مطابقت اسلاگها (slugs) با محیط تولید (production). • قوانین منطقی: استخراج مقادیر از تنظیمات (configs) به جای استفاده از اعداد ثابت (hardcoding). • موارد خاص (Edge cases): تنظیمات خاص CDN یا مسیرهای فایل که از خرابیهای بیصدا جلوگیری میکنند.
هر اشتباهی که مرتکب میشوم، به یک خط در این فایل تبدیل میشود. این کار فایل را به یک دارایی انباشته (compounding asset) تبدیل میکند. کیفیت خروجی هوش مصنوعی با گذشت زمان بهبود مییابد، زیرا دیگر مجبور نیستم حرفهایم را تکرار کنم.
گردش کار من از این مراحل پیروی میکند:
- بوتاسترپ کردن کانتکست: از هوش مصنوعی بخواهید فایل حافظه را بر اساس کد شما پیشنویس کند، سپس خودتان آن را ویرایش کنید.
- بازگویی وظیفه: قبل از اینکه هوش مصنوعی کد بنویسد، از او بخواهید هدف را خلاصه کند. این کار خطاها را زودتر شناسایی میکند.
- بهبود پرامپت: از هوش مصنوعی بپرسید که چه چیزی در درخواست شما مبهم است.
از هوش مصنوعی برای این وظایف استفاده کنید:
- نوشتن کدهای تکراری (boilerplate) و ساختار اولیه (scaffolding).
- بازنویسی کد (refactor) با پیروی از الگوها.
- توضیح کدهای ناآشنا.
- بررسیهای مکانیکی در سراسر یک مخزن.
- نوشتن تستها و فیکسچرها (fixtures).
از استفاده از هوش مصنوعی برای این وظایف خودداری کنید:
- اتخاذ تصمیمات معماری نوآورانه.
- تصمیمگیریهای مربوط به سلیقه یا محصول.
- هر چیزی که اشتباه در آن هزینهبر باشد.
- طراحیهای حساس از نظر امنیتی.
- بررسی نهایی قبل از تحویل (shipping).
انضباط کار ساده است:
- وظایف را کوچک تعریف کنید. نگویید «این ویژگی را بساز»، بگویید «این تغییر خاص را انجام بده».
- کانتکست را از ابتدا ارائه دهید.
- هر خروجی را تأیید کنید. بیلد (build) را اجرا کنید و تغییرات (diff) را بخوانید.
- آن را مانند یک Pull Request از یک توسعهدهنده جونیور بررسی کنید. هرگز کدی را بدون خواندن توسط انسان کامیت (commit) نکنید.
- درسهای آموختهشده را به فایل کانتکست خود بازگردانید.
اهرم اصلی در پرامپت نیست؛ اهرم اصلی در کانتکستی است که حفظ میکنید.
Optional learning community: https://t.me/GyaanSetuAi
