مقاله ReAct یه الگوی ساده ولی خیلی قدرتمند رو برای مدلهای زبانی بزرگ (LLM) معرفی میکنه که بهشون اجازه میده همزمان هم استدلال (Reasoning) کنن و هم عمل (Acting). کاربرد اصلیش ساختن ایجنتهای هوشمندیه که بتونن با ابزارهای خارجی (مثل API یا محیطهای تعاملی) کار کنن و تسکهای پیچیده رو حل کنن، بدون اینکه دچار توهم (hallucination) بشن.
ایدهی اصلی اینه که مدلها CoT فقط در ذهن خودشون استدلال میکنن و به دنیای خارج دسترسی ندارن. این باعث میشه خیلی وقتها اطلاعات غلط یا تاریخ مصرف گذشته رو به عنوان فکت ارائه بدن. از طرف دیگه، مدلهای Act-only فقط میتونن یه سری اکشن رو پشت سر هم تولید کنن، ولی توانایی برنامهریزی سطح بالا، ردیابی وضعیت، یا اصلاح برنامه در صورت بروز خطا رو ندارن.
معماری ReAct این دو تا رو با هم ترکیب میکنه و یک حلقه Thought -> Action -> Observation به وجود میاره:
۱. فکر (Thought): مدل اول یه استدلال درونی تولید میکنه. مثلاً "برای حل این مسئله، باید اول فلان اطلاعات رو از ویکیپدیا پیدا کنم." این thought به مدل کمک میکنه تسک رو به مراحل کوچیکتر بشکنه و استراتژی بچینه.
۲. عمل (Action): بر اساس اون فکر، مدل یه اکشن قابل اجرا تولید میکنه. مثلاً search['some entity'].
۳. مشاهده (Observation): این اکشن در یک محیط خارجی (مثلاً API ویکیپدیا) اجرا میشه و نتیجهش به عنوان یه مشاهده به مدل برمیگرده.
این حلقه تکرار میشه تا مدل به جواب نهایی برسه. اینطوری، استدلال مدل همیشه به اطلاعات واقعی و بهروز از دنیای خارج متصل (grounded) باقی میمونه.
نتایج مقاله روی چندتا بنچمارک:
روی تسکهای دانشمحور مثل HotpotQA (پرسش و پاسخ چند مرحلهای)، ReAct به شکل قابل توجهی از CoT قابل اعتمادتره. تحلیل خطاها نشون میده که ۵۶٪ از شکستهای CoT به خاطر توهم اطلاعاته، در حالی که ReAct با دسترسی به اطلاعات خارجی، این مشکل رو تا حد زیادی نداره.
روی تسکهای تصمیمگیری تعاملی مثل ALFWorld (یه بازی متنی) و WebShop (شبیهساز خرید آنلاین)، ReAct با اختلاف زیاد، مدلهای مبتنی بر Imitation Learning و Reinforcement Learning رو شکست میده. مثلا روی ALFWorld نرخ موفقیت رو تا ۳۴٪ و روی WebShop تا ۱۰٪ بالا میبره، اونم در حالی که فقط با یکی دو تا مثال (few-shot) پرامپت شده. این نشون میده که توانایی استدلال پویا، یک مهارت بسیار عمومیتر و کارآمدتر از تقلید صرف از روی هزاران نمونهی انسانیه.
به نظر من، ReAct فقط یه تکنیک پرامپتینگ نیست؛ یه الگوی معماری (architectural pattern) برای ساخت ایجنتهای خودمختاره. تمام فریمورکهای مدرن مثل LangChain یا LlamaIndex که بحث Tool-use رو پیادهسازی میکنن، در هستهی خودشون از همین ایده الهام گرفتن. این مقاله، پشتوانهی علمی و تجربی این معماریه.
البته این روش بینقص هم نیست. بزرگترین چالش اینه که اگه ابزار خارجی اطلاعات نامفید یا خطا برگردونه، مدل ممکنه گیج بشه و تو یه حلقه تکراری گیر کنه. توانایی بازیابی از خطاهای ابزار هنوز جای کار داره. مقاله هم اشاره میکنه که برای تسکهای پیچیده، fine-tuning روی دادههایی با فرمت ReAct میتونه عملکرد رو به شکل چشمگیری بهتر از پرامپتینگ صرف کنه.
در نهایت، ReAct به ما نشون میده که ترکیب استدلال درونی با تعامل با دنیای بیرون، کلید ساختن سیستمهای هوش مصنوعی قدرتمندتر، قابل اعتمادتر و البته قابل تفسیرتره. چون میتونیم قدم به قدم ببینیم مدل به چی فکر کرده و چرا یه تصمیم خاص رو گرفته.
📃
ReAct: Synergizing Reasoning and Acting in Language Models🛠 Join
@LLMEngineers Community