  Automated Program Repair (APR) aims to automatically generate patches for
buggy programs. Recent APR work has been focused on leveraging modern Large
Language Models (LLMs) to directly generate patches for APR. Such LLM-based APR
tools work by first constructing an input prompt built using the original buggy
code and then queries the LLM to generate patches. While the LLM-based APR
tools are able to achieve state-of-the-art results, it still follows the
classic Generate and Validate repair paradigm of first generating lots of
patches and then validating each one afterwards. This not only leads to many
repeated patches that are incorrect but also miss the crucial information in
test failures as well as in plausible patches.
  To address these limitations, we propose ChatRepair, the first fully
automated conversation-driven APR approach that interleaves patch generation
with instant feedback to perform APR in a conversational style. ChatRepair
first feeds the LLM with relevant test failure information to start with, and
then learns from both failures and successes of earlier patching attempts of
the same bug for more powerful APR. For earlier patches that failed to pass all
tests, we combine the incorrect patches with their corresponding relevant test
failure information to construct a new prompt for the LLM to generate the next
patch. In this way, we can avoid making the same mistakes. For earlier patches
that passed all the tests, we further ask the LLM to generate alternative
variations of the original plausible patches. In this way, we can further build
on and learn from earlier successes to generate more plausible patches to
increase the chance of having correct patches. While our approach is general,
we implement ChatRepair using state-of-the-art dialogue-based LLM -- ChatGPT.
By calculating the cost of accessing ChatGPT, we can fix 162 out of 337 bugs
for \$0.42 each!
