خود تصفیه و انتقاد: بهبود تولید تکراری
Type: Build
Languages: Python (stdlib)
Prerequisites: Phase 14 · 01 (Agent Loop), Phase 14 · 03 (Reflexion)
Time: ~60 minutes
اهداف یادگیری
- سه دستور (پرداخت، بازخورد، اصلاح) خود را اصلاح کنید و توضیح دهید که چرا تاریخ برای اصلاح کردن مهم است.
- بینش انتقادی CRITIC را توضیح دهید: LLM ها بدون تأسیس خارجی قابل اعتماد نیستند.
- یک حلقه خودکار پاکسازی stdlib با تاریخچه و یک تأیید کننده خارجی اختیاری را پیاده سازی کنید.
- نقشه این الگوی را به جریان کار "تقيیم کننده- بهینه سازی" Anthropic و محافظهای خروجی OpenAI Agents SDK قرار دهید.
مشکل
یک عامل یک پاسخ تقریبا درست را تولید می کند. شاید یک خط کد یک خط ترکیب داشته باشد. شاید خلاصه خیلی طولانی باشد. شاید یک برنامه یک مورد حاشیه را از دست بدهد. آنچه شما می خواهید این است: عامل به محصول خود انتقاد می کند، سپس آن را اصلاح می کند.
خود تصفیه نشان می دهد که این کار با یک مدل واحد، بدون داده های آموزشی، بدون RL انجام می شود. اما یک گرفتگی وجود دارد: LLM در خود تأیید بر اساس حقایق سخت بد است. CRITIC نام اصلاح مسیر مرحله تأیید را از طریق ابزارهای خارجی (بحث، مترجم کد، ماشین حساب، آزمایش راننده) می نامد.
این دو مقاله با هم پیش فرض 2026 را برای بهبود تکراری تعریف می کنند: تولید، تأیید (به صورت خارجی در صورت امکان) ، اصلاح، توقف زمانی که تایید کننده عبور می کند.
مفهوم
خود تصفیه (Madaan و همکارانش، NeurIPS 2023)
يک مدرک تحصيلي، سه نقش:
generate(task) -> output_0
feedback(task, output_0) -> critique_0
refine(task, output_0, critique_0, history) -> output_1
feedback(task, output_1) -> critique_1
refine(task, output_1, critique_1, history) -> output_2
...
stop when feedback says "no issues" or budget exhausted.جزئیات کلیدی:refineدر این مقاله، این موضوع را حذف می کند: تاریخچه و کیفیت به شدت کاهش می یابد.
عنوان: +20 بهبود مطلق در میان 7 وظیفه ( ریاضی، کد، مخفف، گفتگویی) از جمله GPT-4
انتقاد (Gou et al., arXiv:2305.11738, v4 فوریه 2024)
ضعف خود تصفیه: مرحله بازخورد خود یک امتیاز LLM است. برای ادعاهای فاکتوری این غیرقابل اعتماد است (هالوسیناسیون اغلب به نظر می رسد متقاعد کننده به مدل تولید کننده آن است). CRITIC جایگزین feedback(task, output)باverify(task, output, tools)کجاtoolsشامل:
- موتور جستجو برای ادعاهای واقعی
- یک مترجم کد برای درست بودن کد.
- يه ماشین حسابي براي حساب
- تأیید کننده های مخصوص دامنه (تخت های واحد، چکرهای نوع، linters).
تأیید کننده یک انتقاد ساختاری را بر اساس نتایج ابزار تولید می کند. سپس پالایشگر بر این انتقاد شرط می زند.
عنوان: CRITIC خود اصلاح را در وظایف فاکتوی به جای می گذارد زیرا انتقاد مبتنی بر زمین است. در وظایف بدون تأیید کننده های خارجی (نویس خلاقانه، فرمت سازی) ، CRITIC به خود اصلاح کاهش می یابد.
حالت توقف
دو شکل مشترک:
- Verifier passes.آزمایش خارجی موفقیت را نشان می دهد. ترجیح می دهد در صورت وجود (تسلیم واحد، چک کننده نوع، تایید محافظ).
- No feedback issued.مدل میگه "خروجی خوب است" ارزان تر اما غیرقابل اعتماد؛ با یک کیپ حداکثر تکرار.
2026 پیش فرض: آنها را ترکیب کنید. "در صورتی که تایید کننده OR را عبور کند متوقف کنید مدل می گوید خوب و تکرار >= 2 یا تکرار >= max_iterations".
ارزیابی کننده- بهینه ساز (انتروپک، 2024)
پست دیسمبر 2024 آنترپیک این را به عنوان یکی از پنج الگوی جریان کار نام داده است. دو نقش:
- ارزیابی کننده: نتیجه را ارزیابی می کند و انتقاد را تولید می کند.
- بهینه سازی: به دلیل انتقاد، محصول را بررسی می کند.
این خود تصفیه/CRITIC در فریمینگ Anthropic است. جزئیات مهندسی حیاتی Anthropic اضافه می کند: درخواست های ارزیابی کننده و بهینه کننده باید به طور قابل توجهی متفاوت باشد تا مدل فقط طومار را نشان ندهد.
محافظهای خروجی SDK OpenAI Agents
OpenAI Agents SDK این الگوی را به عنوان "پرده های حفاظت از خروجی" ارسال می کند.OutputGuardrailTripwireTriggeredرایل های نگهبان می توانند ابزار (به سبک CRITIC) یا عملکردهای خالص (به سبک خود تصفیه) را فراخوانند.
خطرهای 2026
- Rubber-stamp loops.همان مدل تولید و انتقاد با همان سبک فوری به "به نظر من خوب است". از پیام های ساختاری متفاوت استفاده کنید، یا یک مدل ارزان تر برای انتقاد.
- Over-refinement.هر گزينه ي اصلاحي تاخير و توکن ها را اضافه مي کند. بودجه 1-3 عبور مي کند؛ پس از آن، به بازنگري انساني ارتقا مي یابد.
- CRITIC on trivial tasks.اگر تأیید کننده خارجی وجود نداشته باشد، CRITIC به خود تصفیه می شود؛ تاخیر برای تایید کننده استوب را پرداخت نکنید.
آن را بسازید
code/main.pyخود تصفیه و CRITIC را در یک کار اسباب بازی اجرا می کند: یک لیست کوتاه گلوله را با توجه به یک موضوع تهیه کنید. تأیید کننده فرمت را بررسی می کند (3 گلوله، هر کدام کمتر از 60 کار). CRITIC یک "تحقیقی واقعیت" خارجی را اضافه می کند که توهم های شناخته شده را مجازات می کند.
اجزای:
generateتهیه کننده اسکریپتfeedbackخود منتقد در سبک LLMverify_externalتایید کننده پایه ای به سبک CRITIC.refineبازنویسی محصول به تاریخچه داده شده.- حالت توقف تایید کننده عبور یا حداکثر 4 تکرار.
اجرا کن
python3 code/main.pyمقایسه خود تصفیه و CRITIC. CRITIC یک خطا واقعی را می گیرد خود تصفیه را از دست داده است زیرا تأیید کننده خارجی خود انتقاد را متوقف می کند.
ازش استفاده کن
بهینه سازی ارزیابی کننده Anthropic این الگوی را در زبان دوستانه کلاود دارد. محافظهای خروجی OpenAI Agents SDK به شکل CRITIC هستند ( محافظها می توانند ابزار را فراخوانند). LangGraph یک گره بازتاب را ارسال می کند که مانند خود تصفیه می شود. استفاده از رایانه گوگل Gemini 2.5 یک ارزیابی کننده ایمنی در هر مرحله را اضافه می کند که یک ویرانه CRITIC است: هر عمل قبل از انجام تأیید می شود.
-باده
outputs/skill-refine-loop.mdیک حلقه ارزیابی کننده- بهینه سازی را با توجه به شکل کار، دسترسی تأیید کننده و بودجه تکرار تنظیم می کند. پیام های برای ژنراتور، ارزیابی کننده/تحقیقی و بهینه کننده و یک سیاست توقف را صادر می کند.
تمرینات
- با استفاده از max_iterations=1 بازی رو اجرا کنین.
- یک تایید کننده خارجی را با یک صدا بلند جایگزین کنید (۳۰ درصد تصادفی مثبت نادرست). حلقه چه می کند؟ این واقعیت ۲۰۲۶ بیشتر قفسه های محافظ است.
- یک نوع "انتقاد ژنراتور در مدل های مختلف" را پیاده سازی کنید: مدل های بزرگ تولید می کنند، مدل های کوچک انتقاد می کنند. آیا این مدل مشابه را می پیشد؟
- بخش 3 (arXiv:2305.11738 v4) را بخوانید. سه دسته ابزار تأیید را نام ببرید و برای هر یک از آنها نمونه ای ارائه دهید.
- نقشه ای از SDK های OpenAI Agents
output_guardrailsبه نقش تایید کننده CRITIC. SDK چه چیزی اشتباه می کند و چه چیزی درست می شود؟
اصطلاحات کلیدی
| Term | What people say | What it actually means |
|---|---|---|
| Self-Refine | "LLM that fixes itself" | Generate -> feedback -> refine loop in one model, with history |
| CRITIC | "Tool-grounded verification" | Replace feedback with an external verifier (search, code, calc, tests) |
| Evaluator-Optimizer | "Anthropic workflow pattern" | Two roles — evaluator scores, optimizer revises — looped to convergence |
| Output guardrail | "Post-hoc check" | OpenAI Agents SDK validator that runs after an agent produces output |
| Verify step | "Critique phase" | The load-bearing decision: grounded or self-rated |
| Refine history | "What the model already tried" | Prior outputs + critiques prepended to refine prompt; drop and quality collapses |
| Rubber-stamp loop | "Self-agreement failure" | Same-prompt critique returns "looks good"; fix with structurally different prompts |
| Stop condition | "Convergence test" | Verifier passes OR no feedback AND iteration cap; never single-condition |
خواندن بیشتر
- Madaan et al., Self-Refine (arXiv:2303.17651) کاغذی کاینونیکی
- Gou et al., CRITIC (arXiv:2305.11738) تأیید مبتنی بر ابزار
- Anthropic, Building Effective Agents الگوی جریان کار ارزیابی کننده- بهینه ساز
- OpenAI Agents SDK docs محافظهای خروجی به عنوان تایید کننده های شکل CRITIC
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.