کورکورانه به هوش مصنوعی اعتماد نکنید: چگونه توهمات عامل‌های هوش مصنوعی را کاهش دهیم

عامل‌های هوش مصنوعی (AI agents) اغلب مرتکب اشتباه می‌شوند. آن‌ها کدها را توهم‌آمیز می‌سازند، قوانین کسب‌وکار را نقض می‌کنند یا ابزارهای اشتباهی را انتخاب می‌کنند.

بیشتر مردم سعی می‌کنند این مشکل را با پرامپت‌های بهتر حل کنند. این یک اشتباه است.

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

تایپیست در مقابل معمار

بیشتر کاربران مانند تایپیست‌ها عمل می‌کنند:

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

مهندسان مانند معماران عمل می‌کنند:

  • شما ابتدا ساختار و کتابخانه‌ها را تعریف می‌کنید.
  • شما محدودیت‌ها و قوانین را تعیین می‌کنید.
  • هوش مصنوعی فقط کدی را می‌نویسد که در چارچوب تعیین‌شده توسط شما باشد.

هوش مصنوعی به دلیل نداشتن مهارت کدنویسی دچار توهم نمی‌شود؛ بلکه به این دلیل توهم می‌زند که سعی می‌کند زمینه‌ای (context) را که در ذهن دارید اما هرگز آن را به اشتراک نگذاشته‌اید، حدس بزند.

استراتژی ۱: فایل‌های زمینه (Context Files)

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

CLAUDE.md برای Claude Code • AGENTS.md برای اکوسیستم‌های متن‌باز • .cursorrules برای Cursor • .copilotrules برای GitHub Copilot

نکته حرفه‌ای: یک فایل مرکزی AGENTS.md ایجاد کنید و از symlinkها استفاده کنید تا تمام فایل‌های دیگر به‌طور خودکار به‌روزرسانی شوند.

استراتژی ۲: ADR (سوابق تصمیمات معماری)

قبل از اینکه از یک عامل بخواهید چیزی بسازد، یک ADR ایجاد کنید. این سند نیاز هوش مصنوعی به «حدس زدن» را از بین می‌برد.

یک ADR خوب شامل موارد زیر است:

  • دقیقاً چه چیزی ساخته شود.
  • کدام فایل‌ها ساخته شوند و به کدام فایل‌ها هرگز نباید دست زد.
  • پشته تکنولوژی (tech stack) و کتابخانه‌های خاصی که باید استفاده شوند.
  • محدودیت‌های صریح (مثلاً "بدون ذخیره وضعیت در حافظه").
  • فهرستی از مواردی که عامل اجازه تصمیم‌گیری درباره آن‌ها را ندارد.

وقتی یک Orchestrator یک ADR دریافت می‌کند، تصمیمات طراحی از قبل نهایی شده‌اند. عامل Developer صرفاً مشخصات (spec) را به کد تبدیل می‌کند. این کار خطاها را کاهش داده و ثبات کد شما را حفظ می‌کند.

من در حال شروع مجموعه‌ای درباره ساخت جریان‌های کاری (workflows) قابل‌اعتماد برای عامل‌های هوش مصنوعی هستم. در بخش‌های بعدی، به ترکیب پرامپت‌های سیستم (system prompt composition) و تکنیک‌های مهندسی پیشرفته خواهم پرداخت.

منبع: https://dev.to/devjohanadrian/el-problema-de-la-confianza-ciega-como-reducir-las-alucinaciones-en-agentes-de-ia-parte-1-2aah