بازنگری: یادگیری تقویت کلامی
Type: Build
Languages: Python (stdlib)
Prerequisites: Phase 14 · 01 (Agent Loop), Phase 14 · 02 (ReWOO)
Time: ~60 minutes
اهداف یادگیری
- سه عنصر بازتاب (کارگر، ارزیابی کننده، خود بازتاب کننده) و نقش حافظه حادیثی را نام ببرید.
- یک حلقه بازتاب stdlib را با ارزیابی کننده دوگانه، بازتاب بازتاب و تلاش های جدید دوباره اجرا کنید.
- برای یک کار مشخص بین منابع بازخورد مقیاس، هوریستیک و خود ارزیابی شده انتخاب کنید.
- توضیح بده که چرا تقویت کلامی اشتباهاتی را می گیرد که به هزاران آزمایش برای اصلاح RL مبتنی بر گرادینت نیاز دارد.
مشکل
یک عامل یک کار را شکست می دهد. در RL استاندارد شما هزاران آزمایش دیگر را اجرا می کنید، gradients محاسبه، وزنه های تازه. گران قیمت، آهسته، و اکثر عوامل تولید برای هر شکست بودجه آموزشی ندارند.
بازنگری (شین و همکارانش، arXiv:2303.11366) یک سوال متفاوت را مطرح می کند: اگر عامل فقط در مورد اینکه چرا شکست خورد فکر کرد و دوباره با این فکر در پیام خود تلاش کرد؟ هیچ بروزرسانی وزن. هیچ گرادیانتی. فقط زبان طبیعی ذخیره شده بین آزمایشات.
نتیجه: در ALFWorld این سیستم از ReAct و سایر خط های پایه غیر دقیق تر را پیروز می کند. در HotpotQA این سیستم نسبت به ReAct بهبود می یابد. در تولید کد (HumanEval / MBPP) این سیستم حالت پیشرفته را در آن زمان تنظیم می کند. همه این ها بدون یک گام گرادینت تنها.
مفهوم
سه عنصر
Actor : generates a trajectory (ReAct-style loop)
Evaluator : scores the trajectory — binary, heuristic, or self-eval
Self-Reflector: writes a natural-language reflection on the failureو یک ساختار داده:
Episodic memory: list of prior reflections, prepended to the next trial's promptیک آزمایش به بازیگر انجام می شود. ارزیابی کننده آن را نمره می دهد. اگر نمره پایین باشد، خودعکاس بازتاب تولید می کند ("من ابزار اشتباهی را انتخاب کردم زیرا سوال را به عنوان سؤال درباره X وقتی درباره Y می پرسید اشتباه خواندم"). بازتاب به حافظه قسمت می رود. آزمایش بعدی تازه شروع می شود اما بازتاب را می بیند.
سه نوع ارزیابی کننده
- Scalar سیگنال دوگانه خارجی. ALFWorld موفق یا شکست خورده است. آزمایش های HumanEval موفق یا شکست خورده است. ساده ترین، بالاترین سیگنال.
- Heuristic امضای شکست پیش تعریف شده. "اگر عامل دو بار در یک ردیف عمل مشابهی انجام دهد، نشان داده شود که گیر کرده است". "اگر مسیر بیش از ۵۰ مرحله باشد، نشان داده شود که ناکارآمد است".
- Self-evaluated LLM مسیر خود را نمره می دهد. در صورتی که حقیقت پایه ای در دسترس نباشد مورد نیاز است. سیگنال ضعیف تر؛ با تأیید مبتنی بر ابزار به خوبی همراه است (درسی 05 CRITIC).
پیش فرض 2026 ترکیبی است: مقیاس زمانی که در دسترس است، خود- برابر زمانی که در دسترس نیست، heuristics به عنوان ریل های ایمنی.
چرا این موضوع به طور کلی
بازتاب یک الگوریتم جدید نیست بلکه یک الگوی نامگذاری شده است. تقریباً هر عامل تولید "خود درمانی" نوعی نوع را اجرا می کند:
- محاسبه زمان خواب لتا (درسی 08): یک عامل جداگانه در مورد مکالمات گذشته بازتاب می کند و به بلوک های حافظه می نویسد.
- کلوید کوید
CLAUDE.md/ "از حافظه ذخیره کنید": بازتاب هایی که به عنوان یادگیری گرفته شده و به جلسات آینده اضافه شده است. - جریان کار
/learn-ruleدستور: اصلاحات به عنوان قوانین صریح ضبط شده است. - گرهای بازتاب لینگ گراف: گره ای که در صورت نیاز خروجی و مسیرها را برای اصلاح نمره می گیرد.
همه از همان بینش می آیند: زبان طبیعی یک رسانه غنی به اندازه کافی برای حمل "آنچه از شکست یاد گرفتم" بین دو راه است.
وقتی کار می کنه و وقتی کار نمی کنه
بازتاب زمانی موثر است که:
- یک سیگنال شکست واضح وجود دارد (شکست آزمون، خطا ابزار، پاسخ اشتباه).
- کلاس کار قابل تکرار است (مثل نوع سوال را می توان دوباره پرسید).
- بازتاب برای بهبود مسیر (بودج اقدام کافی) جای دارد.
بازتاب کمک نمی کند وقتی:
- مامور در اولين تلاش موفق شده
- شکست خارجی است (شبکه خراب شده، ابزار خراب شده) بازتاب در "شبکه خراب شده" به اجرای آینده کمک نمی کند.
- بازتاب به خرافات تبدیل می شود که داستان یک بار فرار را ذخیره می کند.
2026 گدا: پوسیدگی حافظه. بازتاب ها جمع می شوند؛ برخی از آنها منسوخ یا اشتباه هستند؛ باز اجرا با افزایش بازخورد اپیزودی کند تر می شود. کاهش: فشرده سازی دوره ای (درس 06) ، TTL در بازتاب ها یا یک عامل تمیز کردن زمان خواب جداگانه (Letta).
آن را بسازید
code/main.pyبازتاب در یک پازل اسباب بازی را اجرا می کند: یک لیست سه عنصر را تولید کنید که به یک هدف منجر می شود. بازیگر لیست های کاندیداها را صادر می کند؛ ارزیابی کننده مقدار را بررسی می کند؛ خود بازتاب کننده یک خط در مورد آنچه اشتباه شده است می نویسد. بازتاب به حافظه قسمت برای آزمایش بعدی می رود.
اجزای:
Actorیک سیاست نوشته شده که وقتی بازتاب می بیند بهتر می شود.Evaluator.binary()از مبلغ هدف عبور/فاش شدنSelfReflectorتشخیص یک خط از شکست را ایجاد می کند.EpisodicMemoryیک لیست محدود با سیمانیک TTL.
اجرا کن
python3 code/main.pyردیابی سه آزمایش را نشان می دهد. آزمایش 1 شکست می خورد، بازتاب ذخیره می شود، آزمایش 2 بازتاب را می بیند و بهبود می یابد اما هنوز هم شکست می یابد، آزمایش 3 موفق می شود. با یک راه اندازی پایه (هیچ بازتاب) مقایسه کنید.
ازش استفاده کن
لنگ گراف بازتاب را به عنوان یک الگوی گره می فرستد./memoryفرماندهی و جریان کار/learn-ruleبازتاب بخش قسمت ها را به عنوان یک فایل نشان داده خارج کنید. محاسبات زمان خواب لتا خود رفلکتور را در زمان توقف اجرا می کند تا عامل اصلی محدود به تاخیر بماند. OpenAI Agents SDK مستقیماً Reflexion را ارسال نمی کند؛ شما آن را با Guardrail سفارشی ایجاد می کنید که مسیرهای را با امتیاز و حافظه رد می کند.Sessionکه در هر دو راه زنده می ماند.
-باده
outputs/skill-reflexion-buffer.mdایجاد و نگهداری یک بازخورد اپیزودی با عکاسی، TTL و تخفیف. با توجه به یک کلاس کار و شکست، آن را یک منعکس کننده است که در واقع کمک به آزمایش بعدی (نه یک عمومی "به دقت بیشتر").
تمرینات
- از دوگانه به ارزیابی کننده اسکالر که یک متریک فاصله را باز می گرداند (چه فاصله ای از هدف دارد) تغییر دهید. آیا آن سریعتر به هم می پیوندد؟
- اگر به این موضوع توجه کنید، آیا این موضوع باعث درد یا کمک می شود؟
- ارزیابی هوریستیک را پیاده سازی کنید: اگر عمل مشابه تکرار شود، آزمایش را به عنوان گیر کرده نشان دهید. این چگونه با خودعکاس تعامل دارد؟
- بازتاب را با یک بازیگر مخالف اجرا کنید که بازتاب را نادیده می گیرد. حداقل بازتاب سریع مهندسی چیست که بازیگر را مجبور می کند آنها را متوجه شود؟
- بخش 4 مقاله بازتاب در AlfWorld را بخوانید. بهبود 130٪ نرخ موفقیت را از نظر مفهومی تکرار کنید: کلید دلتا در مقابل وانیلی ReAct چیست؟
اصطلاحات کلیدی
| Term | What people say | What it actually means |
|---|---|---|
| Reflexion | "Self-correction" | Shinn et al. 2023 — Actor, Evaluator, Self-Reflector plus episodic memory |
| Verbal reinforcement | "Learning without gradients" | Natural-language reflection prepended to the next trial's prompt |
| Episodic memory | "Per-task reflections" | Bounded buffer of prior reflections for one task class |
| Scalar evaluator | "Binary success signal" | Pass/fail or numeric score from ground truth |
| Heuristic evaluator | "Pattern-based detector" | Predefined failure signatures (e.g. stuck-loop, too-many-steps) |
| Self-evaluator | "LLM-as-judge on own trace" | Lower-signal fallback when no ground truth — pair with tool-grounded verification |
| Memory rot | "Stale reflections" | Episodic buffer fills with obsolete entries; fix with compaction/TTL |
| Sleep-time reflection | "Async self-reflection" | Run Self-Reflector off the hot path so primary agent stays fast |
خواندن بیشتر
- Shinn et al., Reflexion: Language Agents with Verbal Reinforcement Learning (arXiv:2303.11366) کاغذی کاینونیکی
- Letta, Sleep-time Compute بازتاب غیر هماهنگ در تولید
- Anthropic, Effective context engineering for AI agents مدیریت بازخورد حوادث به عنوان بخشی از زمینه
- LangGraph overview الگوی گره بازتاب
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.