Phase 14: Agent Engineering

خود تصفیه و انتقاد: بهبود تولید تکراری

خود تصحیح (Madaan et al., 2023) از یک LLM در سه نقش استفاده می کند تولید، بازخورد، اصلاح در یک حلقه. متوسط دستاورد: +20 مطلق در 7 کار. CRITIC (Gou et al., 2023) مرحله بازخورد را با هدایت تأیید با ابزارهای خارجی سخت می کند. در سال 2026 این الگوی در هر چارچوب به عنوان "تقيیم کننده- بهینه سازی" (Anthropic) یا یک حلقه محافظ (OpenAI Agents SDK) ارسال می شود.

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 به خود اصلاح کاهش می یابد.

حالت توقف

دو شکل مشترک:

  1. Verifier passes.آزمایش خارجی موفقیت را نشان می دهد. ترجیح می دهد در صورت وجود (تسلیم واحد، چک کننده نوع، تایید محافظ).
  2. 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 خود منتقد در سبک LLM
  • verify_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یک حلقه ارزیابی کننده- بهینه سازی را با توجه به شکل کار، دسترسی تأیید کننده و بودجه تکرار تنظیم می کند. پیام های برای ژنراتور، ارزیابی کننده/تحقیقی و بهینه کننده و یک سیاست توقف را صادر می کند.

تمرینات

  1. با استفاده از max_iterations=1 بازی رو اجرا کنین.
  2. یک تایید کننده خارجی را با یک صدا بلند جایگزین کنید (۳۰ درصد تصادفی مثبت نادرست). حلقه چه می کند؟ این واقعیت ۲۰۲۶ بیشتر قفسه های محافظ است.
  3. یک نوع "انتقاد ژنراتور در مدل های مختلف" را پیاده سازی کنید: مدل های بزرگ تولید می کنند، مدل های کوچک انتقاد می کنند. آیا این مدل مشابه را می پیشد؟
  4. بخش 3 (arXiv:2305.11738 v4) را بخوانید. سه دسته ابزار تأیید را نام ببرید و برای هر یک از آنها نمونه ای ارائه دهید.
  5. نقشه ای از SDK های OpenAI Agents output_guardrailsبه نقش تایید کننده CRITIC. SDK چه چیزی اشتباه می کند و چه چیزی درست می شود؟

اصطلاحات کلیدی

TermWhat people sayWhat 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

خواندن بیشتر

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.