مقدمه
تصور کن یک Roomba (ربات جاروبرقی) داشته باشی که فقط بهت بگوید کف خانه کثیف است، اما خودش هیچ کاری برای تمیز کردنش نکند. مفید است؟ قابل بحث. آزاردهنده؟ خیلی زیاد.
وقتی ChatGPT برای اولین بار معرفی شد، اوضاع تقریباً همینطور بود. میتوانست توضیح بدهد که چطور مسائل ریاضی را حل کنی و درباره نظریهها ساعتها صحبت کند، اما نمیتوانست بهطور قابلاعتماد حتی یک مسئله سادهی حسابی را حل کند. با این حال، اتصال آن به یک برنامهی خارجی (مثل یک ماشین حساب آنلاین) تواناییهایش را بهشکل چشمگیری بهبود بخشید— درست مثل زمانی که حسگرهای Roomba به بدن رباتش متصل میشوند و در نتیجه واقعاً میتواند کف زمین را تمیز کند.
این کشف ساده مقدمهای بود بر یک تحول که اکنون در دنیای هوش مصنوعی مولد در حال وقوع است؛ جایی که مدلهای زبانی بزرگ (LLM) نیروی محرکهی عاملهای هوش مصنوعی (AI Agents) میشوند که میتوانند اهداف پیچیده را با نظارت مستقیم محدود دنبال کنند.
در این سیستمها، مدل زبانی بزرگ به عنوان «مغز» عمل میکند، در حالی که الگوریتمها و ابزارهای اضافی برای انجام وظایف کلیدی روی آن قرار میگیرند؛ از تولید برنامههای توسعه نرمافزار گرفته تا رزرو بلیت هواپیما. نمونههای اثبات مفهومی مانند AutoGPT نمونههایی ارائه دادهاند، مثل عاملی بازاریابی که در Reddit بهدنبال کامنتهایی میگردد که درباره یک محصول خاص سوال دارند و بهطور خودکار به آنها پاسخ میدهد.
در بهترین حالت، این عاملها نویدبخش دنبال کردن اهداف پیچیده با حداقل نظارت مستقیم هستند— و این یعنی حذف کارهای یکنواخت و خطی و ایجاد فرصت برای تمرکز بر تفکر سطح بالاتر. و وقتی عاملهای هوش مصنوعی را با یکدیگر متصل میکنید تا سیستمهای چندعامله بسازید— مثل کاری که ما در GitHub Copilot Workspace انجام میدهیم— دنیای امکانات بهطور تصاعدی رشد میکند.
همه اینها یعنی، اگر توسعهدهنده باشی، بهزودی در ابزارهایی که استفاده میکنی و در اخباری که میخوانی، با نمونههای بیشتری از هوش مصنوعی عاملمحور مواجه خواهی شد. پس این زمان مناسبی است که دقیقتر بررسی کنیم: هوش مصنوعی عاملمحور و عاملهای هوش مصنوعی دقیقاً چه هستند، چطور از نظر فنی کار میکنند، چه چالشهای فنی دارند، و چه معنایی برای توسعه نرمافزار خواهند داشت.
چرا مهندسی پرامپت (Prompt Engineering) اهمیت دارد؟
از همان ابتدا، ChatGPT توانایی حفظ زمینه لازم برای پاسخ به سوالات پیرو یک پرامپت اولیه را داشت. مثلا میتوانستی سوالی بپرسی، و اگر مدل جواب اشتباهی میداد، با تغییر پرامپتت، زمینهی لازم برای اصلاح پاسخ مدل را فراهم کنی.
توسعهدهندگان به این قابلیت پی بردند و بهزودی زنجیرهسازی پرامپتها (Prompt Chaining) را آغاز کردند— یعنی ساختن پرامپتهایی که خروجی یک پرامپت را به ورودی پرامپت بعدی میدهند. اما این باعث شد که درست بودن پرامپت اهمیت حیاتی پیدا کند.
بهترین پرامپتها، شفاف و دقیق در بیان نیت هستند. مثلا وقتی به GitHub Copilot یا ChatGPT میگویی «یک اپلیکیشن ماشین حساب بنویس»، منظورت روشن است، اما دقیق نیست. آیا اپلیکیشن برای iOS میخواهی یا Android؟ برای ویندوز؟ پرامپتت در این مورد پاسخ دقیقی نمیدهد.
اینجاست که مفهوم «مهندسی پرامپت» وارد میشود: با سرمایهگذاری روی سیستمهای پشتیبان که به مدل زبانی بزرگ اجازه میدهند زمینهی بیشتری درباره پرامپت دریافت کند (مثل تبهای باز در محیط توسعه یا زبانی که در آن کدنویسی میکنی)، توسعهدهندگان و پژوهشگران در حال بهبود توانایی مدلهای هوش مصنوعی مولد— و عاملهای هوش مصنوعی— برای استنتاج شفافیت و دقت از پرامپتها هستند.
عاملهای هوش مصنوعی و هوش مصنوعی عاملمحور چیستند؟
هوش مصنوعی عاملمحور (Agentic AI) به هوش مصنوعیای گفته میشود که میتواند تصمیمگیری کند، برنامهریزی کند، و در لحظه به اطلاعات جدید واکنش نشان دهد. عاملهای هوش مصنوعی با استفاده از بازخورد، الگوریتمهای پیشرفته و ورودیهای حسی، عملکرد خود را یاد میگیرند و بهبود میبخشند و وظایف را اجرا کرده و با محیط خود تعامل برقرار میکنند.
به گفته «لیلیان ونگ»، مدیر سیستمهای ایمنی OpenAI و رئیس سابق تحقیقات کاربردی هوش مصنوعی این شرکت، یک عامل هوش مصنوعی سه ویژگی کلیدی دارد:
- برنامهریزی: عامل قادر است بر اساس یک پرامپت، یک برنامه گامبهگام با اهداف مشخص بسازد و با یادگیری از اشتباهات (از طریق سیستم پاداشدهی) خروجیهای آینده را بهبود دهد.
- حافظه: عامل میتواند از حافظه کوتاهمدت برای پردازش پرامپتهای چتی و پرامپتهای پیرو استفاده کند و همچنین دادههای بلندمدت را ذخیره و بازیابی کند (اغلب از طریق تکنیکهایی مانند RAG یا تولید تقویت شده با بازیابی).
- استفاده از ابزار: عامل میتواند APIها را فراخوانی کند تا اطلاعات اضافی درخواست کند یا براساس درخواست کاربر عملیاتی انجام دهد.
نمونههایی از عاملهای هوش مصنوعی متنباز
در کنار عاملهای تجاری متعدد که این روزها وارد بازار شدهاند، چندین پروژه متنباز در GitHub وجود دارند، از جمله:
- AutoGPT: تلاشی برای ساخت یک نسخه کاملاً خودگردان از مدل GPT-4 شرکت OpenAI.
- Clippy: کمکی برای توسعهدهندگان جهت برنامهریزی، نوشتن، دیباگ و تست کد.
- DemoGPT: ابزاری برای تولید دمو از اپلیکیشنها.
انواع مختلف عاملهای هوش مصنوعی
عاملهای هوش مصنوعی از عاملهای واکنشی ساده تا عاملهای یادگیرندهی پیشرفته تنوع دارند و هرکدام نقاط قوت و ضعف خود را دارند.
با پیشرفت این حوزه، احتمالاً انواع بیشتری از عاملها ظهور خواهند کرد. چه بخواهید عامل هوش مصنوعی خودتان را بسازید و چه بخواهید درک بهتری از نحوه استفاده GitHub از هوش مصنوعی در ابزارهای توسعه داشته باشید، اینجا متداولترین انواع عاملهای هوش مصنوعی آورده شده:
ویژگی | مثالها |
---|---|
عامل واکنشی (Reflex Agent) از مدل محیط برای تصمیمگیری استفاده میکند. میتواند برخی حالتهای قبلی را به خاطر بسپارد و براساس تجربه فعلی و گذشته تصمیم بگیرد. |
ابزارهای linting مثل ESLint یا Pylint که براساس قوانین از پیش تعریفشده کد را ارزیابی میکنند. |
عامل مبتنی بر هدف (Goal-Based Agent) برای دستیابی به اهداف خاص، از دانش و هدف مشخص شده استفاده میکند. |
IDEهای پیشرفته با تکمیل کد مبتنی بر هوش مصنوعی مثل GitHub Copilot. |
عامل مبتنی بر سودمندی (Utility-Based Agent) هدف را به بهترین شکل ممکن با ارزیابی رویکردهای مختلف دنبال میکند. |
ابزارهایی که با توجه به شدت، تاثیر و حجم کاری توسعهدهندهها، باگها را اولویتبندی میکنند. |
عامل یادگیرنده (Learning Agent) با یادگیری از تجربیات گذشته عملکرد خود را بهبود میدهد. |
ابزارهای تکمیل کد مثل GitHub Copilot که با گذر زمان بهتر میشوند. |
چالشهای فنی رایج با عاملهای هوش مصنوعی امروزی
با اینکه هوش مصنوعی عاملمحور امیدهای زیادی ایجاد کرده، اما در توسعه این سیستمها امروزه با دو چالش اساسی در سطح صنعت مواجه هستیم:
- ما نمیتوانیم به صورت قطعی پیشبینی کنیم یک مدل هوش مصنوعی بعدی چه خواهد گفت یا انجام خواهد داد؛ و همین توضیحدادن عملکرد ورودیهای آن (ترکیبی از پرامپت و دادههای آموزشی) را دشوار میکند.
- ما هنوز مدلهایی نداریم که بتوانند خروجیهای خود را بهطور کامل توضیح دهند، هرچند تلاشهایی برای افزایش شفافیت و امکان توضیح روند رسیدن به پاسخ در حال انجام است.
در نتیجه، اشکالزدایی (دیباگ) سیستمهای عاملمحور دشوار است و ساخت چارچوبهای ارزیابی برای درک اثربخشی، کارآمدی و تاثیر این سیستمها مشکل میباشد.
عاملهای هوش مصنوعی دشوار هستند برای دیباگ، زیرا آنها تمایل دارند مسائل را به شیوههایی غیرمنتظره حل کنند. این ویژگی سالهاست که در بازی شطرنج هم مشاهده شده— جایی که ماشینها حرکاتی انجام میدهند که برای انسان غیرمنطقی به نظر میرسد ولی باعث پیروزی میشود.
هرچه یک عامل پیچیدهتر شود و مدت بیشتری اجرا شود، دیباگ آن سختتر خواهد شد— بهخصوص وقتی در نظر بگیریم که لاگها چقدر سریع میتوانند رشد کنند.
همچنین ارزیابی عملکرد عاملها به شیوهای تکرارپذیر که پیشرفت واقعی را نشان دهد (بدون تحمیل محدودیتهای مصنوعی) چالشبرانگیز است؛ زیرا قابلیتهای مدلهای زبانی زیربنایی (LLMs) به سرعت در حال بهبود هستند و این باعث میشود تشخیص این که آیا بهبود ناشی از رویکرد جدید است یا فقط نتیجه ارتقاء مدل پایه، دشوار شود.
توسعهدهندگان اغلب با مشکلاتی مثل انتخاب معیارهای مناسب، بنچمارک کردن عملکرد کلی براساس یک چارچوب یا معیار مشخص، و جمعآوری بازخورد کاربران نهایی و دادههای تلهمتری برای ارزیابی اثربخشی خروجیهای عامل، مواجه میشوند.
چه نکاتی را باید هنگام ساخت عاملهای هوش مصنوعی در نظر گرفت؟
ما توسعهدهندگان معمولاً عادت داریم کدهای سبک دستوری (imperative) بنویسیم، به این صورت که برای رسیدن به هدف X، Y، Z مراحلی مشخص تعریف میکنیم.
اما عاملها بسیار خودمختارتر هستند: اغلب فقط لازم است هدف (یعنی وضعیت نهایی مطلوب) را مشخص کنیم— و خود عامل برنامهای برای دستیابی به آن میسازد.
چرا این موضوع اهمیت دارد (و چند نکتهی پایانی)
این روزها درباره عاملهای هوش مصنوعی خیلی سر و صدا شده— و دلایل خوبی هم دارد. همانطور که این عاملها پیشرفت میکنند، میتوانند با همکاری یکدیگر کارهای پیچیدهتری را انجام دهند، که این یعنی کاهش نیاز به مهندسی پرامپت از سوی کاربران.
اما برای توسعهدهندگان، مزیت عاملهای هوش مصنوعی ساده است: آنها امکان تمرکز بیشتر روی فعالیتهای باارزشتر را فراهم میکنند.
وقتی به مدلهای زبانی بزرگ ابزار، حافظه و طرح برنامه میدهید تا عامل بسازند، آنها کمی شبیه قطعات لگو میشوند که میتوانید آنها را به هم وصل کنید تا سیستمهای پیشرفتهتری بسازید.
چون در بهترین حالت، عاملهای هوش مصنوعی ماژولار، سازگار، قابل تعامل و مقیاسپذیر هستند— درست مثل قطعات لگو. همانطور که یک کودک میتواند از یک توده لگو، یک قلعهی بلند یا یک سفینهی براق بسازد، توسعهدهندگان هم میتوانند با استفاده از عاملهای هوش مصنوعی سیستمهای چندعاملهای بسازند که نوید انقلاب در توسعه نرمافزار را میدهند.