مقالهی Pre-Act یه بهبود مستقیم و منطقی روی معماری معروف ReAct ارائه میده. کاربرد اصلیش اینه که به ایجنتهای مبتنی بر LLM کمک میکنه تسکهای پیچیده که به چند مرحله و ابزار نیاز دارن رو با برنامهریزی قبلی و دقت بالاتری انجام بدن. این روش هم برای ایجنتهای مکالمهمحور (conversational) و هم غیرمکالمهمحور کاربرد داره.
مشکل اصلی ReAct اینه که استدلالش (Thought) معمولاً کوتهبینانه است و فقط برای اکشن بعدی تولید میشه. برای کارهای چند مرحلهای، این مدل تفکر کافی نیست و ایجنت ممکنه مسیر رو گم کنه. Pre-Act این مشکل رو با مجبور کردن مدل به تولید یک "نقشه راه چند مرحلهای" (multi-step plan) در همون ابتدای کار حل میکنه.
روند کار به این شکله:
۱. برنامهریزی (Plan): به جای یه Thought ساده، مدل یه پلن کامل با تمام مراحل لازم برای رسیدن به جواب نهایی رو تولید میکنه. مثلاً:
* مرحله ۱: اول باید از ابزار get_user_info استفاده کنم چون به اطلاعات کاربر نیاز دارم.
* مرحله ۲: بعد با اطلاعات دریافتی، ابزار check_inventory رو فراخوانی میکنم.
* مرحله ۳: در نهایت بر اساس موجودی، به کاربر جواب میدم.
۲. اجرا و بازبینی (Act & Revise): مدل مرحله اول پلن رو اجرا میکنه، observation رو از ابزار میگیره و بعد پلن رو برای مراحل بعدی بازبینی میکنه. یعنی وضعیت مراحل قبلی (Previous Steps) و مراحل بعدی (Next Steps) رو همیشه در context خودش نگه میداره. این باعث میشه ایجنت همیشه بدونه کجای مسیره و قدم بعدیش چیه.
نکتهی کلیدی این مقاله که خیلی برای ما مهمه، بحث fine-tuning مدلهای کوچیکتره. نویسندهها نشون میدن که با این روش میشه مدلهای اپن سورس مثل Llama-3.1-70B رو طوری fine-tune کرد که عملکردشون حتی از مدلهای غولپیکر و بستهای مثل GPT-4 هم بهتر بشه. این یعنی کاهش هزینه و تأخیر (latency) در کاربردهای واقعی.
نتایج تجربی خیلی قویه:
روی دیتاست Almita (که برای مدل out-of-domain حساب میشه)، مدل Llama-3.1-70B که با روش Pre-Act فاینتیون شده، در دقت اکشن (action accuracy) تا ۶۹.۵٪ و در نرخ تکمیل هدف (goal completion rate) تا ۲۸٪ از GPT-4 بهتر عمل کرده. این یه دستاورد خیلی مهمه و نشون میده که با دادههای باکیفیت و یه استراتژی هوشمندانه، میتونیم از مدلهای اپنسورس نتایج فوقالعادهای بگیریم.
استراتژی fine-tuning اونها هم جالبه و از curriculum learning استفاده میکنه:
۱. مرحله اول: مدل رو روی یه دیتاست بزرگ (مثل Glaive) با فرمت سادهی ReAct فاینتیون میکنن تا اصول اولیهی استفاده از ابزار رو یاد بگیره.
۲. مرحله دوم: با استفاده از LoRA، مدل رو روی یه دیتاست کوچیکتر ولی باکیفیتتر که با فرمت Pre-Act و توسط انسان لیبلگذاری شده، بیشتر فاینتیون میکنن تا توانایی برنامهریزی چند مرحلهای رو یاد بگیره.
به نظر من، Pre-Act تکامل طبیعی ReAct هست. اگه ReAct به مدلها یاد داد که چطور "عمل" کنن، Pre-Act بهشون یاد میده که چطور "استراتژی" بچینن. این یه جهش از یه کارگر ساده به یه مدیر پروژهست. بزرگترین چالش عملیاتی این روش، تهیهی دیتاست باکیفیت برای fine-tuning هست که نیاز به تخصص و هزینه داره، ولی نتایج نشون میده که این سرمایهگذاری کاملاً ارزشش رو داره.
📃 Pre-Act: Multi-Step Planning and Reasoning Improves Acting in LLM Agents
🛠 Join @LLMEngineers Community
Post #152
983