mirror of
https://github.com/velocitatem/PHANTOM.git
synced 2026-05-31 08:33:36 +00:00
* first implementation of elasticity demand computation * chor: fixing test :( * feature: rudemantary defintition of pricing pipeline * chor: fixing cross product missing data * add warning * feature: e2e pricing pipeline with inference
48 lines
2.1 KiB
Python
48 lines
2.1 KiB
Python
from .base import Agent as BaseAgent
|
|
from browser_use import Browser, Agent, ChatOpenAI
|
|
from enum import Enum
|
|
|
|
class AgentTypes(str, Enum):
|
|
GENERIC_BROWSER_USE_AGENT = "generic_browser_use_agent"
|
|
|
|
def _build_prompt(goal : str, environment_url : str) -> str:
|
|
#TODO: Improve prompt engineering here and experiment with
|
|
return f"""You are an autonomous agent tasked with achieving the following goal: {goal}
|
|
You have access to a web browser to interact with the environment at {environment_url}.
|
|
Use the browser to navigate, gather information, and perform actions necessary to accomplish your goal.
|
|
Be thorough and ensure you complete the task fully."""
|
|
|
|
class GenericBrowserUseAgent(BaseAgent):
|
|
def __init__(self,
|
|
goal: str,
|
|
url: str = "http://localhost:3000",
|
|
timeout: int = 300,
|
|
llm_model: str = "gpt-5-mini",
|
|
headless: bool = True):
|
|
super().__init__(goal, url, timeout)
|
|
self.llm_model = ChatOpenAI(model=llm_model)
|
|
self.browser = Browser(headless=headless)
|
|
self.agent = Agent(task=_build_prompt(goal, url),
|
|
llm=self.llm_model,
|
|
browser=self.browser)
|
|
async def act(self) -> str:
|
|
self.result = await self.agent.run()
|
|
# https://github.com/browser-use/browser-use/blob/main/browser_use/agent/views.py#L301
|
|
return self.result.final_result()
|
|
|
|
def get_agent(agent_type: AgentTypes, **kwargs) -> Agent:
|
|
if agent_type == AgentTypes.GENERIC_BROWSER_USE_AGENT:
|
|
return GenericBrowserUseAgent(**kwargs)
|
|
else:
|
|
raise ValueError(f"Unknown agent type: {agent_type}")
|
|
|
|
if __name__ == "__main__":
|
|
import asyncio
|
|
JTBD= "Find me the cheapest room in Madrid for 2 people in the next two days, review each hotel room in detail and then add it to cart."
|
|
agent = get_agent(AgentTypes.GENERIC_BROWSER_USE_AGENT,
|
|
goal=JTBD,
|
|
url="http://localhost:3000/start-task?uuid=d10f5ab3-a7b7-4e97-8d94-ab06f1537c0a",
|
|
timeout=300)
|
|
R=asyncio.run(agent.act())
|
|
print(R)
|