AuPair: Golden Example Pairs for Code Repair
Aditi Mavalankar, Hassan Mansoor, Zita Marinho, Masha Samsikova, Tom Schaul
TL;DR
The paper tackles improving code repair under limited inference-time compute by using self-repair with in-context learning through AuPair, an algorithm that constructs an ordered set of golden example pairs formed by an initial guess and its fix and uses them as 1-shot prompts for multiple LLM calls. It comprises two phases: Phase 1 collects a large candidate pool of repair pairs by iteratively repairing guesses, and Phase 2 extracts an ordered AuPair list via a submodular greedy selection that maximizes complementarity and problem coverage under a budget $N$. Empirically, AuPair consistently outperforms best-of-$N$ and self-repair across 5 models and 7 datasets, demonstrates strong scaling with compute, and generalizes to out-of-distribution datasets and to cross-model settings, while preserving diverse problem coverage. The work significantly reduces the compute needed to obtain high-quality repaired code, offering a practical, scalable approach to self-repair that can extend to other tasks beyond coding.
Abstract
Scaling up inference-time compute has proven to be a valuable strategy in improving the performance of Large Language Models (LLMs) without fine-tuning. An important task that can benefit from additional inference-time compute is self-repair; given an initial flawed response, or guess, the LLM corrects its own mistake and produces an improved response, or fix. We leverage the in-context learning ability of LLMs to perform self-repair in the coding domain. The key contribution of our paper is an approach that synthesises and selects an ordered set of golden example pairs, or AuPairs, of these initial guesses and subsequent fixes for the corresponding problems. Each such AuPair is provided as a single in-context example at inference time to generate a repaired solution. For an inference-time compute budget of $N$ LLM calls per problem, $N$ AuPairs are used to generate $N$ repaired solutions, out of which the highest-scoring solution is selected as the final answer. The underlying intuition is that if the LLM is given a different example of fixing an incorrect guess each time, it can subsequently generate a diverse set of repaired solutions. Our algorithm selects these AuPairs in a manner that maximises complementarity and usefulness. We demonstrate the results of our algorithm on 5 LLMs across 7 competitive programming datasets for the code repair task. Our algorithm yields a significant boost in performance compared to best-of-$N$ and self-repair, and also exhibits strong generalisation across datasets and models. Moreover, our approach shows significantly stronger scaling with inference-time compute budget compared to baselines.
