mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-06-14 15:25:17 +02:00
add browser memory to write code
This commit is contained in:
parent
5a83c4539a
commit
3d32a5d621
2 changed files with 14 additions and 3 deletions
|
|
@ -16,6 +16,7 @@ from metagpt.prompts.di.write_analysis_code import (
|
|||
REFLECTION_PROMPT,
|
||||
REFLECTION_SYSTEM_MSG,
|
||||
STRUCTUAL_PROMPT,
|
||||
BROWSER_INFO,
|
||||
)
|
||||
from metagpt.schema import Message, Plan
|
||||
from metagpt.utils.common import CodeParser, remove_comments
|
||||
|
|
@ -41,6 +42,7 @@ class WriteAnalysisCode(Action):
|
|||
tool_info: str = "",
|
||||
working_memory: list[Message] = None,
|
||||
use_reflection: bool = False,
|
||||
browser_memory: list[dict] = None,
|
||||
**kwargs,
|
||||
) -> str:
|
||||
structual_prompt = STRUCTUAL_PROMPT.format(
|
||||
|
|
@ -48,16 +50,20 @@ class WriteAnalysisCode(Action):
|
|||
plan_status=plan_status,
|
||||
tool_info=tool_info,
|
||||
)
|
||||
message = [Message(content=structual_prompt, role="user")]
|
||||
if browser_memory:
|
||||
browser_prompt = BROWSER_INFO.format(browser_memory=browser_memory)
|
||||
message = [Message(content=browser_prompt, role="user")] + message
|
||||
|
||||
working_memory = working_memory or []
|
||||
context = self.llm.format_msg([Message(content=structual_prompt, role="user")] + working_memory)
|
||||
context = self.llm.format_msg(message + working_memory)
|
||||
|
||||
# LLM call
|
||||
if use_reflection:
|
||||
code = await self._debug_with_reflection(context=context, working_memory=working_memory)
|
||||
else:
|
||||
rsp = await self.llm.aask(context, system_msgs=[INTERPRETER_SYSTEM_MSG], **kwargs)
|
||||
code = CodeParser.parse_code(text=rsp)
|
||||
code = CodeParser.parse_code(text=rsp, lang="python")
|
||||
|
||||
return code
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ class RoleZero(Role):
|
|||
# Equipped with three basic tools by default for optional use
|
||||
editor: Editor = Editor()
|
||||
browser: Browser = Browser()
|
||||
browser_memory: list[dict] = [] # store the memory of browser
|
||||
# terminal: Terminal = Terminal() # FIXME: TypeError: cannot pickle '_thread.lock' object
|
||||
|
||||
# Experience
|
||||
|
|
@ -151,7 +152,11 @@ class RoleZero(Role):
|
|||
pattern = re.compile(r"Command Browser\.(\w+) executed")
|
||||
for index, msg in zip(range(len(memory), 0, -1), memory[::-1]):
|
||||
if pattern.match(msg.content):
|
||||
memory.insert(index, UserMessage(cause_by="browser", content=await self.browser.view()))
|
||||
content = await self.browser.view()
|
||||
memory.insert(index, UserMessage(cause_by="browser", content=content))
|
||||
browser_url = re.search('URL: (.*?)\\n', content).group(1)
|
||||
browser_action = {'command': pattern.match(msg.content).group(1), 'current url': browser_url}
|
||||
self.browser_memory.append(browser_action)
|
||||
break
|
||||
context = self.llm.format_msg(memory + [UserMessage(content=prompt)])
|
||||
# print(*context, sep="\n" + "*" * 5 + "\n")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue