در ساخت برنامههای متکی بر مدلهای زبانی، خروجی اول ایجنت بهندرت بینقص است؛ کدهایی با خطای سینتکس، پاسخهای بسیار طولانی یا توهم در اعلام فکتها از مشکلات همیشگی هستند. تکیه بر تولید یکباره پاسخ معمولاً به شکست ایجنت در محیطهای عملیاتی منجر میشود.
دو الگوی مشهور Self-Refine و CRITIC این چالش را با راهاندازی حلقهی نقد و اصلاح برطرف میکنند. تفاوت حیاتی میان خودنقدی سادهی مدل و اعتبارسنجی تکیهزده بر ابزارهای خارجی (مانند لینترها، تستها و وبسرچ) مبنای شکلگیری سیستمهای مدرن مثل «ارزیاب-بهینهساز» در فریمورکهای توسعه است.
اگر برای فراخوانی API مدلها با چالش پرداخت ارزی یا عدم دسترسی مستقیم به ارائهدهندگان خارجی مواجه هستید، پیادهسازی این الگوها معمولاً وابسته به مدل خاصی نیست و به راحتی با تغییر آدرس پایه (base_url) روی گیتویهای واسط داخلی یا مدلهای محلی اجرا میشود.
رویکرد Self-Refine (مادان و همکاران، 2023) از یک مدل زبانی بزرگ در سه نقشِ تولید (generate)، بازخورد (feedback) و بازبینی (refine) درون یک حلقه استفاده میکند. میانگین بهبود: 20+ نمرهی مطلق در 7 تسک مختلف. مقالهی CRITIC (گو و همکاران، 2023) با هدایت مرحلهی اعتبارسنجی از مسیر ابزارهای خارجی، گام بازخورد را تقویت میکند. در سال 2026، این الگو در تمام فریمورکها با عناوینی مثل «ارزیاب-بهینهساز» (Evaluator-Optimizer در Anthropic) یا حلقهی گاردریل (در OpenAI Agents SDK) پیادهسازی شده است.
اهداف یادگیری
- بیان سه پرامپت اصلی در Self-Refine (تولید، بازخورد، بازبینی) و توضیح اینکه چرا تاریخچه برای پرامپت بازبینی حیاتی است.
- توضیح بینش کلیدی CRITIC: مدلهای زبانی بدون ارجاعدهی مکانی (Grounding) به منابع خارجی، در خوداعتبارسنجی غیرقابلاعتماد هستند.
- پیادهسازی یک حلقهی Self-Refine با کتابخانهی استاندارد پایتون، همراه با تاریخچه و یک مدل اعتبارسنج خارجی اختیاری.
- تطبیق این الگو با الگوی کاری «ارزیاب-بهینهساز» در Anthropic و گاردریلهای خروجی در OpenAI Agents SDK.
صورت مسئله
ایجنت پاسخی تولید میکند که تقریباً درست است؛ شاید یک خط از کد خطای سینتکس دارد، شاید خلاصه بیش از حد طولانی است، یا شاید برنامه یک حالت خاص (edge case) را نادیده گرفته است. چیزی که در این شرایط میخواهید این است: ایجنت خروجی خودش را نقد کند و سپس آن را اصلاح نماید.
رویکرد Self-Refine نشان میدهد که این کار با یک مدل واحد، بدون دادههای آموزشی جدید و بدون یادگیری تقویتی (RL) شدنی است. اما یک نکتهی مهم وجود دارد: مدلهای زبانی بزرگ در خوداعتبارسنجی روی فکتها و حقایق پیچیده ضعیف عمل میکنند. مقالهی CRITIC راهحل را نشان میدهد: مرحلهی اعتبارسنجی را از مسیر ابزارهای خارجی (موتور جستجو، مفسر کد، ماشینحساب، رانر تستها) عبور دهید.
این دو مقاله در کنار هم، استاندارد پیشفرض سال 2026 را برای بهبود تکرارشونده تعریف میکنند: تولید کن، اعتبارسنجی کن (در صورت امکان با ابزار خارجی)، بازبینی کن، و زمانی که اعتبارسنج تایید کرد، متوقف شو.
مفاهیم پایه
رویکرد Self-Refine (مادان و همکاران، 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 کل تاریخچه — یعنی تمام خروجیها و نقدهای قبلی — را میبیند تا اشتباهات را تکرار نکند. نویسندگان مقاله این بخش را با آزمون حذف (ablation) بررسی کردهاند: تاریخچه را حذف کنید، کیفیت خروجی بهشدت افت میکند.
نتیجهی برجسته: بهطور میانگین 20+ نمرهی بهبود مطلق در 7 تسک مختلف (ریاضی، کدنویسی، سرواژهسازی و گفتوگو) حتی روی GPT-4؛ آن هم بدون آموزش، بدون ابزار خارجی و فقط با یک مدل واحد.
رویکرد CRITIC (گو و همکاران، arXiv:2305.11738، نسخه 4 فوریه 2024)
نقطهضعف Self-Refine این است: در گام بازخورد، خود مدل زبانی به خروجیاش امتیاز میدهد. این کار برای ادعاهای مبتنی بر واقعیت نامطمئن است؛ زیرا توهم (hallucination) معمولاً برای همان مدلی که آن را ساخته، کاملاً قانعکننده به نظر میرسد. مقالهی CRITIC تابع feedback(task, output) را با verify(task, output, tools) جایگزین میکند که در آن tools شامل موارد زیر است:
- موتور جستجو برای سنجش صحت حقایق و فکتها.
- مفسر کد برای بررسی درستی عملکرد کد.
- ماشینحساب برای محاسبات ریاضی.
- اعتبارسنجهای تخصصی دامنه (تستهای واحد، تایپچکرها، لینترها).
مدل اعتبارسنج، نقدی ساختاریافته تولید میکند که مستند به نتایج ابزارهاست. سپس بخش بازبینیکننده (refiner)، خروجی را بر اساس این نقد اصلاح میکند.
نتیجهی برجسته: CRITIC در تسکهای مبتنی بر واقعیت عملکرد بهتری نسبت به Self-Refine دارد، چون نقد آن دارای ارجاعدهی مکانی و مستند به ابزارهاست. در تسکهایی که ابزار اعتبارسنج خارجی ندارند (مثل نویسندگی خلاق یا فرمتبندی متن)، CRITIC به همان Self-Refine تقلیل پیدا میکند.
شرط توقف
دو ساختار رایج برای شرط توقف وجود دارد:
- تایید مدل اعتبارسنج. تست خارجی موفقیت را برمیگرداند. در صورت در دسترس بودن، این حالت همیشه اولویت دارد (تستهای واحد، تایپچکر، اعتبارسنجی با گاردریل).
- عدم ارائهی بازخورد جدید. مدل میگوید «خروجی مشکلی ندارد». این روش ارزانتر است ولی قابلیت اتکای پایینی دارد؛ باید حتماً با یک سقف مشخص برای تعداد تکرار (max iterations) همراه شود.
رویکرد پیشفرض سال 2026: ترکیب هر دو حالت. «متوقف شو اگر اعتبارسنج تایید کرد، یا اگر مدل گفت مشکلی نیست و تعداد تکرارها حداقل 2 بار بود، یا اگر تعداد تکرار به سقف مجاز رسید.»
الگوی ارزیاب-بهینهساز (Anthropic، 2024)
مقالهی دسامبر 2024 شرکت Anthropic این الگو را به عنوان یکی از پنج الگوی اصلی گردش کار معرفی میکند. این الگو دو نقش دارد:
- ارزیاب (Evaluator): به خروجی امتیاز میدهد و نقد را تولید میکند.
- بهینهساز (Optimizer): خروجی را با توجه به نقد بازنویسی میکند.
این فرآیند تا زمان تایید ارزیاب در حلقه تکرار میشود. این سازوکار در واقع همان چارچوب Self-Refine/CRITIC با ادبیات Anthropic است. نکتهی مهندسی مهمی که Anthropic اضافه میکند این است: پرامپتهای ارزیاب و بهینهساز باید تفاوت ساختاری چشمگیری داشته باشند تا مدل صرفاً به تایید صوری و خودکار خروجی (rubber-stamping) روی نیاورد.
گاردریلهای خروجی در OpenAI Agents SDK
مجموعهی OpenAI Agents SDK این الگو را در قالب «گاردریلهای خروجی» (output guardrails) ارائه میدهد. گاردریل (ریل ایمنی) نوعی اعتبارسنج است که روی خروجی نهایی ایجنت اجرا میشود. اگر گاردریل فعال شود (خطای OutputGuardrailTripwireTriggered را صادر کند)، خروجی رد میشود و ایجنت میتواند دوباره تلاش کند. گاردریلها میتوانند مانند CRITIC ابزارها را فراخوانی کنند یا مانند Self-Refine توابع خالص (pure functions) باشند.
تلههای رایج در سال 2026
- حلقههای تایید صوری (Rubber-stamp loops): استفاده از یک مدل یکسان برای تولید و نقد با لحن و ساختار پرامپت مشابه، به جملهی «از نظر من خوب است» ختم میشود. از پرامپتهایی با ساختار کاملاً متفاوت یا از یک مدل کوچکتر و ارزانتر برای نقد استفاده کنید.
- بازبینی بیش از حد (Over-refinement): هر دور بازبینی باعث افزایش تاخیر (latency) و مصرف توکن میشود. بودجهی خود را روی 1 تا 3 تکرار ببندید؛ بعد از آن کار را برای بررسی به انسان ارجاع دهید.
- استفاده از CRITIC روی تسکهای ساده: اگر اعتبارسنج خارجی وجود ندارد، CRITIC عملاً تفاوتی با Self-Refine نخواهد داشت؛ پس تاخیر سیستم را برای یک اعتبارسنج صوری و توخالی بالا نبرید.
پیادهسازی از صفر
فایل code/main.py دو رویکرد Self-Refine و CRITIC را روی یک تسک نمونه پیاده میکند: تولید یک فهرست کوتاه نقطهای بر اساس یک موضوع. اعتبارسنج، ساختار متن را چک میکند (3 مورد، هر کدام زیر 60 کاراکتر). در بخش CRITIC، یک «اعتبارسنج فکت» خارجی نیز اضافه میشود که توهمهای شناختهشده را جریمه میکند.
اجزای سیستم:
generate— بخش تولیدکنندهی متن.feedback— خودنقدی به سبک مدلهای زبانی.verify_external— مدل اعتبارسنج مبتنی بر ابزار خارجی به سبک CRITIC.refine— بازنویسی خروجی با توجه به تاریخچه.- شرط توقف — تایید اعتبارسنج یا رسیدن به سقف 4 تکرار.
اجرای برنامه:
python3 code/main.py
خروجیهای Self-Refine و CRITIC را با هم مقایسه کنید. CRITIC خطایی در اطلاعات و فکتها پیدا میکند که Self-Refine متوجه آن نشده بود؛ زیرا اعتبارسنج خارجی به منابعی متصل است و ارجاعدهی مکانی دارد که خودنقدیِ ساده از آن بیبهره است.
استفاده از ابزارهای واقعی
الگوی ارزیاب-بهینهسازِ Anthropic، همین سازوکار را با ادبیات سازگار با مدل Claude ارائه میدهد. گاردریلهای خروجی در OpenAI Agents SDK ساختاری مشابه CRITIC دارند (گاردریلها میتوانند ابزارها را صدا بزنند). پلتفرم LangGraph گرهای به نام Reflection دارد که ساختار آن شبیه Self-Refine است. ابزار Gemini 2.5 Computer Use گوگل هم یک ارزیاب ایمنیِ گامبهگام اضافه کرده که مدلی از CRITIC محسوب میشود: هر عملیات قبل از commit شدن بهطور کامل اعتبارسنجی میشود.
خروجی این درس
فایل outputs/skill-refine-loop.md یک حلقهی ارزیاب-بهینهساز را بر اساس ساختار تسک، دسترسی به اعتبارسنج و بودجهی تعداد تکرارها پیکربندی میکند. این فایل پرامپتهای تولیدکننده، ارزیاب/اعتبارسنج و بهینهساز را به همراه سیاست توقف تولید مینماید.
تمرینها
- کد را با
max_iterations=1اجرا کنید. آیا CRITIC همچنان کمکی میکند؟ - اعتبارسنج خارجی را با یک نسخهی دارای خطا جایگزین کنید (با 30% مثبت کاذب تصادفی). حلقه چه واکنشی نشان میدهد؟ این سناریو، واقعیت بیشتر ساختارهای گاردریل در سال 2026 است.
- نسخهای با ساختار «تولیدکننده و ناقد روی مدلهای مختلف» بسازید: یک مدل بزرگ خروجی را تولید کند و یک مدل کوچک آن را نقد نماید. آیا نتیجه بهتر از حالت استفاده از مدل یکسان است؟
- بخش 3 مقالهی CRITIC را بخوانید (arXiv:2305.11738 نسخه 4). سه دستهی ابزارهای اعتبارسنجی را نام ببرید و برای هر کدام یک مثال بزنید.
- قابلیت
output_guardrailsدر OpenAI Agents SDK را با نقش مدل اعتبارسنج در CRITIC مقایسه و تطبیق دهید. این SDK چه بخشهایی را درست پیاده کرده و در کدام بخشها نقص دارد؟
اصطلاحات کلیدی
| اصطلاح | برداشتی که وجود دارد | معنای واقعی و دقیق |
|---|---|---|
| Self-Refine | «مدلی که خودش را اصلاح میکند» | حلقهی تولید -> بازخورد -> بازبینی در یک مدل واحد، به همراه تاریخچه |
| CRITIC | «اعتبارسنجی با تکیه بر ابزارها» | جایگزینی گام بازخورد با یک اعتبارسنج خارجی (جستجو، کد، ماشینحساب، تستها) |
| ارزیاب-بهینهساز (Evaluator-Optimizer) | «الگوی گردش کار در Anthropic» | دو نقش مجزا — ارزیاب امتیاز میدهد، بهینهساز بازنویسی میکند — که تا زمان همگرایی تکرار میشوند |
| گاردریل خروجی (Output guardrail) | «بررسی بعد از اتمام کار» | اعتبارسنج در OpenAI Agents SDK که پس از تولید خروجی توسط ایجنت اجرا میشود |
| مرحلهی اعتبارسنجی (Verify step) | «فاز نقد» | تصمیم تعیینکننده و کلیدی: ارجاعدهی مکانی با ابزار خارجی یا ارزیابی توسط خود مدل |
| تاریخچهی بازبینی (Refine history) | «آنچه مدل قبلاً امتحان کرده» | خروجیها و نقدهای قبلی که به پرامپت بازبینی الحاق میشوند؛ با حذف آن، کیفیت خروجی بهشدت افت میکند |
| حلقهی تایید صوری (Rubber-stamp loop) | «مشکل تایید خودکار خروجی» | نقد خروجی با پرامپت مشابه که فقط پیام «خوب به نظر میرسد» را برمیگرداند؛ راهحل: تغییر ساختاری پرامپتها |
| شرط توقف (Stop condition) | «آزمون همگرایی» | تایید اعتبارسنج یا عدم ثبت بازخورد همراه با سقف تکرار؛ هیچوقت نباید تکشرطی باشد |
برای مطالعهی بیشتر
- مقالهی Madaan و همکاران، رویکرد Self-Refine (arXiv:2303.17651) — مقالهی مرجع
- مقالهی Gou و همکاران، رویکرد CRITIC (arXiv:2305.11738) — اعتبارسنجی با ارجاعدهی به ابزارها
- مقالهی ساخت ایجنتهای اثربخش از شرکت Anthropic — الگوی گردش کار ارزیاب-بهینهساز
- مستندات OpenAI Agents SDK — گاردریلهای خروجی در نقش اعتبارسنجهای مشابه CRITIC
