در دنیای مهندسی نرمافزار، ما از منطق قطعی (Deterministic Logic) به سمتی حرکت کردهایم که در آن کدها توسط انسان نوشته و درک میشدند. اما با ظهور ایجنتهای هوش مصنوعی (AI Agents)، ما از مدلهای پیشبین به مدلهایی رسیدهایم که مستقیماً اقدام میکنند. این تغییر، یک چالش جدی در حوزه امنیت و حاکمیت داده ایجاد کرده است.
توهم صلاحیت و حلقه تایید چرخشی
امروزه شاهد هستیم که افراد غیرمتخصص در حوزههای فنی، با استفاده از مدلهای زبانی بزرگ (LLM)، سیستمهای پیچیدهای را طراحی میکنند. در این حالت، مدل در نقش معمار قرار میگیرد و انسان تنها به یک محیط اجرا (Runtime Environment) تبدیل میشود که دستورات مدل را تایپ میکند. خطر اصلی زمانی رخ میدهد که یک ایجنت برای نوشتن کد، نوشتن تستهای واحد (Unit Tests) و مستندسازی منطق برنامه به کار گرفته شود.
این وضعیت منجر به ایجاد یک حلقه تایید چرخشی (Circular Validation) میشود؛ جایی که AI کد را مینویسد و سپس خودش آن را تایید و توضیح میدهد. در صنایع حساس مانند مالی یا بهداشت و درمان، دانستن اینکه کد «چه کاری انجام میدهد» کافی نیست، بلکه باید دانست «چرا این انتخاب معماری درست است» (Intent).
ستونهای مهندسی مبتنی بر شواهد
برای بازپسگیری کنترل و جلوگیری از شکستهای غیرمنتظره (مانند سوگیریهای پنهان در Pipeline دادهها)، باید از رویکرد «تولید» به سمت «توجیه» حرکت کنیم. سه رکن اساسی برای این تغییر عبارتند از:
- تقاضای شواهد (Evidence Demand): کد کارآمد به تنهایی کافی نیست. ایجنتها باید موظف باشند برای تصمیمات معماری خود، لینکهای معتبر، مستندات رسمی یا ارجاعات به Wiki داخلی سازمان را ارائه دهند.
- تسلط به جای اتکا (Mastery over Reliance): هدف از استفاده از AI باید یادگیری و تسلط باشد. اگر مهندس از توضیح AI برای درک عمیق یک Bug استفاده نکند و صرفاً کد را کپی کند، در واقع مهندسی نمیکند بلکه در حال Copy-Paste است.
- بازگشت به فرهنگ تایید نهایی (Sign-off Culture): هر مهندسی که کدی تولید شده توسط LLM را Commit میکند، باید مسئولیت کامل هر خط از آن و تمامی Edge Caseها را بپذیرد.
تغییر پارادایم در تعامل با AI
عبارت «هوش مصنوعی دچار توهم (Hallucination) شد» نباید به عنوان یک علت ریشهای (Root Cause) برای قطعی سیستمها پذیرفته شود. علت ریشهای همیشه «عدم تایید مهندس» است. برای بهرهوری ایمن، باید از Promptهای آموزشی استفاده کرد؛ به جای درخواست «این کد را بنویس»، باید پرسید: «یک راهکار پیشنهاد بده، الگوهای طراحی (Design Patterns) مورد استفاده را ذکر کن و مزایا و معایب آن را نسبت به جایگزینهای دیگر توضیح بده».