چیتشیت
ReAct، ReWOO، Reflexion و درخت افکار
ReAct, ReWOO, Reflexion and Tree of Thoughts
انتخاب، ساخت و متوقفسازی حلقهی استدلال ایجنت. ReAct، ReWOO، Reflexion، ToT، LATS، Self-Refine، CRITIC و CoT.
فهرست مطالب
مقایسهی چهار الگو در کنار هم
مقایسه| عامل | ReAct | ReWOO | Reflexion | ToT / LATS |
|---|---|---|---|---|
| نقشها | فکر، اقدام، مشاهده | برنامهریز، کارگران، حلکننده | کنشگر، ارزیاب، خودبازاندیش | خطمشی، تابع ارزش، جستوجو |
| فراخوانیهای LLM | یکی برای هر گام | یک طرح، یک حل | یک اجرا برای هر تلاش | یکی برای هر گره |
| مشاهدهها | در هر گام | نه در برنامهریز | به شکل تأمل در تلاش بعدی | ترکیبشده در تابع ارزش |
| هزینهی توکن | رشد با افزایش عمق | حدود 5 برابر کمتر روی HotpotQA | رشد با افزایش بافر | 100 تا 1000 برابر CoT |
| نتیجهی مقاله | ALFWorld +34 امتیاز | HotpotQA +4 دقت | برتر از ReAct در ALFWorld | Game of 24: از 4٪ به 74٪ |
| نقص اصلی | انفجار طول حلقه | طرح ایستا | پوسیدگی حافظه | ارزیاب نویزی |
چه زمانی از هر الگو استفاده کنیم
مفهومها- ReAct
- وظایف کوتاه، محیط ناشناخته، مدیریت استثنای واکنشی.
- ReWOO
- وظایف ساختاریافته با ابزارهای شناختهشده و شواهد موازی.
- Plan-and-Execute
- شبیه ReWOO، همراه با بازبرنامهریزی پس از اجرای بخشی از کار.
- Plan-and-Act
- افقهای طولانی (بیش از 30 گام)، کار با وب، موبایل یا کامپیوتر.
- Reflexion
- سیگنال شکست واضح و کلاسی از وظایف که تکرار میشوند.
- ToT / LATS
- تابع ارزش ارزان و قابلاعتماد. درستی بر زمان واقعی ارجحیت دارد.
- Self-Refine
- بدون مدل اعتبارسنج خارجی. یک مدل واحد تولید و نقد میکند.
- CRITIC
- مدل اعتبارسنج خارجی وجود دارد: جستوجو، کد، ماشینحساب، تستها.
ReAct loop: AgentLoop.run
گامبهگام- کاربرپیام به عنوان یک نوبت
userوارد تاریخچه میشود. - LLMمتد
respond(history)یک فکر و یک اقدام، یاfinishبرمیگرداند. - ToolRegistryمتد
dispatch(call)ابزار را با نام اجرا میکند. - Formattera bad tool or bad args returns an
error:string, not a crash. - حلقهنوبت اقدام و مشاهدهی آن وارد تاریخچه میشوند. رفتن به گام 2.
- توقف
finish، نبود فراخوانی ابزار، سقف نوبتها، سقف توکنها یا فعالشدن گاردریل. - سهمیهپس از
max_turnsحلقه پیغام «budget exhausted» برمیگرداند.
ReWOO: برنامهریزی، واکشی، حل
معماریآزمون Reflexion
گامبهگام- کنشگرمتد
actor.act(memory)یک مسیر کامل اجرای کاندید برمیگرداند. - ارزیابمتد
binary_evaluator(attempt, TARGET)موفقیت و اختلاف (delta) را برمیگرداند. - خودبازاندیشیک خط مینویسد، برای مثال «مقادیر بزرگتری انتخاب کن».
- حافظهی رویدادی (EpisodicMemory)متد
memory.addآن را ذخیره میکند. پس ازmax_lenقدیمیترینها حذف میشوند. - تلاش بعدیاز نو آغاز میشود اما تأملها را میبیند. یک موفقیت اجرا را پایان میدهد.
LATS: یک تکرار MCTS
گامبهگام- انتخابحرکت از ریشه به برگ با
Q(s, a) + c * sqrt(ln N(s) / N(s, a)). - گسترشتولید K فرزند با خطمشی.
- شبیهسازیپیشروی از یک فرزند. امتیازدهی به برگ با تابع ارزش.
- پسانتشارافزودن 1 به
visitsو پاداش بهvalue_sumدر طول مسیر.
وظایف در قالب کد
کار و کد| وظیفه | کد |
|---|---|
| ثبت یک ابزار | tools.register("calculator", calculator) |
| مرتبسازی یک DAG برنامه | topological(plan) |
| پر کردن ارجاعات #E | resolve_references(value, evidence) |
| Reflexion همراه با حافظه | run_reflexion(max_trials=4, use_memory=True) |
| ToT سطحاول (BFS) | tot_bfs(root_tot) |
| جستوجوی LATS | mcts(root_lats, iterations=80, rng=rng) |
| حلقه ناقد (CRITIC) | run_loop("world facts", use_critic=True) |
پایپلاین تشدید CoT
کدpython
single_answer, _ = few_shot_cot_solve(question, examples, client, model) # دمای 0.0
sc_answer, confidence, reasonings, votes = self_consistency_solve(
question, examples, client, model, n_samples=5
) # دمای 0.7، رای اکثریت
if confidence >= 0.8 and single_answer == sc_answer:
return sc_answer # توافق 4 نمونه از 5 نمونه
tot_answer, tot_reasoning = tree_of_thought_solve(
question, client, model, breadth=3, depth=2
) # تشدید مسائل دشوار
نردبان استدلال پرامپت (GPT-5، GSM8K)
مقایسه| عامل | Zero-Shot CoT | Few-Shot CoT | خودسازگاری (N=5) | درخت افکار |
|---|---|---|---|---|
| فراخوانیهای API | 1 | 1 | 5 | 10-40+ |
| سربار توکن | 50-200 توکن | 300-600 توکن | 5 برابر هزینهی توکن | 10-40 برابر هزینهی توکن |
| دقت | 97٪ | 98٪ | 98.5٪ | 74٪ روی Game of 24 |
| بهترین گزینه برای | ارتقای سریع استدلال | حداکثر دقت در تکفراخوانی | استدلال در موقعیتهای حساس | مسائل جستوجو/برنامهریزی |
پیشفرضها در کد درس
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
max_turns | 12 | سهمیهی نوبتهای AgentLoop. دمو روی 10 تنظیم شده است |
max_len | 6 | اندازهی EpisodicMemory |
max_iters | 4 | سقف حلقهی اصلاح در run_loop |
`c` in `uct` | 1.4 | وزن کاوش |
max_expansions_per_level | 8 | عرض جبهه در ToT BFS |
max_depth | 3 | عمق ToT BFS |
n_samples | 5 | آرای خودسازگاری |
temperature | 0.7 | مسیرهای نمونهبرداریشده. در دمای 0.0 همهی نمونهها منطبق هستند |
عیبیابی
عیبیابیایجنت روی خطاهای 400 توهم موفقیت دارد
- علت
- خطا بازخورد داده نشده است
- راهحل
- تبدیل هر خطا به یک رشتهی مشاهده
یک صفحهی وب به ایجنت دستور میدهد
- علت
- فروپاشی مرز اعتماد
- راهحل
- تنها دستورات مستقیم کاربر به عنوان مجوز پذیرفته شوند
«cyclic plan or unresolved reference»
- علت
- یک گام به گرهای ناموجود ارجاع دارد
- راهحل
- اصلاح ارجاعات #E در طرح
اجراهای مجدد کُندتر میشوند، توصیههای منسوخ
- علت
- پوسیدگی حافظه
- راهحل
- فشردهسازی یا TTL برای تأملها
تأمل کمکی نمیکند
- علت
- شکست بیرونی، قطعی شبکه
- راهحل
- اجراهای ناپایدار و موردی ذخیره نشوند
ناقد همیشه میگوید خوب به نظر میرسد
- علت
- حلقهی تایید صوری
- راهحل
- استفاده از پرامپتهای ساختاریافتهی متفاوت
جستوجو پاسخ اشتباهی با امتیاز بالا پیدا میکند
- علت
- ارزیاب نویزی
- راهحل
- استفاده از جستوجو تنها در صورت وجود یک تابع ارزش قابلاعتماد
پرسشها
پرسش و پاسخ- چرا ReWOO توکن کمتری مصرف میکند؟
- پرامپتهای ReAct شامل تکتک گامهای پیشین هستند. کارگران ReWOO تنها فراخوانی ابزار را دریافت میکنند.
- چرا یک مدل 7B میتواند برنامهریزی کند؟
- برنامهریز مشاهدهها را نمیبیند. این مدل از طرحهای آموزگار 175 میلیاردی یاد میگیرد.
- LATS چه چیزی به ToT اضافه میکند؟
- الگوریتم MCTS. مدل LLM نقش خطمشی، تابع ارزش و خودبازاندیش را دارد.
- چرا Self-Refine تاریخچه را حفظ میکند؟
- مرحلهی بازبینی خروجیها و نقدهای قبلی را میبیند. بدون تاریخچه، کیفیت به شدت افت میکند.
- چرا CRITIC بهتر از Self-Refine است؟
- یک توهم غالباً برای مدلی که آن را تولید کرده متقاعدکننده به نظر میرسد.
- افزودن CoT به یک مدل استدلالی؟
- خیر. مدلهای سری o و DeepSeek-R1 به صورت درونی CoT را اجرا میکنند.
نکات کاربردی
نکتهها- با سادهترین الگو شروع کنید. یک فراخوانی ابزار به همراه خلاصهسازی نیازی به ReWOO ندارد.
- حلقهی اصلاح را در صورت تایید مدل اعتبارسنج متوقف کنید. همچنین آن را با
max_iterationsمحدود نمایید. - ضریب انشعاب K را بین 3 تا 5 نگه دارید. K=10 هزینه را به شدت منفجر میکند.