ReAct Prompting (FA)

From Systems analysis Wiki
Jump to navigation Jump to search

ReAct (مخفف Reason + Act، به معنای «استدلال کن و عمل کن») — یک پارادایم طراحی پرامپت (prompting) برای مدل‌های زبانی بزرگ (LLM) است که به آن‌ها امکان می‌دهد وظایف پیچیده را از طریق تناوب استدلال‌های کلامی (افکار) و اقداماتی که با محیط خارجی تعامل دارند، حل کنند[1]. این روش در سال ۲۰۲۲ توسط پژوهشگران Google Research و دانشگاه پرینستون پیشنهاد شد و به یک رویکرد بنیادی در توسعه عامل‌های هوشمند تبدیل گردید.

نوآوری کلیدی ReAct در ترکیب استدلال منطقی — که مشخصه تکنیک‌هایی مانند Chain-of-Thought (CoT) است — با اجرای اقدامات خارجی، مانند جستجوی اطلاعات یا تعامل با رابط‌های برنامه‌نویسی (API) نهفته است. این امر به مدل اجازه می‌دهد تا برنامه خود را به‌صورت پویا تصحیح کند، واقعیت‌ها را بررسی نماید و بر محدودیت‌های دانش درونی خود — که اغلب قدیمی یا ناقص است — غلبه کند[2].

پیش‌زمینه و تاریخچه

پیش از ظهور ReAct، دو رویکرد اصلی اما جداگانه برای استفاده از LLM در حل وظایف پیچیده وجود داشت:

  • زنجیره استدلال (Chain-of-Thought, CoT): مدل استدلال‌های منطقی گام‌به‌گام برای حل مسئله تولید می‌کند، اما این کار را در «خلأ اطلاعاتی» و صرفاً با تکیه بر دانش درونی خود انجام می‌دهد. این امر اغلب به خطاهای واقعی و «توهم‌زایی» منجر می‌شود[1].
  • برنامه‌ریزی اقدام (Act-Only): مدل یک توالی از اقدامات برای تعامل با محیط خارجی (مثلاً در بازی‌های متنی) تولید می‌کند، اما بدون برنامه‌ریزی سطح بالای صریح. چنین سیستم‌هایی در مواجهه با خطاها عملکرد ضعیفی دارند و نمی‌توانند استراتژی خود را هنگام برخورد با شرایط غیرمنتظره تطبیق دهند.

ReAct برای ترکیب هم‌افزایانه نقاط قوت هر دو رویکرد ساخته شد. این روش به مدل اجازه می‌دهد نه‌تنها استدلال کند، بلکه استدلال‌های خود را بر پایه واقعیت‌های دنیای خارج مستقر سازد و اقدامات خود را بر اساس بازخورد دریافتی تطبیق دهد.

مکانیزم کارکرد: چرخه «فکر — عمل — مشاهده»

ReAct در قالب یک چرخه تکراری عمل می‌کند که شامل سه مؤلفه کلیدی است. مدل به‌صورت متوالی یک مسیر متشکل از گام‌های Thought، Action و Observation تولید می‌کند.

نمونه ساختار پرامپت:

سؤال: پایتخت شهری که مخترع معروف به جریان متناوب در آن متولد شده چیست؟

Thought 1: باید بفهمم چه کسی جریان متناوب را اختراع کرد. سپس محل تولد او را بیابم و بررسی کنم آیا آن شهر پایتخت است یا خیر.

Action 1: Search[مخترع جریان متناوب]

Observation 1: جریان متناوب (AC) توسط نیکولا تسلا توسعه یافت و ترویج شد.

Thought 2: حالا باید بدانم نیکولا تسلا کجا متولد شد.

Action 2: Search[محل تولد نیکولا تسلا]

Observation 2: نیکولا تسلا در روستای اسمیلیان، امپراتوری اتریش (کرواسی امروزی) متولد شد.

Thought 3: اسمیلیان پایتخت نیست. بنابراین سؤال پاسخ قطعی در این فرمول‌بندی ندارد. با این حال، تسلا مدت طولانی در آمریکا زندگی و کار کرد. شاید منظور پایتخت کشوری است که او کشفیات اصلی‌اش را در آن انجام داد. این سؤال پیچیده‌تری است. باید واقعیت را بر اساس محل تولد بیان کنم. شهر تولد او پایتخت نیست.

Final Answer: مخترع مرتبط با جریان متناوب، نیکولا تسلا، در اسمیلیان (کرواسی) متولد شد که پایتخت نیست.

فکر (Thought)

مدل یک استدلال درونی تولید می‌کند که در آن مسئله را تحلیل می‌کند، آن را به زیرمسائل تجزیه می‌نماید، برنامه اقدام را شکل می‌دهد یا تصحیح می‌کند و وضعیت جاری را ارزیابی می‌نماید. این گام بر محیط خارجی تأثیری ندارد، بلکه برای برنامه‌ریزی درونی به کار می‌رود.

عمل (Action)

بر اساس استدلال خود، مدل یک اقدام خارجی انجام می‌دهد و به یکی از ابزارهای موجود مراجعه می‌کند. نمونه‌هایی از اقدامات:

  • Search [پرس‌وجو] — برای جستجوی اطلاعات در پایگاه دانش (مثلاً ویکی‌پدیا).
  • Click [عنصر] — برای ناوبری در صفحات وب.
  • API_call [پارامترها] — برای فراخوانی یک API خارجی.

مشاهده (Observation)

سیستم یا ابزار خارجی اقدام را اجرا کرده و نتیجه (مشاهده) را بازمی‌گرداند. این می‌تواند یک قطعه متن، پاسخ API یا پیام خطا باشد. مدل از این مشاهده برای شکل‌دهی به فکر بعدی استفاده می‌کند و حلقه بازخورد را می‌بندد[2].

نتایج آزمایشی و کارایی

نویسندگان ReAct روش را بر روی طیف گسترده‌ای از وظایف آزمایش کردند و برتری آن را نسبت به رویکردهای CoT و Act-Only نشان دادند.

نتایج ReAct در مقایسه با روش‌های پایه در معیارسنجی‌های کلیدی[1]
معیارسنجی وظیفه ReAct (موفقیت/دقت) Chain-of-Thought (موفقیت/دقت) Act-Only (موفقیت/دقت)
FEVER بررسی واقعیت 87.6% 82.8% 70.1%
HotpotQA سؤالات چندمرحله‌ای 31.8% 36.3% 17.0%
ALFWorld بازی متنی (برنامه‌ریزی) 71% 10% 13%
WebShop ناوبری وب 40% - 30.1%
  • در وظایف نیازمند بررسی واقعیت (FEVER)، ReAct به‌طور چشمگیری از CoT پیشی می‌گیرد، زیرا می‌تواند اطلاعات را تأیید کند.
  • در وظایف برنامه‌ریزی تعاملی (ALFWorld، WebShop)، ReAct برتری عظیمی نشان می‌دهد، زیرا می‌تواند با محیط متغیر تطبیق یابد.
  • در وظایف استدلال محض (HotpotQA)، CoT ممکن است نتایج قابل‌مقایسه یا حتی بهتری داشته باشد. با این حال، رویکرد ترکیبی ReAct+CoT بهترین عملکرد را نشان داد و به ۳۵٪ در HotpotQA رسید[1].

نقد و محدودیت‌ها

علی‌رغم کارایی خود، ReAct دارای تعدادی محدودیت و آسیب‌پذیری است.

  • «شکنندگی» (Brittleness): پژوهش‌های بعدی نشان دادند که موفقیت ReAct ممکن است نه چندان به هم‌افزایی واقعی استدلال و عمل، بلکه به شباهت نحوی میان نمونه‌های موجود در پرامپت و وظیفه جاری مربوط باشد. مدل ممکن است الگوی `Thought-Action-Observation` را بدون درک کامل معناشناسی استدلال‌ها دنبال کند[3].
  • هزینه‌های محاسباتی: هر چرخه ReAct حداقل یک فراخوانی LLM و یک مراجعه به ابزار خارجی نیاز دارد که آن را در مقایسه با prompting استاندارد کند و پرهزینه می‌کند.
  • وابستگی به ابزار: اثربخشی عامل مستقیماً به کیفیت و قابلیت اطمینان ابزارهای موجود بستگی دارد. یک پاسخ نادرست یا پر از نویز از API می‌تواند استدلال‌های مدل را به مسیر اشتباه بکشاند.

اهمیت و توسعه بیشتر

ReAct به یک نقطه عطف مهم در توسعه هوش مصنوعی تبدیل شد و نشانگر گذار از سیستم‌های مولد به سیستم‌های عاملی بود. این روش پایه مفهومی و عملی بیشتر چارچوب‌های مدرن برای ساخت عامل‌ها را بنا نهاد، از جمله:

  • LangChain
  • LlamaIndex
  • AutoGen

ایده‌های ReAct نقطه آغازی برای معماری‌های استدلالی پیچیده‌تر بودند، مانند Reflexion (که یک چرخه خودبازتابی پس از شکست‌ها اضافه می‌کند) و Tree of Thoughts (ToT) (که چندین مسیر استدلال را به‌صورت موازی بررسی می‌کند).

پیوندها

  • صفحه رسمی پروژه ReAct
  • توضیحات ReAct در راهنمای Learn Prompting
  • Google Research (2022). ReAct: Synergizing Reasoning and Acting in Language Models (blog post). Google Research Blog.

منابع

  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
  • Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
  • Shinn, N. et al. (2023). Reflexion: Language Agents with Verbal Reinforcement Learning. arXiv:2303.11366.
  • Verma, V. et al. (2024). On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models. arXiv:2405.13966.
  • Yao, S. et al. (2022). WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents. arXiv:2207.01206.
  • Shridhar, M. et al. (2020). ALFWorld: Aligning Text and Embodied Environments for Interactive Learning. arXiv:2010.03768.
  • Qin, L. et al. (2023). AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Collaboration. arXiv:2308.08155.
  • Thorne, J. et al. (2018). FEVER: A Large-Scale Dataset for Fact Extraction and Verification. arXiv:1803.05355.
  • Yang, Z. et al. (2018). HotpotQA: A Dataset for Diverse, Explainable Multi-hop Question Answering. arXiv:1809.09600.

یادداشت‌ها

  1. 1.0 1.1 1.2 1.3 Yao, S., Zhao, J., Yu, D., et al. (2022). «ReAct: Synergizing Reasoning and Acting in Language Models». arXiv preprint arXiv:2210.03629. [۱]
  2. 2.0 2.1 «ReAct: Synergizing Reasoning and Acting in Language Models». Google Research Blog. [۲]
  3. Verma, V., et al. (2024). «On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models». arXiv preprint arXiv:2405.13966. [۳]