Modify prompt in write_code_guide_an.py and write_code.py

This commit is contained in:
mannaandpoem 2023-12-29 13:55:30 +08:00
parent 850c3ec094
commit db22ed214f
3 changed files with 13 additions and 13 deletions

View file

@ -123,7 +123,7 @@ class WriteCode(Action):
else:
code_context = await self.get_codes(coding_context.task_doc, exclude=self.context.filename)
if guideline: # guide write code 也有两种方式,进行尝试
if guideline:
prompt = WRITE_CODE_INCREMENT_TEMPLATE.format(
guideline=guideline,
design=coding_context.design_doc.content if coding_context.design_doc else "",
@ -165,17 +165,17 @@ class WriteCode(Action):
src_file_repo = CONFIG.git_repo.new_file_repository(relative_path=CONFIG.src_workspace)
if mode == "guide":
# 从两个repo中取code并结合在一起
src_files = src_file_repo.all_files
old_file_repo = CONFIG.git_repo.new_file_repository(relative_path=CONFIG.old_workspace)
old_files = old_file_repo.all_files
union_files_list = list(set(src_files) | set(old_files))
for filename in union_files_list:
if filename == exclude:
if filename in old_files:
if filename in old_files and filename != "main.py":
doc = await old_file_repo.get(filename=filename) # 使用原始代码
else:
continue
codes.append(f"----- Legacy {filename}\n```{doc.content}```")
else:
doc = await src_file_repo.get(filename=filename) # 使用先前生成的代码
@ -185,7 +185,7 @@ class WriteCode(Action):
# else:
# continue
continue # 跳过
codes.append(f"----- {filename}\n```{doc.content}```")
codes.append(f"----- {filename}\n```{doc.content}```")
else:
for filename in code_filenames:

View file

@ -18,10 +18,10 @@ from metagpt.schema import Document
GUIDELINE = ActionNode(
key="Code Guideline",
expected_type=list[str],
instruction="crafting comprehensive incremental development plans and providing detailed code guidance",
instruction="Developing comprehensive and incremental software development plans while providing detailed code guidance.",
example=[
"`calculator.py` should be extended to include methods for subtraction, multiplication, and division. Error handling should be implemented for division to prevent division by zero.",
"New endpoints for subtraction, multiplication, and division should be added to `main.py`.",
"Enhance the functionality of `calculator.py` by extending it to incorporate methods for subtraction, multiplication, and division. Implement robust error handling for the division operation to mitigate potential issues related to division by zero.",
"Integrate new API endpoints for subtraction, multiplication, and division into the existing codebase of `main.py`. Ensure seamless integration with the overall application architecture and maintain consistency with coding standards.",
],
)
@ -155,10 +155,11 @@ ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenc
2. COMPLETE CODE: Your code will be part of the entire project, so please implement complete, reliable, reusable code snippets.
3. Set default value: If there is any setting, ALWAYS SET A DEFAULT VALUE, ALWAYS USE STRONG TYPE AND EXPLICIT VARIABLE. AVOID circular import.
4. Follow design: YOU MUST FOLLOW "Data structures and interfaces". DONT CHANGE ANY DESIGN. Do not use public member functions that do not exist in your design.
5. CAREFULLY CHECK THAT YOU DONT MISS ANY NECESSARY CLASS/FUNCTION IN THIS FILE.
6. Before using a external variable/module, make sure you import it first.
7. Write out EVERY CODE DETAIL, DON'T LEAVE TODO.
8. Attention: Make modifications and additions to the legacy code in accordance with the provided guidelines and API. Ensure that the complete code is implemented without any omissions.
5. Follow Guideline: If Legacy Code files contain {filename}, you are required to follow the Guideline to merge the Incremental Change into the Legacy {filename} file when rewriting {filename} file.
6. CAREFULLY CHECK THAT YOU DONT MISS ANY NECESSARY CLASS/FUNCTION IN THIS FILE.
7. Before using a external variable/module, make sure you import it first.
8. Write out EVERY CODE DETAIL, DON'T LEAVE TODO.
9. Attention: Implement the functionality required within the current file's scope, reusing existing code whenever possible. For instance, main.py achieves its purpose by instantiating an already implemented class, rather than manually implementing a class in main.py.
"""
CODE_GUIDE_CONTEXT_EXAMPLE = """

View file

@ -80,7 +80,6 @@ class Engineer(Role):
)
n_borg: int = 1
use_code_review: bool = False
use_code_guide: bool = True
code_todos: list = []
summarize_todos = []
@ -138,7 +137,7 @@ class Engineer(Role):
return None
async def _act_write_code(self):
if self.use_code_guide:
if CONFIG.inc:
code_guideline = await self._write_code_guideline()
changed_files = await self._act_sp_with_cr(review=self.use_code_review, guideline=code_guideline)
else: