mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-30 17:24:59 +00:00
improved prompting, fix ctags bug
This commit is contained in:
parent
4593e7812c
commit
680fc45fb3
4 changed files with 33 additions and 15 deletions
|
@ -159,17 +159,28 @@ class Coder:
|
||||||
return prompt
|
return prompt
|
||||||
|
|
||||||
def get_files_messages(self):
|
def get_files_messages(self):
|
||||||
|
all_content = ""
|
||||||
|
if self.abs_fnames:
|
||||||
files_content = prompts.files_content_prefix
|
files_content = prompts.files_content_prefix
|
||||||
files_content += self.get_files_content()
|
files_content += self.get_files_content()
|
||||||
|
all_content += files_content
|
||||||
all_content = files_content
|
|
||||||
|
|
||||||
if self.repo is not None:
|
if self.repo is not None:
|
||||||
files_listing = get_tags_map(self.get_all_abs_files())
|
other_files = set(self.get_all_abs_files()) - set(self.abs_fnames)
|
||||||
repo_content = prompts.repo_content_prefix
|
if other_files:
|
||||||
|
files_listing = get_tags_map(other_files)
|
||||||
|
if self.abs_fnames:
|
||||||
|
other = "other "
|
||||||
|
else:
|
||||||
|
other = ""
|
||||||
|
|
||||||
|
repo_content = prompts.repo_content_prefix.format(other=other)
|
||||||
repo_content += files_listing
|
repo_content += files_listing
|
||||||
|
|
||||||
all_content = repo_content + "\n\n" + files_content
|
if all_content:
|
||||||
|
all_content += "\n\n"
|
||||||
|
|
||||||
|
all_content += repo_content
|
||||||
|
|
||||||
files_messages = [
|
files_messages = [
|
||||||
dict(role="user", content=all_content),
|
dict(role="user", content=all_content),
|
||||||
|
@ -180,7 +191,7 @@ class Coder:
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
# utils.show_messages(files_messages, "FILES")
|
utils.show_messages(files_messages, "FILES")
|
||||||
return files_messages
|
return files_messages
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
|
|
@ -50,12 +50,13 @@ def split_path(path, root_dname):
|
||||||
|
|
||||||
|
|
||||||
def get_tags(filename, root_dname):
|
def get_tags(filename, root_dname):
|
||||||
yield split_path(filename, root_dname)
|
|
||||||
|
|
||||||
cmd = ["ctags", "--fields=+S", "--output-format=json", filename]
|
cmd = ["ctags", "--fields=+S", "--output-format=json", filename]
|
||||||
output = subprocess.check_output(cmd).decode("utf-8")
|
output = subprocess.check_output(cmd).decode("utf-8")
|
||||||
output = output.splitlines()
|
output = output.splitlines()
|
||||||
|
|
||||||
|
if not output:
|
||||||
|
yield split_path(filename, root_dname)
|
||||||
|
|
||||||
for line in output:
|
for line in output:
|
||||||
tag = json.loads(line)
|
tag = json.loads(line)
|
||||||
path = tag.get("path")
|
path = tag.get("path")
|
||||||
|
|
|
@ -79,10 +79,13 @@ files_content_gpt_no_edits = "I wasn't able to see any properly formatted edits
|
||||||
|
|
||||||
files_content_local_edits = "I made some changes to the files myself."
|
files_content_local_edits = "I made some changes to the files myself."
|
||||||
|
|
||||||
repo_content_prefix = "Here is a map showing all the other files and key content:\n\n"
|
|
||||||
|
|
||||||
files_content_prefix = (
|
files_content_prefix = (
|
||||||
"You can propose changes to *only* these files (ask if you need to see others):\n\n"
|
"You can propose changes to *only* these files (ask before editing others):\n\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
repo_content_prefix = (
|
||||||
|
"Here is a map showing all the {other}files and ctags content. You *must* ask with the full"
|
||||||
|
" path of the file before suggesting edits to these files:\n\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
files_content_suffix = (
|
files_content_suffix = (
|
||||||
|
|
|
@ -5,6 +5,7 @@ from unittest.mock import MagicMock
|
||||||
from aider.commands import Commands
|
from aider.commands import Commands
|
||||||
from aider.io import InputOutput
|
from aider.io import InputOutput
|
||||||
|
|
||||||
|
|
||||||
class TestCommands(TestCase):
|
class TestCommands(TestCase):
|
||||||
def test_cmd_add(self):
|
def test_cmd_add(self):
|
||||||
# Create a temporary directory and change the current working directory
|
# Create a temporary directory and change the current working directory
|
||||||
|
@ -13,7 +14,9 @@ class TestCommands(TestCase):
|
||||||
|
|
||||||
# Initialize the Commands and InputOutput objects
|
# Initialize the Commands and InputOutput objects
|
||||||
io = InputOutput(pretty=False, yes=True)
|
io = InputOutput(pretty=False, yes=True)
|
||||||
coder = MagicMock()
|
from aider.coder import Coder
|
||||||
|
|
||||||
|
coder = Coder(io)
|
||||||
commands = Commands(io, coder)
|
commands = Commands(io, coder)
|
||||||
|
|
||||||
# Call the cmd_add method with 'foo.txt' and 'bar.txt' as a single string
|
# Call the cmd_add method with 'foo.txt' and 'bar.txt' as a single string
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue