From 4d800b1e31b81c37a85b90235f29408e4f25dac5 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Sat, 13 May 2023 15:13:40 -0700 Subject: [PATCH] adopt EDIT BLOCK as the nomenclature in the prompt --- aider/prompts.py | 32 ++++++++++---------------------- examples/README.md | 4 ++-- 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/aider/prompts.py b/aider/prompts.py index 26442cd7e..0fd952d99 100644 --- a/aider/prompts.py +++ b/aider/prompts.py @@ -25,12 +25,12 @@ Once you understand the user's request and can see all the relevant code, your r 1. List which files you need to modify. If you need to modify a file that the user hasn't provided the full content of, stop and ask to see it! 2. Think step-by-step and explain the needed changes in detailed pseudo-code. -3. For each change to the code, describe it using the ORIGINAL/UPDATED format shown in the example below. +3. For each change to the code, describe it using an *EDIT BLOCK* as shown in the example below. """ system_reminder = ''' -You must format every code change like this example: +You must format every code change using an *EDIT BLOCK* like this example: ```python some/dir/example.py @@ -48,40 +48,28 @@ some/dir/example.py >>>>>>> UPDATED IF YOU WANT TO SUGGEST CODE THAT BELONGS IN A NEW FILE: - - MAKE UP A FILENAME FOR THE FILE, INCLUDING THE CORRECT DIRECTORY NAME - - REPLY WITH AN ORIGINAL/UPDATE BLOCK WITH THE NEW FILENAME INCLUDING DIRECTORIES + - MAKE UP A GOOD FILE PATH FOR THE FILE, INCLUDING DIRECTORY NAME + - REPLY USING AN *EDIT BLOCK* WITH THE NEW FILE PATH - INCLUDE AN EMPTY ORIGINAL BLOCK - PUT THE NEW FILE'S CONTENTS IN THE UPDATED BLOCK -*NEVER REPLY WITH AN ENTIRE FILE TRIPLE-QUOTED FORMAT LIKE THE USER MESSAGES!* -*ANY CODE YOU INCLUDE IN A REPLY *MUST* BE IN THE ORIGINAL/UPDATED FORMAT!* +*NEVER REPLY WITH AN ENTIRE FILE LIKE IN THE USER MESSAGES!* +ANY CODE YOU INCLUDE IN A REPLY *MUST* BE AN *EDIT BLOCK*! -EVERY ORIGINAL/UPDATED BLOCK MUST START WITH THE FILENAME! -EVERY ORIGINAL/UPDATED BLOCK MUST BE TRIPLE QUOTED! -AFTER THE OPENING TRIPLE-QUOTE, INDICATE THE LANGUAGE OF THE CODE. +EVERY *EDIT BLOCK* MUST BE FENCED WITH TRIPLE BACKTICKS WITH THE CORRECT CODE LANGUAGE INDICATOR. +EVERY *EDIT BLOCK* MUST START WITH THE FILE PATH! THE ORIGINAL BLOCK MUST BE AN EXACT SEQUENCE OF LINES FROM THE FILE: - NEVER OMIT LINES! - INCLUDE ALL THE ORIGINAL LEADING SPACES AND INDENTATION! -EDITS TO DIFFERENT PARTS OF A FILE EACH NEED THEIR OWN ORIGINAL/UPDATED BLOCKS. -EVEN NEARBY PARTS NEED THEIR OWN ORIGINAL/UPDATED BLOCKS. - -INCLUDE THE FILE PATH ALONE AS THE FIRST LINE OF THE BLOCK. -Don't prefix it with "In" or follow it with ":". +EDITS TO DIFFERENT PARTS OF A FILE EACH PART NEEDS THEIR OWN DISTINCT *EDIT BLOCK*. +EVEN NEARBY PARTS EACH NEED THEIR OWN DISTINCT EDIT BLOCKS. If the request requires many changes, stop to ask the user for confirmation and feedback often! ''' -returned_code = """ -It looks like you tried to return a code block. Don't do that! - -Only return code using the specific ORIGINAL/UPDATED format. -Be selective! -Only return the parts of the code which need changes! -""" - # FILES files_content_gpt_edits = ( diff --git a/examples/README.md b/examples/README.md index b6b8a866e..afcb56b16 100644 --- a/examples/README.md +++ b/examples/README.md @@ -35,8 +35,8 @@ accomplishing both greenfield generation of new code as well as simple and more #### > The user's chat messages are bold and shown on a prompt line like this. They contain they user's change requests, clarifications, etc. -Responses from GPT-4 are in a plain font like this, and often include colorized code blocks that specify edits to the code. -Here's a sample edit that switches from printing a blank line to printing "hello world" in the file `hello.py`: +Responses from GPT-4 are in a plain font like this, and often include colorized "edit blocks" that specify edits to the code. +Here's a sample edit block that switches from printing a blank line to printing "hello world" in the file `hello.py`: ```python hello.py