← 返回列表

سوالات مصاحبه سری AI 6: سه روش اصلی عامل هوش مصنوعی: ReAct، Plan-and-Solve و Reflection

سه روش اصلی عامل هوش مصنوعی: ReAct، Plan-and-Solve و Reflection

عامل هوش مصنوعی (AI Agent) یک موجودیت هوشمند است که می‌تواند به طور خودکار محیط را درک کند، تصمیم بگیرد و اقدامات را اجرا کند. سه روش اصلی برای این کار وجود دارد: ReAct، Plan-and-Solve و Reflection. در ادامه هر یک را با نمودار جریان و نمونه کد معرفی می‌کنیم.

1. ReAct (استدلال + اقدام)

ایده اصلی: تناوب بین استدلال (Reasoning) و اقدام (Acting). عامل در هر مرحله ابتدا وضعیت فعلی و برنامه بعدی را بررسی می‌کند (استدلال)، سپس یک اقدام (مانند فراخوانی ابزار یا جستجوی اطلاعات) انجام می‌دهد و بر اساس نتیجه، دوباره استدلال می‌کند.

نمودار جریان:

[وضعیت اولیه] → [استدلال: فکر کردن به مرحله بعد] → [اقدام: اجرای عمل] → [مشاهده نتیجه] → [استدلال: به‌روزرسانی برنامه] → ... → [پاسخ نهایی]

نمونه کد (شبه کد):

def react_agent(question):
    context = []
    while not solved:
        # استدلال: تولید گام فکری
        thought = llm.generate_thought(question, context)
        # اقدام: انتخاب عمل بر اساس فکر
        action = llm.choose_action(thought)
        # اجرای عمل و دریافت مشاهده
        observation = execute_action(action)
        # افزودن فکر، عمل و مشاهده به زمینه
        context.append((thought, action, observation))
    return final_answer

مثال:
- کاربر می‌پرسد: "آب و هوای امروز تهران چطور است؟"
- عامل استدلال می‌کند: "باید API آب و هوا را فراخوانی کنم، به نام شهر و تاریخ نیاز دارم."
- اقدام: فراخوانی API آب و هوا (پارامترها: تهران، امروز)
- مشاهده: بازگشت "آفتابی، 25 درجه سانتی‌گراد"
- استدلال: "اطلاعات به دست آمد، می‌توانم پاسخ دهم."
- خروجی: "آب و هوای تهران امروز آفتابی و 25 درجه سانتی‌گراد است."

2. Plan-and-Solve

ایده اصلی: ابتدا یک برنامه کامل تدوین کنید (Plan)، سپس آن را گام به گام اجرا کنید (Solve). در مرحله برنامه‌ریزی، کار پیچیده به زیرمراحل تقسیم می‌شود و در مرحله اجرا، مراحل به ترتیب انجام می‌شوند و ممکن است بر اساس نتایج میانی برنامه تنظیم شود.

نمودار جریان:

[وظیفه] → [تدوین برنامه: تقسیم به زیرمراحل] → [اجرای مرحله 1] → [اجرای مرحله 2] → ... → [اجرای مرحله N] → [پاسخ نهایی]

نمونه کد:

def plan_and_solve(task):
    # مرحله برنامه‌ریزی
    plan = llm.generate_plan(task)  # مثال: ["جستجوی اطلاعات", "خلاصه‌سازی", "نوشتن گزارش"]
    context = {}
    for step in plan:
        # اجرای هر مرحله
        result = execute_step(step, context)
        context[step] = result
    # ترکیب نتایج
    final = llm.synthesize(context)
    return final

مثال:
- وظیفه: "نوشتن یک پست وبلاگ درباره عامل هوش مصنوعی"
- برنامه:
1. جستجوی تعریف عامل هوش مصنوعی و پیشرفت‌های اخیر
2. مطالعه و خلاصه‌سازی نکات کلیدی
3. نوشتن طرح کلی وبلاگ
4. پر کردن محتوا
5. ویرایش و انتشار
- اجرا: انجام هر مرحله به ترتیب و در نهایت خروجی وبلاگ.

3. Reflection

ایده اصلی: عامل در حین یا پس از اجرا، به رفتار خود بازتاب می‌دهد (Reflection)، نتیجه را ارزیابی می‌کند و اقدامات بعدی را بهبود می‌بخشد. معمولاً شامل خودانتقادی، تصحیح خطا یا بهینه‌سازی استراتژی است.

نمودار جریان:

[اقدام] → [مشاهده نتیجه] → [بازتاب: ارزیابی موفقیت] → [در صورت شکست: تنظیم استراتژی] → [اقدام مجدد] → ... → [موفقیت]

نمونه کد:

def reflection_agent(task):
    max_attempts = 3
    for attempt in range(max_attempts):
        action = llm.generate_action(task)
        result = execute(action)
        # بازتاب
        reflection = llm.reflect(task, action, result)
        if reflection['success']:
            return result
        else:
            # تنظیم شرح وظیفه یا استراتژی بر اساس بازتاب
            task = reflection['improved_task']
    return None

مثال:
- وظیفه: "محاسبه 1234 * 5678"
- اقدام: محاسبه مستقیم، نتیجه 7006652
- بازتاب: بررسی فرآیند محاسبه، تشخیص خطای انتقال
- تنظیم: محاسبه مجدد، نتیجه صحیح 7006652 (در واقع صحیح است)
- اگر همچنان خطا داشت، بازتاب ادامه می‌یابد تا صحیح شود.

خلاصه و مقایسه

روش ویژگی موارد استفاده
ReAct تناوب استدلال و اقدام، تنظیم پویا وظایف نیازمند تعامل بلادرنگ اطلاعات (مانند پرسش و پاسخ، جستجو)
Plan-and-Solve برنامه‌ریزی سپس اجرا، تقسیم ساختاری وظایف پیچیده چندمرحله‌ای (مانند نوشتن، تحلیل داده)
Reflection خودبازتاب و تصحیح، بهینه‌سازی تکراری وظایف نیازمند دقت بالا (مانند محاسبات ریاضی، تولید کد)

در عمل، اغلب این سه روش ترکیب می‌شوند، مثلاً افزودن مکانیزم بازتاب به ReAct، یا بازتاب پس از هر مرحله در Plan-and-Solve.

评论

暂无已展示的评论。

发表评论(匿名)