Agent چیه و چه فرقی با Chatbot داره؟

قسمت ۱ ۱۵ دقیقه

مقدمه: یه سوال ساده

احتمالاً با ChatGPT یا Claude حرف زدی. تایپ کردی، جواب گرفتی، خوشحال شدی. ولی یه سوال: آیا اون چیزی که باهاش حرف زدی یه Agent بود یا یه Chatbot؟ فرقشون چیه اصلاً؟

توی این اپیزود می‌خوایم دقیقاً همین رو باز کنیم. قراره بفهمی Agent چیه، چه فرقی با Chatbot داره، و چرا Agent ها دارن آینده هوش مصنوعی رو شکل می‌دن.

Chatbot: پاسخ‌دهنده منفعل

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

ویژگی‌های اصلی یه Chatbot:

  • واکنشی (Reactive): فقط وقتی بهش پیام بدی، جواب می‌ده
  • بدون حافظه عمیق: معمولاً مکالمه قبلی رو یادش نمی‌مونه (یا خیلی محدود یادش می‌مونه)
  • بدون اقدام: نمی‌تونه کاری توی دنیای واقعی انجام بده — فقط متن تولید می‌کنه
  • بدون ابتکار: هیچ‌وقت خودش شروع‌کننده نیست

یه مثال ساده: بات پشتیبانی یه سایت فروشگاهی. می‌پرسی “سفارشم کجاست؟”، جواب می‌ده “لطفاً کد پیگیری رو وارد کن”. وارد می‌کنی، وضعیت رو نشون می‌ده. همین. هیچ کار دیگه‌ای نمی‌کنه.

Agent: موجود فعال و مستقل

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

فرض کن بهش بگی “برام یه بلیط هواپیما برای هفته بعد تهران-استانبول پیدا کن”. یه Chatbot فقط بهت لیست سایت‌های خرید بلیط رو می‌ده. ولی یه Agent:

  1. تاریخ‌های ممکن رو بررسی می‌کنه
  2. قیمت‌ها رو از چند منبع مقایسه می‌کنه
  3. با توجه به ترجیحات قبلی تو (مثلاً ایرلاین مورد علاقت) فیلتر می‌کنه
  4. بهترین گزینه‌ها رو بهت پیشنهاد می‌ده
  5. و حتی اگه اجازه بدی، خرید رو انجام می‌ده

تفاوت اساسی اینه: Chatbot جواب می‌ده، Agent عمل می‌کنه.

۴ قابلیت کلیدی یه Agent

هر Agent واقعی ۴ تا قابلیت اساسی داره. بیا هر کدوم رو با مثال ببینیم:

۱. ادراک (Perception)

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

مثال واقعی: یه Agent مانیتورینگ سرور، لاگ‌های سیستم رو می‌خونه و متوجه می‌شه که مصرف CPU داره غیرعادی بالا می‌ره. این ادراکه — فهمیدن وضعیت فعلی محیط.

در کد، Perception معمولاً یعنی دریافت ورودی از منابع مختلف:

class SimpleAgent:
    def perceive(self, environment):
        """دریافت اطلاعات از محیط"""
        user_message = environment.get("user_message")
        system_state = environment.get("system_metrics")
        recent_events = environment.get("event_log")
        
        return {
            "message": user_message,
            "cpu_usage": system_state.get("cpu", 0),
            "memory_usage": system_state.get("memory", 0),
            "recent_alerts": recent_events
        }

۲. استدلال (Reasoning)

بعد از اینکه Agent محیط رو درک کرد، باید فکر کنه. باید بفهمه چه اتفاقی داره می‌افته و چه کاری باید انجام بده.

مثال واقعی: همون Agent مانیتورینگ، بعد از دیدن CPU بالا، تحلیل می‌کنه: “مصرف CPU در ۵ دقیقه اخیر ۳ برابر شده. آخرین دیپلوی ۱۰ دقیقه پیش بوده. احتمالاً باگ توی کد جدیده.”
def reason(self, perception):
    """تحلیل وضعیت و تصمیم‌گیری"""
    if perception["cpu_usage"] > 90:
        # بررسی علت
        if self.recent_deploy_exists():
            return {
                "diagnosis": "احتمال باگ در دیپلوی اخیر",
                "confidence": 0.85,
                "suggested_action": "rollback_deploy"
            }
        else:
            return {
                "diagnosis": "افزایش ترافیک غیرعادی",
                "confidence": 0.6,
                "suggested_action": "scale_up"
            }
    return {"diagnosis": "وضعیت عادی", "suggested_action": "none"}

۳. اقدام (Action)

اینجاست که Agent از Chatbot جدا می‌شه. Agent فقط حرف نمی‌زنه — کار می‌کنه. می‌تونه API بزنه، فایل بسازه، ایمیل بفرسته، دیتابیس آپدیت کنه، یا هر کار دیگه‌ای.

مثال واقعی: Agent تصمیم می‌گیره دیپلوی رو rollback کنه. خودش دستور rollback رو اجرا می‌کنه، بعد به تیم توی Slack اطلاع می‌ده.
def act(self, decision):
    """اجرای تصمیم"""
    action = decision["suggested_action"]
    
    if action == "rollback_deploy":
        self.execute_rollback()
        self.notify_team(
            f"دیپلوی rollback شد. دلیل: {decision['diagnosis']}"
        )
    elif action == "scale_up":
        self.add_server_instance()
        self.notify_team("یه سرور جدید اضافه شد")

۴. یادگیری (Learning)

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

مثال واقعی: Agent یاد می‌گیره که هر بار تیم فرانت‌اند دیپلوی می‌کنه، احتمال بالا رفتن CPU بیشتره. پس دفعه بعد، قبل از دیپلوی اون تیم، آماده‌باش می‌ده.
def learn(self, action_taken, outcome):
    """یادگیری از نتیجه اقدام"""
    self.memory.store({
        "situation": self.current_perception,
        "action": action_taken,
        "outcome": outcome,
        "timestamp": datetime.now()
    })
    
    # به‌روزرسانی مدل تصمیم‌گیری
    if outcome["success"]:
        self.confidence_scores[action_taken] += 0.1
    else:
        self.confidence_scores[action_taken] -= 0.2

جدول مقایسه: Chatbot vs Agent

بذار یه مقایسه واضح ببینیم:

  • شروع‌کننده مکالمه: Chatbot → همیشه کاربر شروع می‌کنه | Agent → می‌تونه خودش شروع کنه
  • حافظه: Chatbot → محدود به session فعلی | Agent → حافظه کوتاه‌مدت و بلندمدت
  • اقدام: Chatbot → فقط تولید متن | Agent → اجرای ابزارها و API ها
  • برنامه‌ریزی: Chatbot → نداره | Agent → تجزیه وظایف پیچیده
  • یادگیری: Chatbot → ثابت | Agent → از تجربه یاد می‌گیره
  • استقلال: Chatbot → وابسته به ورودی کاربر | Agent → نیمه‌مستقل تا مستقل

Agent Loop: حلقه اصلی یه Agent

هر Agent یه حلقه اصلی داره که مدام تکرار می‌شه. بهش می‌گن Agent Loop یا Perception-Action Loop:

class AgentLoop:
    def __init__(self, tools, memory, llm):
        self.tools = tools
        self.memory = memory
        self.llm = llm
    
    def run(self, task):
        """حلقه اصلی Agent"""
        context = self.memory.recall(task)
        
        while not self.is_task_complete(task):
            # ۱. ادراک
            observation = self.perceive(task, context)
            
            # ۲. استدلال
            plan = self.reason(observation, context)
            
            # ۳. اقدام
            result = self.act(plan)
            
            # ۴. یادگیری
            context = self.update_context(result)
            self.memory.store(observation, plan, result)
        
        return self.compile_result()

این حلقه ساده‌ترین شکل یه Agent رو نشون می‌ده. ولی همین ایده ساده، پایه همه Agent های پیچیده‌تره.

مثال‌های واقعی Agent در دنیای امروز

Devin (Agent برنامه‌نویس)

Devin یه AI Agent ه که می‌تونه task برنامه‌نویسی بگیره، کد بنویسه، تست کنه، دیباگ کنه، و Pull Request بزنه. فقط جواب سوال کدنویسی نمی‌ده — واقعاً کد می‌نویسه و اجرا می‌کنه.

Auto-GPT

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

Claude Code

خود ابزاری که الان داری باهاش آشنا می‌شی! Claude Code یه Agent ه که می‌تونه فایل بخونه، کد بنویسه، دستور ترمینال اجرا کنه، و پروژه‌ها رو مدیریت کنه.

GitHub Copilot Workspace

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

چرا Agent ها آینده AI هستن؟

سه دلیل اصلی:

۱. پل بین دانش و عمل

LLM ها خیلی چیزا می‌دونن ولی نمی‌تونن کاری کنن. Agent این پل رو می‌زنه. دانش LLM + قابلیت اقدام = قدرت واقعی.

۲. خودکارسازی کارهای پیچیده

خیلی از کارهای روزمره ما چند مرحله‌ای هستن. Agent می‌تونه این مراحل رو خودش مدیریت کنه بدون اینکه هر مرحله رو دستی بهش بگیم.

۳. تطبیق‌پذیری

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

یه Agent ساده بسازیم

بیا یه Agent خیلی ساده بسازیم که بفهمی ساختار کلی چطوریه:

from openai import OpenAI

client = OpenAI()

class SimpleAssistantAgent:
    def __init__(self):
        self.conversation_history = []
        self.tools = {
            "calculate": self.calculate,
            "search_web": self.search_web,
        }
    
    def calculate(self, expression: str) -> str:
        """ماشین حساب ساده"""
        try:
            result = eval(expression)
            return f"نتیجه: {result}"
        except Exception as e:
            return f"خطا: {e}"
    
    def search_web(self, query: str) -> str:
        """جستجوی وب (شبیه‌سازی شده)"""
        return f"نتایج جستجو برای '{query}': ..."
    
    def run(self, user_input: str) -> str:
        self.conversation_history.append({
            "role": "user", 
            "content": user_input
        })
        
        # از LLM بخواه تصمیم بگیره
        response = client.chat.completions.create(
            model="gpt-4o",
            messages=self.conversation_history,
        )
        
        reply = response.choices[0].message.content
        self.conversation_history.append({
            "role": "assistant",
            "content": reply
        })
        
        return reply

# استفاده
agent = SimpleAssistantAgent()
print(agent.run("قیمت دلار امروز چنده؟"))

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

جمع‌بندی

خلاصه‌اش اینه:

  • Chatbot = پاسخ‌دهنده منفعل. منتظر سوال تو می‌مونه و فقط متن برمی‌گردونه.
  • Agent = موجود فعال. درک می‌کنه، فکر می‌کنه، اقدام می‌کنه، و یاد می‌گیره.
  • ۴ قابلیت کلیدی Agent: ادراک، استدلال، اقدام، یادگیری
  • Agent ها آینده AI هستن چون پل بین دانش و عمل رو می‌زنن.

توی اپیزود بعدی، می‌ریم سراغ Tool Use — یعنی وقتی AI دست و پا پیدا می‌کنه و می‌تونه از ابزارهای واقعی استفاده کنه. منتظر باش!

نظرات

هنوز نظری ثبت نشده. اولین نفر باشید!

نظر خود را بنویسید