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

ایجنت هوش مصنوعی دقیقاً چیست و مرزش با چت‌بات کجاست؟#

ایجنت هوش مصنوعی (AI Agent) سیستمی است که در حلقه‌ی ادراک-تصمیم-عمل (Perception-Decision-Action Loop) به‌صورت تکراری تصمیم می‌گیرد، ابزار فراخوانی می‌کند و خروجی را ارزیابی می‌کند. چت‌بات و RPA فاقد این حلقه‌ی خودگردان‌اند و فقط ورودی را به خروجی تبدیل می‌کنند.

تعریف عملیاتی: چه چیزی ایجنت را از چت‌بات و RPA جدا می‌کند#

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

چت‌بات یک ورودی را به یک خروجی تبدیل می‌کند و همین. RPA (Robotic Process Automation) دنباله‌ای از پیش تعریف‌شده‌ی دستورات را اجرا می‌کند. هیچ‌کدام تصمیم‌گیری پویا ندارند.

مرز واقعی: چرا بسیاری از «ایجنت‌ها» صرفاً اسکریپت Function Calling‌اند#

Function Calling یک فراخوانی تک‌مرحله‌ای است: مدل ابزار را انتخاب و صدا می‌زند و پاسخ می‌دهد. ایجنت حلقه‌ی تکراری دارد؛ نتیجه‌ی فراخوانی دوباره به مدل برمی‌گردد و مدل تصمیم می‌گیرد ادامه دهد یا نه.

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

سه مؤلفه‌ی لازم: مدل زبانی، حافظه، و دسترسی به ابزار#

مدل زبانی مغز تصمیم‌گیری است. حافظه زمینه‌ی گفتگو و نتایج قبلی را نگه می‌دارد. ابزارها دست‌های ایجنت‌اند: جستجوی وب، اجرای کد، فراخوانی API، نوشتن فایل. بدون هر سه، ایجنت عملاً فلج است.

حلقه‌ی ادراک-تصمیم-عمل: معماری داخلی ایجنت#

حلقه‌ی ادراک-تصمیم-عمل (Perception-Decision-Action Loop) ستون فقرات هر ایجنت هوش مصنوعی است: مدل زبانی ورودی را تفسیر می‌کند، برنامه‌ریز قدم بعدی را تعیین می‌کند، ابزار اجرا می‌شود، و نتیجه دوباره به حلقه بازمی‌گردد تا هدف محقق شود یا محدودیت فرا برسد.

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

اجزای اصلی: مدل زبانی، حافظه‌ی کوتاه‌مدت و بلندمدت، ابزار، و برنامه‌ریز#

مدل زبانی نقش مغز را بازی می‌کند. حافظه‌ی کوتاه‌مدت تاریخچه‌ی همین گفتگو و نتایج ابزارهای قبلی را نگه می‌دارد. حافظه‌ی بلندمدت دانش سازمانی را از پایگاه‌داده یا وکتور استور (Vector Store) بازیابی می‌کند. برنامه‌ریز تعیین می‌کند قدم بعدی چیست. ابزارها عمل فیزیکی انجام می‌دهند.

نقش RAG در تغذیه‌ی حافظه‌ی بلندمدت#

RAG (Retrieval-Augmented Generation) یعنی بازیابی و افزودن: ایجنت قبل از تصمیم، از پایگاه دانش مرتبط جستجو می‌کند و نتیجه را به context اضافه می‌کند. بدون RAG، ایجنت فقط به دانش وزن‌های مدل و تاریخچه‌ی گفتگو دسترسی دارد. با RAG، به دانش به‌روز و سازمانی هم دسترسی پیدا می‌کند.

State Machine و مدیریت وضعیت بین مراحل حلقه#

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

یک State Machine ساده با چند حالت و انتقال‌های صریح، قابل‌اعتمادی ایجنت را چند برابر می‌کند. این لایه معمولاً از قلم می‌افتد چون در توتوریال‌ها نشان داده نمی‌شود، اما در تولید حیاتی است.

الگوی ReAct بهتر است یا Plan-and-Execute؟#

ReAct برای تسک‌های باز و غیرقابل‌پیش‌بینی طراحی شده که تعداد مراحلشان از قبل معلوم نیست و مدل باید در هر قدم تصمیم جدید بگیرد. اما Plan-and-Execute وقتی برنده است که مراحل از پیش مشخص‌اند و برنامه‌ریزی یک‌باره هزینه و تأخیر را به‌طور محسوسی کاهش می‌دهد.

الگوی ReAct: حلقه‌ی تکراری تفکر و عمل#

ReAct (Reasoning and Acting) یعنی مدل در هر قدم ابتدا فکر می‌کند، سپس عمل می‌کند، سپس نتیجه را می‌بیند و دوباره فکر می‌کند. این الگو برای تسک‌هایی مناسب است که نمی‌دانید چند مرحله لازم دارد. مثلاً «این باگ را پیدا و رفع کن» — ایجنت ممکن است 3 بار ابزار بزند یا 15 بار.

مشکل ReAct: هر مرحله یک فراخوانی API است. اگر تسک شما 10 مرحله دارد، 10 فراخوانی مدل زبانی می‌پردازید. هزینه و تأخیر مستقیماً با تعداد مراحل حلقه رشد می‌کند.

الگوی Plan-and-Execute: برنامه‌ریزی یک‌باره و اجرای متوالی#

در Plan-and-Execute ابتدا مدل یک‌بار کل برنامه را تولید می‌کند: «قدم 1 این، قدم 2 آن، قدم 3 آن». سپس هر قدم اجرا می‌شود. اگر نتیجه‌ی یک قدم غیرمنتظره بود، دوباره برنامه‌ریزی می‌شود.

برای تسک‌هایی که مراحل‌شان مشخص است — مثلاً «این فایل را بخوان، خلاصه کن، ترجمه کن» — Plan-and-Execute یک فراخوانی برنامه‌ریزی + چند اجرای ساده نیاز دارد. هزینه‌ی کل به‌طور محسوسی کمتر از ReAct است.

الگوی Reflexion و نقش Chain-of-Thought در خوداصلاحی#

Reflexion یعنی ایجنت بعد از شکست، نتیجه را تحلیل می‌کند و یک «درس» به حافظه‌ی خود اضافه می‌کند. دفعه‌ی بعد که با شرایط مشابه مواجه شد، از آن درس استفاده می‌کند. این الگو را می‌توان روی هر دو الگوی ReAct و Plan-and-Execute سوار کرد.

Andrew Ng و چهار الگوی agentic design patterns#

Andrew Ng چهار الگوی اصلی طراحی ایجنت را معرفی کرده: Reflection (بازتاب و خوداصلاحی)، Tool Use (فراخوانی ابزار)، Planning (برنامه‌ریزی)، و Multi-agent Collaboration (همکاری چندایجنتی). هر پروژه‌ی ایجنت در عمل ترکیبی از این چهار الگو است. شناخت این چهار الگو به‌جای حفظ کردن نام فریمورک‌ها، تصمیم‌گیری معماری را شفاف‌تر می‌کند.

پیش‌نیازهای فنی: API، مدیریت توکن و sandbox#

پیش‌نیازهای فنی ایجنت هوش مصنوعی سه مورد است: دسترسی API به مدل زبانی، استراتژی مدیریت توکن (Token Budget) برای کنترل هزینه و جلوگیری از انفجار قبض، و محیط sandbox برای اجرای امن ابزارها. بدون این سه، ایجنت در محیط تولید غیرقابل‌کنترل است.

دسترسی API و انتخاب مدل#

OpenAI، Anthropic، و مدل‌های متن‌باز (open-source) مثل Llama یا Mistral گزینه‌های اصلی‌اند. انتخاب مدل به سه عامل بستگی دارد: کیفیت استدلال مورد نیاز، بودجه، و الزامات حریم خصوصی. مدل‌های بزرگ‌تر استدلال بهتری دارند ولی گران‌ترند. مدل‌های متن‌باز روی سرور خودتان قابل اجرا هستند ولی به سخت‌افزار نیاز دارند.

مدیریت توکن و هزینه#

بدون Token Budget، ایجنت هزینه را منفجر می‌کند. هر حلقه‌ی تکراری context را بزرگ‌تر می‌کند. اگر max_iterations تنظیم نشده باشد، ایجنت می‌تواند ده‌ها فراخوانی API بزند و هزینه‌ای غیرقابل‌پیش‌بینی تولید کند.

استراتژی مدیریت توکن شامل سه لایه است: سقف تعداد مراحل حلقه، سقف طول context با خلاصه‌سازی خودکار، و سقف هزینه‌ی کل هر تسک.

sandbox و امنیت اجرای ابزارها#

ایجنتی که ابزار اجرای کد دارد، باید در محیط sandbox کار کند. محدودیت دسترسی فایل‌سیستم، شبکه، و مجوزهای سیستم‌عامل باید از قبل تعریف شوند. بدون sandbox، ایجنت می‌تواند هر کاری که کد آن اجازه می‌دهد انجام دهد — از حذف فایل تا ارسال داده‌های حساس.

چطور از صفر یک ایجنت بسازم؟#

ساخت ایجنت هوش مصنوعی از صفر شش گام دارد: تعریف تسک و مرز حلقه، انتخاب مدل و ابزار، پیاده‌سازی حلقه‌ی ادراک-تصمیم-عمل، افزودن حافظه، تنظیم محدودیت‌ها، و تست با سناریوهای واقعی. حلقه‌ی اصلی در عمل کوتاه‌تر از آن چیزی است که فریمورک‌ها نشان می‌دهند.

گام 1 تا 3: تعریف تسک، انتخاب مدل، پیاده‌سازی حلقه‌ی اصلی#

شبه‌کد حلقه‌ی اصلی ایجنت در Python:

  1. تعریف تسک: هدف نهایی و معیار موفقیت را بنویسید. مثلاً: «باگ را پیدا کن و کد اصلاح‌شده را برگردان».
  2. انتخاب مدل و ابزار: مدل زبانی و مجموعه‌ی ابزارها (جستجو، اجرای کد، خواندن فایل) را مشخص کنید.
  3. پیاده‌سازی حلقه:
while not done and iterations < max_iterations: response = model.generate(prompt + history) if response.type == 'tool_call': result = execute_tool(response) history.append(result) elif response.type == 'final_answer': done = True return response.content

گام 4 تا 6: افزودن حافظه، تنظیم محدودیت‌ها، تست و ارزیابی#

  1. افزودن حافظه: تاریخچه‌ی گفتگو و نتایج ابزار را در هر حلقه به prompt اضافه کنید.
  2. تنظیم محدودیت‌ها: max_iterations، timeout هر حلقه، و Token Budget کل تسک.
  3. تست: حداقل 10 سناریوی واقعی و 5 سناریوی مرزی (edge case) تعریف کنید. ایجنت را روی همه اجرا کنید و خروجی‌ها را بررسی کنید.

ساختار پوشه‌ی پروژه‌ی ایجنت#

یک ساختار ساده و قابل‌نگهداری:

agent_project/ ├── main.py # ورودی و اجرای حلقه ├── agent/ │ ├── loop.py # منطق حلقه‌ی ادراک-تصمیم-عمل │ ├── planner.py # الگوی Plan-and-Execute │ └── memory.py # مدیریت حافظه ├── tools/ │ ├── search.py │ ├── code_executor.py │ └── file_reader.py ├── config/ │ ├── model.py # تنظیمات مدل و API key │ └── limits.py # max_iterations، timeout، budget └── tests/ └── scenarios.py # سناریوهای تست

مقایسه فریمورک‌ها: LangChain، CrewAI و AutoGen#

LangChain انعطاف‌پذیر ولی سنگین است، CrewAI برای سناریوهای نقشه‌محور مناسب ولی debugging سختی دارد، AutoGen برای تحقیق خوب است ولی برای production آماده نیست. انتخاب فریمورک ایجنت هوش مصنوعی باید به سناریو بستگی داشته باشد، نه به محبوبیت در GitHub.

جدول مقایسه‌ای#

فریمورکنقطه‌ی قوتنقطه‌ی ضعفمناسب برای
LangChainانعطاف‌پذیری بالا، اکوسیستم بزرگ، پشتیبانی از هر مدلسنگین، abstraction layer زیاد، debugging سختپروژه‌های پیچیده با نیاز به سفارشی‌سازی
CrewAIسناریوهای نقشه‌محور، API ساده، شروع سریعdebugging چندایجنتی سخت، انعطاف کمترتسک‌های تیمی با نقش‌های مشخص
AutoGenگفتگوی چندایجنتی، مناسب تحقیق و آزمایشآماده‌ی production نیست، مستندات ضعیفپروتوتایپ و تحقیق آکادمیک
Semantic Kernelیکپارچگی با Microsoft ecosystem، enterprise-readyجامعه‌ی کوچک‌تر، یادگیری اولیه کندمحیط‌های سازمانی مایکروسافت
OpenAI Assistants APIساده، managed، بدون نیاز به زیرساختمحدود به OpenAI، vendor lock-inپروتوتایپ سریع با OpenAI

چه زمانی از هر فریمورک استفاده کنیم و چه زمانی پرهیز کنیم#

اگر فقط یک ایجنت تک‌نفره با 2-3 ابزار می‌خواهید، LangChain اضافه است. مستقیماً با API مدل زبانی و چند تابع Python حلقه‌ی ادراک-تصمیم-عمل را پیاده‌سازی کنید. LangChain فقط لایه‌ی انتزاعی (abstraction layer) است؛ بدون آن هم می‌توان ایجنت ساخت.

CrewAI وقتی مناسب است که تسک شما واقعاً به چند نقش نیاز دارد و می‌خواهید سریع پروتوتایپ بسازید. AutoGen برای آزمایش و تحقیق خوب است ولی در محیط تولید ریسک دارد.

سیستم چندایجنتی و Agent Orchestration: چه زمانی لازم است#

مولتی ایجنت (Multi-Agent) وقتی لازم است که تسک شما نیاز به تخصص‌های مجزا دارد یا وقتی context window یک ایجنت تک‌نفره برای نگه‌داشتن همه‌ی اطلاعات کافی نیست. اگر ایجنت تک‌نفره‌ی قابل‌اعتماد ندارید، Multi-Agent را شروع نکنید. این یکی از پرهزینه‌ترین اشتباهات معماری است.

اشتباهات رایج: چرا ایجنت‌ها در محیط تولید می‌شکنند#

رایج‌ترین شکست‌های ایجنت هوش مصنوعی در محیط تولید شامل حلقه‌ی بی‌پایان بدون max_iterations، non-determinism، شروع با Multi-Agent بدون ایجنت تک‌نفره‌ی قابل‌اعتماد، و ادعای خودمختاری بدون Human-in-the-loop است.

حلقه‌ی بی‌پایان و انفجار هزینه#

بدون max_iterations و timeout، ایجنت می‌تواند بی‌پایان در حلقه بماند. مدل زبانی non-deterministic است؛ یعنی یک ورودی می‌تواند دو بار خروجی متفاوت بدهد. بار اول حلقه تمام می‌شود، بار دوم نه. این رفتار در محیط تولید فاجعه‌بار است.

الگوی تکرارشونده‌ی شکست: شروع با Multi-Agent#

در پروژه‌های واقعی که اعضای کامیونیتی گزارش داده‌اند، الگوی تکرارشونده این است: تیم بدون اینکه یک ایجنت تک‌نفره‌ی قابل‌اعتماد ساخته باشد، مستقیم سراغ Multi-Agent می‌رود. نتیجه: debugging غیرممکن، هزینه‌ی API چند برابر، و رها کردن پروژه. اول ایجنت تک‌نفره را قابل‌اعتماد کنید، بعد اگر واقعاً نیاز داشتید، چند ایجنت را هماهنگ کنید.

AutoGPT و درس‌های پروژه‌ای که رها شد#

AutoGPT در 2023 ساخته شد و در حدود یک هفته بیش از 100 هزار ستاره‌ی GitHub گرفت. اما به‌دلیل ناپایداری عملاً رها شد و در پروژه‌های واقعی قابل‌اتکا نیست. درس اصلی: ستاره‌ی GitHub معیار کیفیت نیست. یک ایجنت که در بخش بزرگی از اجراها شکست می‌خورد، در محیط تولید بی‌فایده است.

راه‌حل عملی: fallback به پاسخ مستقیم مدل#

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

چه زمانی ایجنت نسازید؟#

اگر تسک شما یک ورودی ثابت، یک خروجی ثابت و بدون نیاز به تصمیم‌گیری تکراری است، ایجنت هوش مصنوعی اضافه است؛ اسکریپت ساده‌ی Function Calling بدون حلقه‌ی تکراری، هزینه و تأخیر را حذف می‌کند.

معیار تشخیص: آیا به حلقه‌ی تکراری نیاز دارید یا خیر#

یک سؤال ساده بپرسید: «آیا مدل بعد از دیدن نتیجه‌ی ابزار اول، باید تصمیم بگیرد ابزار دوم را بزند یا نه؟» اگر جواب بله است، ایجنت لازم است. اگر نه، یک فراخوانی Function Calling کافی است.

کاربردهایی که ایجنت در آن‌ها ارزش واقعی دارد#

  • کدنویسی: پیدا کردن باگ، نوشتن تست، refactoring — چون تعداد مراحل غیرقابل‌پیش‌بینی است.
  • تحقیق: جستجوی چندمرحله‌ای، جمع‌آوری داده از منابع مختلف، تحلیل — چون مدل باید تصمیم بگیرد کجا بیشتر بگردد.
  • پشتیبانی: تشخیص مشکل از چند سؤال، فراخوانی ابزارهای مختلف، ارائه‌ی راه‌حل.
  • اتوماسیون اداری: فرآیندهایی که ورودی‌شان ثابت نیست و نیاز به تصمیم‌گیری پویا دارند.

کاربردهایی که ایجنت اضافه است#

فرآیندهای خطی و قابل‌پیش‌بینی — مثلاً «این JSON را بگیر، فیلد X را استخراج کن، در دیتابیس ذخیره کن» — نیاز به ایجنت ندارند. یک اسکریپت ساده سریع‌تر، ارزان‌تر و قابل‌اعتمادتر است. اضافه کردن ایجنت به این تسک‌ها فقط هزینه و تأخیر اضافه می‌کند.

هزینه، زمان و نظارت انسانی#

هزینه‌ی ساخت ایجنت هوش مصنوعی به مدل انتخابی، تعداد فراخوانی API و پیچیدگی ابزارها بستگی دارد؛ تمام ایجنت‌های قابل‌اتکا در محیط تولید حداقل یک نقطه‌ی تأیید انسانی (Human-in-the-loop) دارند.

عوامل مؤثر بر هزینه#

سه عامل هزینه را تعیین می‌کند: تعداد توکن‌های هر فراخوانی (بسته به طول context)، تعداد فراخوانی‌های ابزار، و تعداد مراحل حلقه. هر سه با هم ضرب می‌شوند. یک ایجنت با 10 مرحله حلقه و 3 ابزار در هر مرحله، 30 فراخوانی ابزار و 10 فراخوانی مدل زبانی تولید می‌کند.

Human-in-the-loop: طراحی نقطه‌ی تأیید#

ایجنتی که بدون هیچ نقطه‌ی تأیید انسانی در محیط تولید اجرا می‌شود، ریسک‌دار است. حداقل یک نقطه‌ی تأیید تعریف کنید: قبل از حذف داده، قبل از ارسال ایمیل به مشتری، قبل از نوشتن در دیتابیس. استراتژی fallback هم داشته باشید: اگر ایجنت شکست خورد، چه کسی و چطور تسک را تمام می‌کند.

ارزیابی و تست#

معیارهای عملکرد ایجنت: نرخ موفقیت تسک (Task Success Rate)، متوسط تعداد مراحل، هزینه‌ی هر تسک، و نرخ خطای ابزار. این‌ها را از روز اول رد کنید. بدون اندازه‌گیری، نمی‌فهمید ایجنت‌تان کجا ضعیف است.

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