بیشتر ایجنتهایی که در پروژههای واقعی ساخته میشوند، با یک حلقهی while و فراخوانی تابع (Function Calling) حل میشوند — نه با LangChain یا CrewAI. طیف سهسطحی ایجنت را که درک نکنید، یا هزینهی بیشازحد میپردازید یا پیچیدگی بیمورد به کدتان اضافه میکنید. این راهنما هر سه سطح را با مثال عملی و شبهکد پوشش میدهد.
ایجنت هوش مصنوعی چیست؟ سه سطحی که اکثر مقالات قاطی میکنند#
ایجنت هوش مصنوعی (AI Agent) سامانهای است که حلقهی تکرارشوندهی برنامهریزی، اجرا و ارزیابی دارد؛ نه صرفاً یک پرامپت با یک فراخوانی ابزار. تمایز اصلی در «تکرار» است: ایجنت نتیجهی اقدامش را میخواند و تصمیم میگیرد ادامه بدهد یا نه. بدون این حلقه، شما یک پاسخدهندهی هوشمند دارید، نه یک عامل.
سطح ۱ — پرامپت + یک ابزار (ایجنت نیست)#
مدل یک بار ابزار صدا میزند و پاسخ میدهد. بدون ارزیابی، بدون تکرار، بدون تصمیم. بسیاری این الگو را «ایجنت» صدا میزنند اما حلقهی عاملی ندارد. مثلاً فراخوانی ابزار جستوجو و برگرداندن نتیجه به کاربر — یک پرامپت هوشمند است، نه ایجنت.
سطح ۲ — حلقهی عاملی (ایجنت واقعی)#
مدل برنامهریزی میکند، ابزار اجرا میکند، نتیجه را ارزیابی میکند و در صورت نیاز تکرار میکند. این همان سطحی است که در اکثر موارد کاربردی کافی است و در واقع نقطهی شیرین پروژههاست.
یک حلقهی while با حداکثر تعداد تکرار، تعریف ابزارها، و یک شرط ارزیابی — تمام. همین.
سطح ۳ — سیستم چندعاملی (Multi-Agent System)#
چند ایجنت با نقشهای مجزا — برنامهریز، اجراکننده، بازبین — هماهنگ کار میکنند. سیستم چندعاملی فقط وقتی لازم است که تکلیف آنقدر پیچیده باشد که یک ایجنت نمیتواند همزمان نقشهای متضاد را بازی کند. قبل از آن، یک ایجنت با حلقهی عاملی سادهتر و ارزانتر است.
تمایز از چتبات و RAG#
چتبات پاسخ تکفراخوانی است؛ بازیابی-تولید (RAG) جستوجو + تولید است بدون حلقهی تصمیمگیری. ایجنت روی این لایهها سوار میشود، نه جایگزین آنهاست. اگر سامانهای ابزار صدا میزند ولی خروجی را ارزیابی نمیکند، ایجنت نیست.
اجزای بنیادین معماری ایجنت: حافظه، برنامهریزی، ابزار، حلقهی اجرا#
معماری ایجنت هوش مصنوعی از چهار جزء اصلی تشکیل شده: حافظه (کوتاهمدت و بلندمدت)، برنامهریز، مجموعهی ابزار، و حلقهی اجرا-ارزیابی. حذف هر یک از این چهار جزء، ایجنت را به پرامپت یا اسکریپت ساده تبدیل میکند.

حافظه — کوتاهمدت، بلندمدت، خارجی#
پنجرهی بافت (Context window) مدل، حافظهی کوتاهمدت ایجنت است. اگر تکلیف در یک session حل میشود، همین کافی است. برای اطلاعات بین sessionها به vector database یا پایگاه دادهی بیرونی نیاز میشود.
تصمیم ساده: اگر ایجنت باید «یادش باشد» که سه جلسهی پیش چه کرده، حافظهی خارجی لازم است. اگر نه، context window خودش کافی است و اضافه کردن حافظهی خارجی فقط هزینه و پیچیدگی بیمورد میآورد.
برنامهریز و اجراکننده#
در الگوی برنامهریزی-و-اجرا (Plan-and-Execute)، مدل ابتدا کل مسیر را طراحی میکند و سپس گامبهگام اجرا میکند. در الگوی ReAct (Reasoning + Acting)، برنامهریزی و اجرا در هم تنیدهاند — مدل در هر تکرار فکر میکند، عمل میکند، و نتیجه را میخواند. الگوی ReAct توسط Yao و همکاران در دانشگاه پرینستون (2022) معرفی شد.
کدام بهتر است؟ بستگی به تکلیف دارد. اگر مسیر مشخص است، Plan-and-Execute تمیزتر است. اگر تکلیف باز است و نمیدانید گام بعدی چیست، ReAct انعطافپذیرتر عمل میکند.
ابزار و فراخوانی تابع#
قابلیت فراخوانی تابع در API اوپنایآی از ژوئن 2023 امکان اتصال استاندارد مدل زبانی به توابع خارجی را فراهم کرد. هر ابزار با schema تعریف میشود: نام، توضیح، ورودیها، خروجی. مدل تصمیم میگیرد کدام ابزار را با چه پارامترهایی صدا بزند.
حلقهی اجرا و ارزیابی#
حلقهی اجرا-ارزیابی قلب ایجنت است. بدون ارزیابی، حلقه بیمعناست. الگوی ساده: اجرا کن → نتیجه را بخوان → آیا کافی است؟ اگر نه، تکرار کن. اگر بله، خروجی بده.
امنیت و کنترل#
انسان در حلقه (Human-in-the-Loop) برای تأیید اقدامات پرخطر استفاده میشود. دسترسی ابزار بهصورت whitelist محدود شود. ورودی کاربر از دستور سیستمی جدا نگه داشته شود تا تزریق پرامپت (Prompt Injection) ممکن نشود. این سه اصل، حداقلِ دفاعی هر ایجنت در محیط تولید هستند.
کدام فریمورک برای ساخت ایجنت هوش مصنوعی بهتر است؟#
هیچ فریمورکی بهطور مطلق بهتر نیست. LangChain برای زنجیرههای خطی، CrewAI برای ایجنتهای نقشمحور، AutoGen برای مکالمهی چندعاملی، و OpenAI Agents SDK برای اکوسیستم بسته مناسباند — و هرکدام نقاط ضعف مشخصی دارند که انتخاب را به تکلیف گره میزند.
| فریمورک | مناسب برای | نقطه ضعف اصلی | پیچیدگی یادگیری |
|---|---|---|---|
| LangChain | زنجیرههای خطی و ترکیب ابزارها | انتزاع بیشازحد، دیباگ سخت، breaking change مکرر | متوسط تا بالا |
| CrewAI | تیم ایجنتها با نقشهای مشخص | برای تکایجنت سنگین و over-engineered | متوسط |
| Microsoft AutoGen | مکالمهی چندعاملی | debugging دشوار، مستندات ناقص | بالا |
| OpenAI Agents SDK | اکوسیستم بستهی اوپنایآی | vendor lock-in | پایین |
| LlamaIndex Agents | ایجنت روی RAG | حلقهی عاملی محدودتر | متوسط |
نکتهی عملی: اگر هنوز نمیدانید کدام فریمورک را انتخاب کنید، احتمالاً به فریمورک نیاز ندارید. حلقهی 30 خطی را بسازید و فقط وقتی به دیوار خوردید، مهاجرت کنید.
ایجنت حداقلی: ساخت یک حلقهی عاملی در 30 خط پایتون#
برای ساخت ایجنت هوش مصنوعی که واقعاً کار کند، به فریمورک نیاز نیست؛ یک حلقهی while با تعریف ابزار، فراخوانی مدل، ارزیابی خروجی و حداکثر تکرار کافی است. این الگو در پروژههای واقعی اعضای کامیونیتی اسکول مکرراً دیده شده — ایجنتهایی که با حلقهی دستی شروع شدند و بعداً به فریمورک مهاجرت کردند، نه برعکس.
پیشنیازهای فنی#
آشنایی با API مدل زبانی (حداقل یک فراخوانی ساده)، درک فراخوانی تابع، و توانایی نوشتن حلقه در پایتون. دانش machine learning یا الگوریتم لازم نیست.
گامهای ساخت#
- تعریف نقش و محدودیت ایجنت در system prompt
- انتخاب مدل زبانی (بسته به بودجه و سرعت)
- تعریف ابزارها با schema (نام، توضیح، پارامترها)
- نوشتن حلقهی اجرا: فراخوانی مدل → اجرای ابزار → برگرداندن نتیجه
- افزودن ارزیابی و خطمشی شکست (fallback policy)
- تست و لاگ هر تکرار
شبهکد حلقهی عاملی#
tools = [web_search, code_exec, file_read]
max_iterations = 5
iteration = 0
messages = [system_prompt, user_task]while iteration < max_iterations:
response = llm.chat(messages, tools=tools)
if response.is_final_answer:
return response.content
tool_result = execute(response.tool_call)
messages.append(tool_result)
iteration += 1return fallback_message() # خطمشی شکست
ساختار پوشهی پیشنهادی#
agent/
├── main.py
├── tools/
├── prompts/
├── evaluation.py
└── config.py
این ساختار برای شروع کافی است. وقتی ابزارها زیاد شدند یا نیاز به routing پیدا کردید، آنوقت به فریمورک فکر کنید.
رایجترین اشتباهات در ساخت ایجنت هوش مصنوعی چیست؟#
حلقهی بینهایت، حذف مرحلهی ارزیابی، خلطدادن ایجنت با RAG، و انتخاب فریمورک بدون نیاز، چهار اشتباهی هستند که بیشترین هزینه را در پروژههای ایجنت ایجاد میکنند. هرکدام قابل پیشگیری است.
حلقهی بینهایت (Infinite Loop)#
ابزار خطا میدهد، مدل تصمیم به تکرار میگیرد، و ایجنت تا ابد میچرخد. راهحل: حداکثر تعداد تکرار + خطمشی شکست. ایجنت باید بعد از N تکرار مجبور باشد گزارش خطا بدهد یا از انسان کمک بخواهد.
این اشتباه در کلاسها و پروژههای اولیهی اعضا مکرراً تکرار میشود — معمولاً چون برنامهنویس شرط خروج را مینویسد ولی خطمشی شکست را فراموش میکند. نتیجه: هزینهی API بینهایت.
حذف ارزیابی#
حلقهی اجرا بدون مرحلهی «آیا خروجی کافی است؟» عملاً یک پرامپت تکراری است، نه ایجنت. ارزیابی میتواند یک فراخوانی مدل کوچکتر باشد یا یک شرط منطقی ساده.
خلطدادن ایجنت با RAG#
هر سامانهای که ابزار صدا میزند ایجنت نیست. ایجنت واقعی حلقهی تصمیمگیری دارد. اگر سامانهی شما یک بار بازیابی میکند و یک بار پاسخ میدهد، RAG است نه ایجنت.
فریمورک بدون نیاز#
وقتی تکلیف با یک پرامپت و یک فراخوانی ابزار حل میشود، ایجنت اضافه کردن فقط هزینه و پیچیدگی میآورد. قبل از انتخاب ابزار، بپرسید: آیا واقعاً حلقهی تکرار لازم است؟
نادیدهگرفتن تزریق پرامپت#
ورودی کاربر میتواند دستورات سیستمی ایجنت را دور بزند. بدون فیلتر ورودی و محدودسازی دسترسی ابزار، ایجنت آسیبپذیر است. ورودی کاربر و دستور سیستمی را در دو فیلد جدا نگه دارید.
هزینه و تأخیر: چرا ایجنت گرانتر از یک پرامپت است و چگونه بهینه کنیم#
ایجنت بهدلیل چند بار فراخوانی مدل زبانی در هر حلقه، هزینهی توکنی و تأخیر چندبرابری یک پرامپت تکفراخوانی را دارد. بهینهسازی از انتخاب مدل کوچکتر، کش ابزار و حذف تکرارهای بیمورد میگذرد.
ریشهی هزینه#
هر تکرار حلقه یک فراخوانی کامل مدل است. یک ایجنت 5 تکراری حداقل 5 برابر هزینهی یک پرامپت تکفراخوانی دارد — و با بزرگتر شدن context در هر تکرار، این ضریب بالاتر میرود.
بهینهسازی مدل#
مدل کوچکتر برای ارزیابی و مدل بزرگتر فقط برای تصمیمهای کلیدی. این الگو هزینه را بدون افت محسوس کیفیت کاهش میدهد.
کش ابزار#
اگر نتیجهی یک ابزار برای همان ورودی تکرار میشود، cache آن را. بهخصوص در ایجنتهایی که چند بار یک query جستوجو را تکرار میکنند.
حذف تکرار بیمورد#
اگر ارزیابی میگوید خروجی کافی است، حلقه را قطع کن — نه ادامه بده. بسیاری از ایجنتها بعد از رسیدن به پاسخ درست، هنوز تکرار میکنند چون شرط خروج نوشته نشده.
تأخیر انباشته#
هر فراخوانی مدل بسته به مدل و طول پاسخ، تأخیر دارد. 5 تکرار یعنی تأخیر چندبرابری. برای کاربر نهایی، streaming و نمایش وضعیت حلقه ضروری است تا انتظار قابلتحمل بماند.
سیستم چندعاملی و الگوهای پیشرفته: ReAct، Plan-and-Execute، Reflexion#
وقتی تکلیف آنقدر پیچیده است که یک ایجنت نمیتواند همزمان برنامهریزی، اجرا و بازبینی کند، نقشها را به چند ایجنت تقسیم کنید؛ اما سیستم چندعاملی هزینه و تأخیر را چند برابر میکند و این هزینه را باید آگاهانه بپردازید.
الگوی ReAct (Reasoning + Acting)#
مدل در هر تکرار فکر میکند، ابزار اجرا میکند، و نتیجه را میخواند. مقالهی Yao et al. (2022، دانشگاه پرینستون) این الگو را معرفی کرد. ReAct برای تکالیف باز که مسیر مشخص ندارند مناسب است.
الگوی Plan-and-Execute#
ابتدا کل برنامه نوشته میشود، سپس گامبهگام اجرا. مناسب برای تکالیف با ساختار مشخص. اگر برنامهی اولیه اشتباه باشد، اصلاحش سختتر از ReAct است.
الگوی Reflexion (بازاندیشی)#
ایجنت پس از شکست، دلیل شکست را تحلیل و در تکرار بعد اصلاح میکند. نیاز به حافظهی بلندمدت دارد چون باید خاطرهی شکست قبلی را نگه دارد.
Multi-Agent System چه زمانی لازم است#
وقتی یک ایجنت نمیتواند همزمان نقشهای متضاد را بازی کند. مثلاً «خلاقباش» و «نقد کن» در یک context، مدل را گیج میکند. تقسیم به Planner، Executor، و Critic این مشکل را حل میکند.
هزینهی پنهان چندعاملی#
هر ایجنت یک فراخوانی مدل است. سه ایجنت × 5 تکرار = 15 فراخوانی مدل. فقط وقتی تقسیم نقشها واقعاً کیفیت را بالا میبرد، توجیه اقتصادی دارد. اگر با یک ایجنت 5 تکراری به همان کیفیت میرسید، چندعاملی بودن فقط هزینهی اضافه است.
جمعبندی عملی#
ایجنت هوش مصنوعی یک طیف است، نه یک نقطه. قبل از انتخاب فریمورک یا معماری چندعاملی، بپرسید: آیا حلقهی تکرار واقعاً لازم است؟ اگر بله، با 30 خط پایتون شروع کنید. اگر نه، پرامپت + ابزار کافی است. بیشتر پروژهها در سطح دوم حل میشوند و سطح سوم فقط برای تکالیف واقعاً پیچیده توجیه دارد.
اگر میخواهید این الگوها را در عمل بسازید و با n8n ایجنت و اتوماسیون بسازید، دورهٔ ساخت Ai Agent با N8N در کامیونیتی اسکول را ببینید. 51 جلسهی آفلاین با پروژهی واقعی — برای کسی که میخواهید از صفر تا درآمد برود.







دیدگاهها
برای گذاشتن دیدگاه وارد شو
دیدگاهها فقط از حسابهای کاربری پذیرفته میشوند.
ورود / ثبتنامهنوز دیدگاهی ثبت نشده — اولین نفر باش.