Self-Refine
Iterate generate → feedback (same model) → refine until a stop criterion fires, with no separate critic model.
Problem
Running the model in one shot leaves quality on the table, but simply asking the same model in a follow-up prompt 'is this any good?' tends to produce vague praise that does not improve the draft. Without a clear separation between generating, critiquing, and revising, the model collapses the three jobs into one and ends up either making the draft worse with random rewrites or declaring it fine on the second look. A loop without a stop criterion runs forever; a loop with no structure produces drift instead of refinement. The team needs the same model to play three distinct roles in sequence, bounded by a clear termination condition.
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 the model says 'no more issues' or max iterations.
When to use
- 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.
Open the full interactive page →
Diagram, neighbourhood map, code examples, related patterns and full provenance.