Self-Refine
One model, three roles: generate → self-feedback against a fixed rubric → refine — iterate until 'no more issues' or max iterations.
Intent & Description
🎯 Intent
Squeeze more quality out of a single model with no separate critic.
📋 Context
You’re running a generation task on one LLM with no second model available for critique. You do have an explicit improvement target — a checklist, quality rubric, or definition of ‘better’ for this domain. The same model can produce useful feedback against that target when given the draft and the checklist.
💡 Solution
Three roles, one model. (1) Generate: produce initial output. (2) Feedback: same model returns concrete improvement points against a fixed target. (3) Refine: same model rewrites using the feedback. Repeat until ’no more issues’ or max iterations.
Real-world Use Case
- The same model can produce useful self-feedback against an explicit improvement target.
- One-shot generation under-uses the model and quality matters.
- Cost of a few extra refine turns is acceptable.
Source
📌 TL;DR
Generate → feedback against a fixed rubric → refine → repeat. One model, no critic. Works well up to 2-3 iterations; blind spots stay blind.
Advantages
- Quality improvement on tasks with measurable targets — no second model needed.
- Same-model loop is dead simple to deploy.
Disadvantages
- Reinforces same-model blind spots — the model can’t see what it can’t see.
- Diminishing returns after 2-3 iterations; stop there.