Danial.bakhtiari
هوش مصنوعی در توسعه

معماری AI Agents در برنامه‌های وب؛ توسعه با Cursor و GitHub Copilot

Galia Darabidian11 دقیقه مطالعهبازدید: ۵
ai-agents

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

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

همین ویژگی باعث شده است Agentها به‌تدریج وارد فرایند واقعی توسعه نرم‌افزار شده‌اند. ابزارهایی مانند Cursor و GitHub Copilot نیز قابلیت‌های Agentic را در اختیار توسعه‌دهندگان قرار می‌دهند.

در ادامه ابتدا با مفهوم AI Agent و تفاوت آن با LLM و Chatbot آشنا می‌شویم و سپس کاربرد آن را در توسعه وب و ابزارهایی مانند Cursor و GitHub Copilot بررسی می‌کنیم.

AI Agent دقیقاً چیست؟

AI Agent سیستمی است که برای رسیدن به یک هدف مشخص، وضعیت را بررسی می‌کند، اقدامات لازم را انجام می‌دهد و نتیجه را ارزیابی می‌کند.

به‌طور ساده، فرایند یک Agent می‌تواند شامل این مراحل باشد:

  1. دریافت هدف یا وظیفه
  2. بررسی اطلاعات و شرایط موجود
  3. برنامه‌ریزی برای انجام کار
  4. استفاده از ابزارهای موردنیاز
  5. بررسی نتیجه
  6. اصلاح اقدامات در صورت نیاز

بنابراین می‌توان عملکرد Agent را یک حلقه تصمیم‌گیری در نظر گرفت:

Goal → Analysis → Action → Observation → Next Action

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

بنابراین، Agent صرفاً «مدلی برای تولید متن» نیست؛ بلکه سیستمی است که می‌تواند یک وظیفه را دنبال کند و بر اساس نتیجه هر مرحله، اقدام بعدی را مشخص کند.

اجزای اصلی معماری یک AI Agent

برای درک بهتر معماری Agent، می‌توان آن را از چند بخش اصلی تشکیل‌شده در نظر گرفت:

  1. LLM: بخش اصلی تحلیل و تولید پاسخ یا تصمیم.
  2. Instructions / Prompt: مشخص می‌کند Agent چه هدف و محدودیت‌هایی دارد.
  3. Tools: امکان انجام کارهایی خارج از خود مدل را فراهم می‌کنند؛ مانند فراخوانی API، خواندن فایل، جست‌وجو در دیتابیس یا اجرای تست.
  4. Memory / State: اطلاعات و وضعیت موردنیاز برای ادامه یک وظیفه یا حفظ Context را نگه می‌دارد.
  5. Environment: سیستم‌ها و منابعی که Agent با آن‌ها تعامل دارد؛ مانند فایل‌های پروژه، APIها یا پایگاه‌های داده.

در نتیجه، می‌توان معماری ساده Agent را به شکل زیر تصور کرد:

Goal → LLM → Plan → Tools / Environment → Observation → Next Action

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

تفاوت AI Agent با LLM و Chatbot

این سه مفهوم به هم مرتبط هستند، اما نقش یکسانی ندارند.

LLM؛ موتور هوش مصنوعی

LLM (Large Language Model) یا مدل زبانی بزرگ، یک مدل هوش مصنوعی است که با دریافت ورودی شامل Prompt و Context، خروجی تولید می‌کند. مدل‌هایی مانند GPT می‌توانند متن را تحلیل کنند، به سؤال‌ها پاسخ دهند، محتوا تولید کنند و یا در نوشتن و توضیح کد کمک کنند.

به زبان ساده، می‌توان LLM را موتور پردازش زبان در نظر گرفت.

Chatbot؛ رابط گفت‌وگو

Chatbot محیطی برای تعامل با کاربر است. کاربر سؤال یا درخواست خود را وارد می‌کند و سیستم پاسخ مناسب را ارائه می‌دهد.

یک Chatbot می‌تواند از LLM استفاده کند، اما لزوماً یک Agent نیست.

AI Agent؛ انجام‌دهنده کار

Agent یک مرحله جلوتر می‌رود. به‌جای اینکه فقط پاسخ دهد، می‌تواند برای رسیدن به یک هدف، چند اقدام را انجام دهد و نتیجه آن‌ها را بررسی کند.

برای درک بهتر تفاوت این سه مفهوم، فرض کنید می‌خواهید یک صفحه Login برای سایت خود بسازید:

  • LLM: به آن می‌گویید «کد HTML و CSS یک صفحه Login بنویس.» → کد را برای شما تولید می‌کند.
  • Chatbot: همان درخواست را در یک محیط چت مطرح می‌کنید و می‌توانید درباره کد سؤال بپرسید؛ مثلاً «چطور دکمه را وسط صفحه قرار بدهم؟» → راهنمایی‌تان می‌کند.
  • AI Agent: می‌گویید «یک صفحه Login کامل برای پروژه‌ام بساز.» → در صورت داشتن دسترسی و ابزارهای لازم، فایل‌های پروژه را بررسی می‌کند، فایل‌های موردنیاز را ایجاد یا ویرایش می‌کند، تست‌ها را اجرا می‌کند و در صورت وجود مشکل، آن را اصلاح می‌کند.

پس در یک جمله:

LLM برای تحلیل و تولید محتوا استفاده می‌شود، Chatbot امکان تعامل و گفت‌وگو را فراهم می‌کند و AI Agent برای انجام یک وظیفه و رسیدن به هدف، مجموعه‌ای از اقدامات را مدیریت می‌کند.

استفاده از AI Agent در توسعه وب

حالا که با ساختار و نحوه عملکرد AI Agent آشنا شدیم، سؤال مهم این است که چه زمانی استفاده از Agent در فرایند توسعه وب واقعاً مفید است؟

AI Agentها بیشتر در کارهایی مفید هستند که چند مرحله دارند یا انجام آن‌ها زمان‌بر و تکراری است.

برای مثال می‌توان از Agent برای موارد زیر استفاده کرد:

  1. تولید و اصلاح کد
  2. Debugging
  3. تست‌نویسی
  4. Code Review
  5. مستندسازی
  6. بررسی چند فایل و ایجاد تغییرات مرتبط

با این حال، بهتر است توسعه‌دهنده از ابتدا تمام پروژه را به Agent نسپارد. شروع با وظایف مشخص و قابل بررسی، کنترل بیشتری روی نتیجه ایجاد می‌کند.

در این میان، نحوه تعامل توسعه‌دهنده با Agent نقش مهمی در کیفیت نتیجه دارد. هرچه هدف، Context و محدودیت‌های پروژه واضح‌تر و دقیق‌تر بیان شوند، Agent می‌تواند وظیفه را بهتر درک کرده و خروجی قابل‌اعتماد‌تری ارائه دهد.

به همین دلیل، Prompt Engineering برای توسعه‌دهندگانی که می‌خواهند از مدل‌های هوش مصنوعی به شکل مؤثرتری در فرایند برنامه‌نویسی استفاده کنند، اهمیت زیادی دارد؛ در ادامه، با مهم‌ترین تکنیک‌ها و کاربردهای آن آشنا می‌شویم.

Prompt Engineering برای توسعه‌دهندگان

نحوه بیان درخواست به AI می‌تواند تأثیر زیادی روی نتیجه داشته باشد. Prompt Engineering به فرایند طراحی و تنظیم دستورهایی گفته می‌شود که به LLM یا AI Agent کمک می‌کنند هدف و نیاز ما را بهتر درک کنند.

چرا؟ چون هرچه درخواست دقیق‌تر باشد، احتمال دریافت نتیجه مناسب بیشتر می‌شود. به‌خصوص برای توسعه‌دهندگان، این موضوع اهمیت بیشتری دارد؛ زیرا یک Prompt دقیق می‌تواند باعث شود Agent تغییرات موردنظر را بهتر درک کند و نیاز به اصلاح دستی کمتری داشته باشد.

برای مثال، به‌جای اینکه فقط بگوییم:

«این کد را درست کن.»

بهتر است بگوییم:

«فایل login.js را بررسی کن، خطای اعتبارسنجی فرم را پیدا و اصلاح کن. ساختار فعلی پروژه را تغییر نده و در پایان تغییرات را توضیح بده.»

در درخواست دوم، هدف و محدودیت‌ها مشخص‌تر هستند و Agent اطلاعات بیشتری برای انجام کار دارد.

تکنیک‌های رایج Prompt Engineering

بسته به نوع وظیفه، می‌توان از تکنیک‌های مختلفی استفاده کرد.

Zero-shot Prompting

زمانی استفاده می‌شود که بدون ارائه نمونه، مستقیماً وظیفه را مشخص می‌کنیم:

«یک تابع JavaScript برای اعتبارسنجی ایمیل بنویس.»

Few-shot Prompting

زمانی کاربرد دارد که چند نمونه در اختیار مدل قرار می‌دهیم تا نتیجه موردنظر را بهتر درک کند:

«برای این ورودی‌ها، خروجی باید به شکل زیر باشد:

user@example.com → معتبر

user@ → نامعتبر

حالا تابعی بنویس که همین الگو را پیاده‌سازی کند.»

Chain-of-Thought

در وظایف پیچیده‌تر نیز می‌توان مسئله را به چند مرحله تقسیم کرد. برای مثال:

«ابتدا علت خطای Login را پیدا کن، سپس فایل‌های مرتبط را بررسی کن، تغییر لازم را اعمال کن و در پایان نتیجه را تست کن.»

این نوع ساختار به Agent کمک می‌کند یک وظیفه پیچیده را به مراحل مشخص‌تری تقسیم کند.

در نهایت، Prompt Engineering یک فرایند یک‌باره نیست و می‌توان با بررسی خروجی، درخواست را اصلاح و دوباره اجرا کرد.

البته Prompt تنها راه تأمین اطلاعات برای Agent نیست. اگر Agent به اطلاعاتی خارج از مدل، مانند مستندات یا داده‌های اختصاصی پروژه، نیاز داشته باشد، روش‌هایی مانند RAG می‌توانند اطلاعات مرتبط را در اختیار آن قرار دهند؛ موضوعی که در مقاله بعدی به‌صورت عملی بررسی می‌کنیم.

Cursor چیست و چه نقشی در توسعه دارد؟

Cursor یک محیط توسعه کد (IDE) است که قابلیت‌های هوش مصنوعی را وارد فرایند برنامه‌نویسی می‌کند.

توسعه‌دهنده می‌تواند از Cursor برای نوشتن و تکمیل کد، اصلاح خطاها، بررسی فایل‌ها و ایجاد تغییرات در پروژه استفاده کند.

یکی از قابلیت‌های مهم Cursor، Agent Mode است. در این حالت، Agent می‌تواند ساختار پروژه را بررسی کند، فایل‌های مرتبط را پیدا کند و برای انجام یک وظیفه چندمرحله‌ای تغییرات لازم را ایجاد کند.

برای مثال:

«صفحه Login را بررسی کن و مشکلات نمایش آن در موبایل را برطرف کن.»

Agent می‌تواند فایل‌های مرتبط را پیدا کرده، تغییرات لازم را اعمال و نتیجه را بررسی کند.

با این حال، کنترل نهایی همچنان با توسعه‌دهنده است و تغییرات ایجادشده باید قبل از استفاده در پروژه بررسی و تأیید شوند.

GitHub Copilot و قابلیت‌های Agentic

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

قابلیت‌های Agentic در Copilot به توسعه‌دهنده اجازه می‌دهند به‌جای درخواست یک قطعه کد، یک وظیفه مشخص را تعریف کند.

برای مثال:

«API مربوط به ثبت‌نام کاربران را بررسی کن، تست‌های لازم را اضافه کن و خطاهای موجود را اصلاح کن.»

Copilot می‌تواند بخش‌های مرتبط پروژه را بررسی کرده و مراحل لازم برای انجام این وظیفه را دنبال کند.

بنابراین، قابلیت‌های Agentic در Copilot نیز همان ایده اصلی AI Agent را دنبال می‌کنند: دریافت یک هدف، بررسی Context، انجام چند مرحله و ارائه نتیجه قابل بررسی.

Goal → Context → Action → Result

تفاوت اصلی این است که Copilot در کنار قابلیت‌های Agentic، همچنان به‌عنوان یک دستیار کدنویسی در محیط‌های مختلف توسعه و در اکوسیستم GitHub مورد استفاده قرار می‌گیرد.

Cursor یا GitHub Copilot؟

مقایسه ویژگی‌های Cursor و GitHub Copilot
ویژگی Cursor GitHub Copilot
نوع ابزار محیط توسعه با تمرکز پررنگ بر قابلیت‌های AI دستیار توسعه مبتنی بر AI
محیط توسعه IDE اختصاصی مبتنی بر Visual Studio Code قابل استفاده در محیط‌های توسعه مختلف
تولید و تکمیل کد
قابلیت‌های Agentic
کار با چند فایل
درک Context پروژه
تمرکز اصلی تعامل عمیق‌تر AI با پروژه کدنویسی و اکوسیستم GitHub

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

Cursor برای کسانی که می‌خواهند تعامل بیشتری با AI در محیط توسعه داشته باشند گزینه جذابی است؛ در حالی که Copilot برای توسعه‌دهندگانی که در اکوسیستم GitHub فعالیت می‌کنند، انتخاب مناسبی است.

مثال عملی استفاده از AI Agent در توسعه وب

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

به‌جای اینکه توسعه‌دهنده تمام مراحل را به‌صورت دستی انجام دهد، می‌تواند هدف خود را به Agent توضیح دهد:

«یک صفحه Login برای پروژه ایجاد کن که شامل ایمیل و رمز عبور باشد، در موبایل Responsive باشد و اعتبارسنجی فرم را نیز انجام دهد.»

Agent می‌تواند:

  1. ساختار پروژه را بررسی کند.
  2. فایل‌های مرتبط را پیدا کند.
  3. صفحه Login را ایجاد یا ویرایش کند.
  4. اعتبارسنجی فرم را اضافه کند.
  5. استایل موبایل و دسکتاپ را اعمال کند.
  6. تست و بررسی را انجام دهد.
  7. مشکلات احتمالی را اصلاح کند.

در این مثال، Agent فقط کد تولید نکرده؛ بلکه یک هدف را دریافت کرده و چند مرحله مرتبط را برای رسیدن به آن دنبال کرده است.

با این حال، توسعه‌دهنده همچنان باید کد، تغییرات و نتیجه تست‌ها را بررسی کند.

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

نقش توسعه‌دهنده و Human-in-the-loop

هرچقدر Agent بتواند وظایف بیشتری را به‌صورت خودکار انجام دهد، نظارت توسعه‌دهنده همچنان اهمیت دارد. توسعه‌دهنده باید قبل از پذیرش تغییرات، کد تولیدشده، نتایج تست‌ها و تأثیر تغییرات روی پروژه را بررسی کند.

به این رویکرد Human-in-the-loop گفته می‌شود؛ یعنی Agent در انجام کار مشارکت می‌کند، اما تصمیم نهایی و کنترل پروژه همچنان در اختیار انسان است.

مزایا و محدودیت‌های AI Agent

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

مزایا

  • کاهش کارهای تکراری
  • سرعت بیشتر در توسعه
  • کمک به Debugging و تست
  • انجام وظایف چندمرحله‌ای

محدودیت‌ها

  • احتمال تولید کد اشتباه
  • درک نادرست از Context پروژه
  • ایجاد تغییرات نامناسب
  • وابستگی نتیجه به Prompt و اطلاعات در دسترس

بنابراین، بهترین رویکرد این است که Agent را دستیار توسعه‌دهنده بدانیم، نه جایگزین او.

جمع‌بندی

AI Agentها می‌توانند یک هدف را دریافت کنند، مراحل مختلف را انجام دهند، از ابزارها استفاده کنند و نتیجه کار خود را بررسی کنند. به همین دلیل، استفاده از آن‌ها در توسعه نرم‌افزار می‌تواند بسیاری از کارهای تکراری و چندمرحله‌ای را ساده‌تر کند.

ابزارهایی مانند Cursor و GitHub Copilot این قابلیت‌ها را وارد محیط توسعه کرده‌اند؛ اما برای گرفتن نتیجه بهتر، Prompt مناسب، Context کافی و نظارت توسعه‌دهنده همچنان ضروری است.

در مقاله بعدی، یک قدم جلوتر می‌رویم و بررسی می‌کنیم چطور می‌توان اطلاعات اختصاصی را در اختیار مدل قرار داد. در ادامه، یک سیستم RAG با Next.js، OpenAI API، Next.js AI SDK و Vector Database می‌سازیم تا چت‌بات بتواند بر اساس اطلاعات مشخص و اختصاصی پاسخ دهد.

مطالب مرتبط