خلاصه مسیر تا اینجا
بیا یه نگاه به مسیری که طی کردیم بندازیم. اپیزود ۴ مدلهای اوپنسورس رو شناختیم. اپیزود ۵ با RAG بهشون حافظه دادیم. اپیزود ۶ با Fine-tuning رفتارشون رو شخصیسازی کردیم. ولی هنوز یه مشکل بزرگ داریم: این مدلها فقط حرف میزنن.
ازشون بپرسی «هوا چطوره؟» — یه جواب کلی میدن ولی نمیتونن واقعاً هوا رو چک کنن. بگی «یه ایمیل بفرست» — متن ایمیل رو مینویسن ولی واقعاً نمیفرستن. بگی «این فایل رو بخون» — نمیتونن.
امروز میخوایم این محدودیت رو بشکنیم. امروز LLM زنده میشه.
Agent چیه؟ — سه تفاوت کلیدی با Chatbot
یه AI Agent یه سیستمه که یه LLM داره بهعنوان مغز، ولی کنارش ابزارهایی داره که میتونه باهاشون کار انجام بده.
بیا سه تفاوت اصلی Agent و Chatbot ساده رو ببینیم:
تفاوت ۱: عملگرایی (Action)
Chatbot: فقط متن تولید میکنه. جواب سوالت رو میده و تمام.
Agent: میتونه کار انجام بده — API بزنه، فایل بخونه، دیتابیس رو جستجو کنه، ایمیل بفرسته.
تفاوت ۲: برنامهریزی (Planning)
Chatbot: به هر پیام جداگانه جواب میده. برنامهای نداره.
Agent: یه کار بزرگ رو به مراحل کوچیکتر تقسیم میکنه و قدمبهقدم اجرا میکنه.
تفاوت ۳: خودمختاری (Autonomy)
Chatbot: منتظر دستور تو میمونه. بدون سوال تو، کاری نمیکنه.
Agent: میتونه تصمیم بگیره، اشتباهش رو تشخیص بده و اصلاح کنه، و حتی بدون دستور مستقیم تو عمل کنه.
تشبیه: Chatbot مثل یه دانشنامهست — جواب میده ولی کاری نمیکنه. Agent مثل یه دستیار واقعیه — هم جواب میده هم کار انجام میده. بگی «جلسه فردا رو کنسل کن»، واقعاً میره تقویم رو باز میکنه و کنسل میکنه.
Tool Use / Function Calling — دستهای Agent
مهمترین قابلیتی که یه LLM رو تبدیل به Agent میکنه، Tool Use (استفاده از ابزار) هست که بهش Function Calling هم میگن.
چطور کار میکنه؟
ایده سادهست: به مدل یه لیست از ابزارها (توابع) میدی و میگی «هر وقت لازم بود، از اینا استفاده کن.» مدل خودش تشخیص میده کی باید از کدوم ابزار استفاده کنه.
# تعریف ابزارها برای مدل
tools = [
{
"name": "get_weather",
"description": "وضعیت آب و هوای یه شهر رو برمیگردونه",
"parameters": {
"city": "نام شهر (مثل تهران)"
}
},
{
"name": "send_email",
"description": "ایمیل ارسال میکنه",
"parameters": {
"to": "آدرس ایمیل",
"subject": "موضوع",
"body": "متن ایمیل"
}
},
{
"name": "search_database",
"description": "دیتابیس محصولات رو جستجو میکنه",
"parameters": {
"query": "عبارت جستجو"
}
}
]
# حالا وقتی کاربر بگه "هوای تهران چطوره؟"
# مدل خودش تشخیص میده باید get_weather رو صدا بزنه
# و پارامتر city رو "تهران" قرار میده
جریان کار Function Calling
- کاربر سوال میپرسه
- مدل تصمیم میگیره آیا نیاز به ابزاره یا نه
- اگه نیاز بود، مدل اسم تابع و پارامترها رو خروجی میده (نه خود نتیجه رو!)
- سیستم تابع رو واقعاً اجرا میکنه و نتیجه رو به مدل برمیگردونه
- مدل با نتیجه، جواب نهایی رو به کاربر میده
معماری یه Agent هوشمند
یه Agent خوب چهار بخش اصلی داره. بیا هر کدوم رو بررسی کنیم:
۱. Perception (ادراک) — چشم و گوش Agent
Agent باید بتونه اطلاعات رو دریافت کنه. این اطلاعات میتونه از منابع مختلف بیاد:
- پیام کاربر
- نتیجه ابزارها
- تاریخچه مکالمه
- اطلاعات محیطی (مثل زمان، موقعیت)
۲. Reasoning (استدلال) — مغز Agent
اینجا LLM نقش اصلی رو بازی میکنه. مدل باید:
- سوال رو بفهمه
- تصمیم بگیره چه کاری لازمه
- یه برنامه بچینه
- بین ابزارهای مختلف انتخاب کنه
یه الگوی معروف برای استدلال Agent، الگوی ReAct (Reasoning + Acting) هست:
# الگوی ReAct
# فکر: باید اول هوا رو چک کنم
# عمل: get_weather("تهران")
# مشاهده: دمای ۲۵ درجه، آفتابی
# فکر: حالا باید به کاربر جواب بدم
# جواب: هوای تهران الان ۲۵ درجه و آفتابیه!
۳. Action (عمل) — دستهای Agent
بعد از تصمیمگیری، Agent عمل میکنه. عمل میتونه:
- صدا زدن یه ابزار (Function Calling)
- جواب دادن به کاربر
- درخواست اطلاعات بیشتر از کاربر
- تقسیم کار به زیرکارهای کوچکتر
۴. Memory (حافظه) — یادگیری Agent
بدون حافظه، Agent هر بار از صفر شروع میکنه. حافظه Agent دو نوعه:
- Short-term Memory (حافظه کوتاهمدت): تاریخچه مکالمه فعلی. هر چی تو این مکالمه گفته شده رو یادش هست.
- Long-term Memory (حافظه بلندمدت): اطلاعاتی که بین مکالمات مختلف حفظ میشه. مثلاً ترجیحات کاربر، تاریخچه عملیات قبلی.
Agent Loop — حلقه اصلی
یه Agent تو یه حلقه (Loop) کار میکنه. این حلقه تا وقتی کار تموم نشه ادامه داره:
# شبهکد حلقه Agent
def agent_loop(user_request):
messages = [{"role": "user", "content": user_request}]
while True:
# مدل فکر میکنه
response = llm.generate(messages, tools=available_tools)
# آیا میخواد ابزار استفاده کنه؟
if response.has_tool_call:
# ابزار رو اجرا کن
tool_name = response.tool_call.name
tool_args = response.tool_call.arguments
result = execute_tool(tool_name, tool_args)
# نتیجه رو برگردون به مدل
messages.append({"role": "tool", "content": result})
continue # دوباره فکر کن
# اگه ابزار نخواست، یعنی جواب نهایی آمادهست
return response.text
نکته مهم: Agent ممکنه چندین بار تو این حلقه بچرخه. مثلاً اول دیتابیس رو سرچ کنه، بعد نتیجه رو تحلیل کنه، بعد یه API دیگه بزنه، و در نهایت جواب بده.
مثالهای عملی Agent
بیا چند مثال واقعی ببینیم تا بهتر بفهمی Agent چقدر قدرتمنده:
مثال ۱: دستیار برنامهنویسی
ابزارها: خواندن فایل، نوشتن فایل، اجرای کد، جستجو در مستندات
سناریو: بگی «یه باگ تو فایل app.py هست، پیداش کن و درستش کن»
Agent: فایل رو میخونه → باگ رو پیدا میکنه → فایل رو ویرایش میکنه → تست اجرا میکنه → نتیجه رو بهت گزارش میده
مثال ۲: دستیار تحقیق
ابزارها: جستجوی وب، خواندن صفحات وب، خلاصهسازی
سناریو: بگی «درباره آخرین تحولات AI تو سال ۲۰۲۵ تحقیق کن»
Agent: چندین جستجو انجام میده → مقالات رو میخونه → اطلاعات مهم رو استخراج میکنه → یه گزارش خلاصه تحویل میده
مثال ۳: دستیار فروش
ابزارها: جستجوی محصول، بررسی موجودی، ثبت سفارش، ارسال ایمیل
سناریو: مشتری بگه «لپتاپ زیر ۳۰ میلیون میخوام»
Agent: دیتابیس رو سرچ میکنه → گزینهها رو نشون میده → بعد از انتخاب مشتری، موجودی رو چک میکنه → سفارش ثبت میکنه → ایمیل تأیید میفرسته
Multi-Agent — تیمی از Agentها
یه مفهوم پیشرفتهتر، Multi-Agent Systems هست — جایی که چند Agent با هم کار میکنن.
فکر کن مثل یه شرکته: یه Agent مدیر پروژهست و کار رو تقسیم میکنه. یه Agent برنامهنویسه و کد میزنه. یه Agent تسترِ و کد رو تست میکنه. یه Agent هم مستندساز هست و مستندات رو مینویسه.
هر Agent تخصص خودش رو داره و با بقیه هماهنگ میکنه. نتیجه نهایی بهتر از کاریه که یه Agent تنها میتونه انجام بده.
چالشهای Agent
Agentها قدرتمندن ولی چالشهایی هم دارن:
- امنیت: اگه Agent دسترسی به ابزارهای حساس داره (مثل حذف فایل)، باید حتماً محدودیت و تأیید داشته باشه
- هزینه: هر بار چرخش تو حلقه Agent یعنی یه بار صدا زدن LLM. اگه ۱۰ بار بچرخه، ۱۰ برابر هزینه داره
- قابلیت اطمینان: گاهی Agent تصمیم اشتباه میگیره. باید مکانیزم بازگشت (Fallback) داشته باشی
- حلقه بینهایت: ممکنه Agent گیر بیفته و همون کار رو تکرار کنه. باید حداکثر تعداد چرخش تعیین کنی
فریمورکهای Agent
لازم نیست Agent رو از صفر بسازی. فریمورکهای خوبی وجود دارن:
- LangGraph: از تیم LangChain. گرافمحور و انعطافپذیر. مناسب Agentهای پیچیده.
- CrewAI: مخصوص Multi-Agent. تعریف نقش و وظیفه برای هر Agent.
- AutoGen (مایکروسافت): ساخت مکالمات بین Agentها. خوب برای تحقیق.
- Anthropic Agents SDK: ابزار رسمی Anthropic برای ساخت Agent با Claude.
جمعبندی
تو این اپیزود یاد گرفتی:
- تفاوت Agent و Chatbot: عملگرایی، برنامهریزی، خودمختاری
- Tool Use / Function Calling چطور کار میکنه
- معماری ۴ بخشی Agent: ادراک، استدلال، عمل، حافظه
- حلقه Agent و الگوی ReAct
- مثالهای عملی و چالشهای Agent
- فریمورکهای محبوب
اپیزود بعدی: معماری کامل و نقشه راه — همه چیز کنار هم
اپیزود بعدی آخرین اپیزود این سریه. همه چیزی که یاد گرفتیم رو کنار هم میذاریم: مدل + RAG + Fine-tuning + Agent. معماری یه پروژه واقعی AI رو ترسیم میکنیم و یه نقشه راه ۶ ماهه برای ورود به این حوزه بهت میدیم. از دستش نده!
نظرات
هنوز نظری ثبت نشده. اولین نفر باشید!
نظر خود را بنویسید