fix : browser duplication, isolate driver creation
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user