fix : browser duplication, isolate driver creation

This commit is contained in:
martin legrand
2025-03-26 14:17:52 +01:00
parent 9080697dc0
commit 8c425f62b6
10 changed files with 82 additions and 79 deletions
+4 -1
View File
@@ -34,7 +34,8 @@ class Agent():
prompt_path:str,
provider,
recover_last_session=True,
verbose=False) -> None:
verbose=False,
browser=None) -> None:
"""
Args:
name (str): Name of the agent.
@@ -42,9 +43,11 @@ class Agent():
provider: The provider for the LLM.
recover_last_session (bool, optional): Whether to recover the last conversation.
verbose (bool, optional): Enable verbose logging if True. Defaults to False.
browser: The browser class for web navigation (only for browser agent).
"""
self.agent_name = name
self.browser = browser
self.role = None
self.type = None
self.current_directory = os.getcwd()
+3 -3
View File
@@ -9,11 +9,11 @@ from datetime import date
from typing import List, Tuple
class BrowserAgent(Agent):
def __init__(self, name, prompt_path, provider, verbose=False):
def __init__(self, name, prompt_path, provider, verbose=False, browser=None):
"""
The Browser agent is an agent that navigate the web autonomously in search of answer
"""
super().__init__(name, prompt_path, provider, verbose)
super().__init__(name, prompt_path, provider, verbose, browser)
self.tools = {
"web_search": searxSearch(),
}
@@ -24,7 +24,7 @@ class BrowserAgent(Agent):
"es": "web"
}
self.type = "browser_agent"
self.browser = Browser()
self.browser = browser
self.current_page = ""
self.search_history = []
self.navigable_links = []
+1 -1
View File
@@ -11,7 +11,7 @@ class CasualAgent(Agent):
"""
The casual agent is a special for casual talk to the user without specific tasks.
"""
super().__init__(name, prompt_path, provider, verbose)
super().__init__(name, prompt_path, provider, verbose, None)
self.tools = {
} # No tools for the casual agent
self.role = {
+1 -1
View File
@@ -12,7 +12,7 @@ class CoderAgent(Agent):
The code agent is an agent that can write and execute code.
"""
def __init__(self, name, prompt_path, provider, verbose=False):
super().__init__(name, prompt_path, provider, verbose)
super().__init__(name, prompt_path, provider, verbose, None)
self.tools = {
"bash": BashInterpreter(),
"python": PyInterpreter(),
+1 -1
View File
@@ -9,7 +9,7 @@ class FileAgent(Agent):
"""
The file agent is a special agent for file operations.
"""
super().__init__(name, prompt_path, provider, verbose)
super().__init__(name, prompt_path, provider, verbose, None)
self.tools = {
"file_finder": FileFinder(),
"bash": BashInterpreter()
+4 -3
View File
@@ -7,19 +7,20 @@ from sources.agents.browser_agent import BrowserAgent
from sources.tools.tools import Tools
class PlannerAgent(Agent):
def __init__(self, name, prompt_path, provider, verbose=False):
def __init__(self, name, prompt_path, provider, verbose=False, browser=None):
"""
The planner agent is a special agent that divides and conquers the task.
"""
super().__init__(name, prompt_path, provider, verbose)
super().__init__(name, prompt_path, provider, verbose, None)
self.tools = {
"json": Tools()
}
self.tools['json'].tag = "json"
self.browser = browser
self.agents = {
"coder": CoderAgent(name, "prompts/coder_agent.txt", provider, verbose=False),
"file": FileAgent(name, "prompts/file_agent.txt", provider, verbose=False),
"web": BrowserAgent(name, "prompts/browser_agent.txt", provider, verbose=False)
"web": BrowserAgent(name, "prompts/browser_agent.txt", provider, verbose=False, browser=browser)
}
self.role = {
"en": "Research, setup and code",