سوالات مصاحبه سری 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.
评论
暂无已展示的评论。
发表评论(匿名)