mirror of
https://github.com/Aider-AI/aider.git
synced 2025-06-04 19:55:00 +00:00
refac
This commit is contained in:
parent
a8fe9cb491
commit
e22373b55a
6 changed files with 4 additions and 8 deletions
|
@ -4,8 +4,8 @@ import re
|
|||
from difflib import SequenceMatcher
|
||||
from pathlib import Path
|
||||
|
||||
from ..editors import EditBlockPrompts
|
||||
from .base import Coder
|
||||
from .editblock_prompts import EditBlockPrompts
|
||||
|
||||
|
||||
class EditBlockCoder(Coder):
|
||||
|
|
56
aider/coders/editblock_prompts.py
Normal file
56
aider/coders/editblock_prompts.py
Normal file
|
@ -0,0 +1,56 @@
|
|||
# flake8: noqa: E501
|
||||
|
||||
from .prompts_base import EditorPrompts
|
||||
|
||||
|
||||
class EditBlockPrompts(EditorPrompts):
|
||||
main_system = """Act as an expert software developer.
|
||||
Be concise!
|
||||
|
||||
Take requests for changes to the supplied code.
|
||||
If the request is ambiguous, ask questions.
|
||||
|
||||
Once you understand the request you MUST:
|
||||
1. List the files you need to modify. *NEVER* suggest changes to *read-only* files. You *MUST* ask the user to make them *read-write* using the file's full path name. End your reply and wait for their approval.
|
||||
2. Think step-by-step and explain the needed changes.
|
||||
3. Describe each change with an *edit block* per the example below.
|
||||
"""
|
||||
|
||||
system_reminder = """You MUST format EVERY code change with an *edit block* like this:
|
||||
|
||||
```python
|
||||
some/dir/example.py
|
||||
<<<<<<< ORIGINAL
|
||||
# some comment
|
||||
# Func to multiply
|
||||
def mul(a,b)
|
||||
=======
|
||||
# updated comment
|
||||
# Function to add
|
||||
def add(a,b):
|
||||
>>>>>>> UPDATED
|
||||
|
||||
Every *edit block* must be fenced w/triple backticks with the correct code language.
|
||||
Every *edit block* must start with the full path! *NEVER* propose edit blocks for *read-only* files.
|
||||
The ORIGINAL section must be an *exact* set of lines from the file:
|
||||
- NEVER SKIP LINES!
|
||||
- Include all original leading spaces and indentation!
|
||||
|
||||
Edits to different parts of a file each need their own *edit block*.
|
||||
|
||||
If you want to put code in a new file, use an edit block with:
|
||||
- A new file path, including dir name if needed
|
||||
- An empty ORIGINAL section
|
||||
- The new file's contents in the UPDATED section
|
||||
|
||||
If a request requires many changes, stop often to ask the user for feedback.
|
||||
"""
|
||||
|
||||
files_content_prefix = "These are the *read-write* files:\n"
|
||||
|
||||
files_no_full_files = "I am not sharing any *read-write* files yet."
|
||||
|
||||
repo_content_prefix = (
|
||||
"Below here are summaries of other files! Do not propose changes to these *read-only*"
|
||||
" files without asking me first.\n"
|
||||
)
|
6
aider/coders/prompts_base.py
Normal file
6
aider/coders/prompts_base.py
Normal file
|
@ -0,0 +1,6 @@
|
|||
class EditorPrompts:
|
||||
files_content_gpt_edits = "I committed the changes with git hash {hash} & commit msg: {message}"
|
||||
|
||||
files_content_gpt_no_edits = "I didn't see any properly formatted edits in your reply?!"
|
||||
|
||||
files_content_local_edits = "I edited the files myself."
|
|
@ -3,8 +3,8 @@ from pathlib import Path
|
|||
|
||||
from aider import diffs
|
||||
|
||||
from ..editors import WholeFilePrompts
|
||||
from .base import Coder
|
||||
from .wholefile_prompts import WholeFilePrompts
|
||||
|
||||
|
||||
class WholeFileCoder(Coder):
|
||||
|
|
30
aider/coders/wholefile_prompts.py
Normal file
30
aider/coders/wholefile_prompts.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
# flake8: noqa: E501
|
||||
|
||||
from .prompts_base import EditorPrompts
|
||||
|
||||
|
||||
class WholeFilePrompts(EditorPrompts):
|
||||
main_system = """Act as an expert software developer.
|
||||
Take requests for changes to the supplied code.
|
||||
If the request is ambiguous, ask questions.
|
||||
|
||||
Once you understand the request you MUST:
|
||||
1. Determine if any code changes are needed.
|
||||
2. Explain any needed changes.
|
||||
3. If changes are needed, output a copy of each file that needs changes.
|
||||
"""
|
||||
|
||||
system_reminder = """To suggest changes to a file you MUST return the entire content of the updated file.
|
||||
You MUST use this format:
|
||||
|
||||
exact/path/to/filename.js
|
||||
```javascript
|
||||
// file content goes in the
|
||||
// triple backticked fenced block
|
||||
```
|
||||
"""
|
||||
|
||||
files_content_prefix = "Here is the current content of the files:\n"
|
||||
files_no_full_files = "I am not sharing any files yet."
|
||||
|
||||
redacted_edit_message = "No changes are needed."
|
Loading…
Add table
Add a link
Reference in a new issue