fix : various bugs & improve memory system

This commit is contained in:
martin legrand 2025-03-23 17:25:49 +01:00
parent caf1b5e9a9
commit 8b5bb28c94
7 changed files with 15 additions and 22 deletions

View File

@ -17,7 +17,7 @@ class BrowserAgent(Agent):
self.tools = { self.tools = {
"web_search": searxSearch(), "web_search": searxSearch(),
} }
self.role = "Web Research" self.role = "Web surfing, website & news"
self.type = "browser_agent" self.type = "browser_agent"
self.browser = Browser() self.browser = Browser()
self.current_page = "" self.current_page = ""

View File

@ -18,7 +18,7 @@ class CasualAgent(Agent):
"file_finder": FileFinder(), "file_finder": FileFinder(),
"bash": BashInterpreter() "bash": BashInterpreter()
} }
self.role = "Chat and Conversation" self.role = "talk, quick search"
self.type = "casual_agent" self.type = "casual_agent"
def process(self, prompt, speech_module) -> str: def process(self, prompt, speech_module) -> str:

View File

@ -20,7 +20,7 @@ class CoderAgent(Agent):
"go": GoInterpreter(), "go": GoInterpreter(),
"file_finder": FileFinder() "file_finder": FileFinder()
} }
self.role = "Code Assistance" self.role = "Coding task"
self.type = "code_agent" self.type = "code_agent"
def process(self, prompt, speech_module) -> str: def process(self, prompt, speech_module) -> str:

View File

@ -18,23 +18,15 @@ class FileAgent(Agent):
self.type = "file_agent" self.type = "file_agent"
def process(self, prompt, speech_module) -> str: def process(self, prompt, speech_module) -> str:
complete = False
exec_success = False exec_success = False
self.memory.push('user', prompt) self.memory.push('user', prompt)
self.wait_message(speech_module) self.wait_message(speech_module)
while not complete: animate_thinking("Thinking...", color="status")
if exec_success: answer, reasoning = self.llm_request()
complete = True exec_success, _ = self.execute_modules(answer)
animate_thinking("Thinking...", color="status") answer = self.remove_blocks(answer)
answer, reasoning = self.llm_request() self.last_answer = answer
exec_success, _ = self.execute_modules(answer)
answer = self.remove_blocks(answer)
self.last_answer = answer
complete = True
for name, tool in self.tools.items():
if tool.found_executable_blocks():
complete = False # AI read results and continue the conversation
return answer, reasoning return answer, reasoning
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -28,7 +28,7 @@ class Browser:
'Accept-Language': 'en-US,en;q=0.9', 'Accept-Language': 'en-US,en;q=0.9',
'Referer': 'https://www.google.com/', 'Referer': 'https://www.google.com/',
} }
self.js_scripts_folder = "./web_scripts/" self.js_scripts_folder = "./sources/web_scripts/"
try: try:
chrome_options = Options() chrome_options = Options()
chrome_path = self.get_chrome_path() chrome_path = self.get_chrome_path()
@ -258,7 +258,7 @@ class Browser:
except Exception as e: except Exception as e:
self.logger.error(f"Error extracting form inputs: {str(e)}") self.logger.error(f"Error extracting form inputs: {str(e)}")
return f"Error extracting form inputs." return [f"Error extracting form inputs."]
def get_buttons_xpath(self) -> List[str]: def get_buttons_xpath(self) -> List[str]:
""" """

View File

@ -80,10 +80,10 @@ class Memory():
def push(self, role: str, content: str) -> None: def push(self, role: str, content: str) -> None:
"""Push a message to the memory.""" """Push a message to the memory."""
self.memory.append({'role': role, 'content': content})
# EXPERIMENTAL
if self.memory_compression and role == 'assistant': if self.memory_compression and role == 'assistant':
self.compress() self.compress()
# we don't compress the last message
self.memory.append({'role': role, 'content': content})
def clear(self) -> None: def clear(self) -> None:
self.memory = [] self.memory = []
@ -133,9 +133,9 @@ class Memory():
if not self.memory_compression: if not self.memory_compression:
return return
for i in range(len(self.memory)): for i in range(len(self.memory)):
if i <= 2: if i < 3:
continue continue
if self.memory[i]['role'] == 'assistant': if len(self.memory[i]['content']) > 1024:
self.memory[i]['content'] = self.summarize(self.memory[i]['content']) self.memory[i]['content'] = self.summarize(self.memory[i]['content'])
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -35,6 +35,7 @@ class PyInterpreter(Tools):
try: try:
try: try:
buffer = exec(code, global_vars) buffer = exec(code, global_vars)
print(buffer)
if buffer is not None: if buffer is not None:
output = buffer + '\n' output = buffer + '\n'
except Exception as e: except Exception as e: