mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-05-03 04:42:38 +02:00
Merge branch 'da_change' into 'mgx_ops'
Editor constraints & add role info See merge request pub/MetaGPT!316
This commit is contained in:
commit
bd63a7c665
4 changed files with 19 additions and 10 deletions
|
|
@ -8,8 +8,8 @@ EXTRA_INSTRUCTION = """
|
|||
- For information searching requirement, you should use the Browser tool instead of web scraping.
|
||||
- When no link is provided, you should use the Browser tool to search for the information.
|
||||
7. When you are making plan. It is highly recommend to plan and append all the tasks in first response once time, except for 7.1.
|
||||
7.1. When the requirement is given with a file, read the file first through either Editor.read (write code instead for excel) WITHOUT a plan. After reading the file content, use RoleZero.reply_to_human if the requirement can be answered straightaway, otherwise, make a plan if further calculation is needed.
|
||||
8. Don't finish_current_task multiple times for the same task.
|
||||
7.1. When the requirement is given with a file, read the file first through either Editor.read (write code instead for csv or excel) WITHOUT a plan. After reading the file content, use RoleZero.reply_to_human if the requirement can be answered straightaway, otherwise, make a plan if further calculation is needed.
|
||||
8. Don't finish_current_task multiple times for the same task.
|
||||
9. Finish current task timely, such as when the code is written and executed successfully.
|
||||
10. When using the command 'end', add the command 'finish_current_task' before it.
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ Note:
|
|||
|
||||
###########################
|
||||
SYSTEM_PROMPT = """
|
||||
# Basic Info
|
||||
{role_info}
|
||||
|
||||
# Data Structure
|
||||
class Task(BaseModel):
|
||||
|
|
@ -206,4 +208,4 @@ Response Category: AMBIGUOUS.
|
|||
QUICK_RESPONSE_SYSTEM_PROMPT = """
|
||||
{role_info}
|
||||
However, you MUST respond to the user message by yourself directly, DON'T ask your team members.
|
||||
"""
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@ from metagpt.prompts.di.role_zero import (
|
|||
ASK_HUMAN_COMMAND,
|
||||
CMD_PROMPT,
|
||||
JSON_REPAIR_PROMPT,
|
||||
QUICK_THINK_PROMPT,
|
||||
QUICK_THINK_EXAMPLES,
|
||||
QUICK_THINK_SYSTEM_PROMPT,
|
||||
QUICK_RESPONSE_SYSTEM_PROMPT,
|
||||
QUICK_THINK_EXAMPLES,
|
||||
QUICK_THINK_PROMPT,
|
||||
QUICK_THINK_SYSTEM_PROMPT,
|
||||
REGENERATE_PROMPT,
|
||||
ROLE_INSTRUCTION,
|
||||
SYSTEM_PROMPT,
|
||||
|
|
@ -166,7 +166,11 @@ class RoleZero(Role):
|
|||
### Role Instruction ###
|
||||
instruction = self.instruction.strip()
|
||||
system_prompt = self.system_prompt.format(
|
||||
task_type_desc=self.task_type_desc, available_commands=tool_info, example=example, instruction=instruction
|
||||
role_info=self._get_prefix(),
|
||||
task_type_desc=self.task_type_desc,
|
||||
available_commands=tool_info,
|
||||
example=example,
|
||||
instruction=instruction,
|
||||
)
|
||||
|
||||
### Make Decision Dynamically ###
|
||||
|
|
@ -269,7 +273,7 @@ class RoleZero(Role):
|
|||
rsp = await self._act()
|
||||
actions_taken += 1
|
||||
return rsp # return output from the last action
|
||||
|
||||
|
||||
def format_quick_system_prompt(self) -> str:
|
||||
"""Format the system prompt for quick thinking."""
|
||||
return QUICK_THINK_SYSTEM_PROMPT.format(examples=QUICK_THINK_EXAMPLES, role_info=self._get_prefix())
|
||||
|
|
@ -289,7 +293,10 @@ class RoleZero(Role):
|
|||
if "QUICK" in intent_result or "AMBIGUOUS" in intent_result: # llm call with the original context
|
||||
async with ThoughtReporter(enable_llm_stream=True) as reporter:
|
||||
await reporter.async_report({"type": "quick"})
|
||||
answer = await self.llm.aask(self.llm.format_msg(memory), system_msgs=[QUICK_RESPONSE_SYSTEM_PROMPT.format(role_info=self._get_prefix())])
|
||||
answer = await self.llm.aask(
|
||||
self.llm.format_msg(memory),
|
||||
system_msgs=[QUICK_RESPONSE_SYSTEM_PROMPT.format(role_info=self._get_prefix())],
|
||||
)
|
||||
elif "SEARCH" in intent_result:
|
||||
query = "\n".join(str(msg) for msg in memory)
|
||||
answer = await SearchEnhancedQA().run(query)
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class FileBlock(BaseModel):
|
|||
class Editor(BaseModel):
|
||||
"""
|
||||
A tool for reading, understanding, writing, and editing files.
|
||||
Support local file including text-based files (txt, md, json, py, html, js, css, etc.), pdf, docx, excluding images, excel, or online links
|
||||
Support local file including text-based files (txt, md, json, py, html, js, css, etc.), pdf, docx, excluding images, csv, excel, or online links
|
||||
"""
|
||||
|
||||
model_config = ConfigDict(arbitrary_types_allowed=True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue