mirror of
https://github.com/velocitatem/PHANTOM.git
synced 2026-05-31 16:43:36 +00:00
* baseline setup of agent abstract * feat: new implementation of simple AI agent that can follow a goal and return * refactored import structure and created full tests * pytest setup a github workflow to run tests + more ignores * singularity for pushing * fixing builds of PDFs * inital structure of docs * init styles and docs * basic style implementation * 13 create outline for research paper draft (#18) * updated outline for paper from issue * extra paper sections and some formalization of series data * algorithms and acknowledgements * updated outline for paper from issue * Refactor docker-compose services to use individual Dockerfiles (#20) * Initial plan * Refactor services into individual Dockerfiles Co-authored-by: velocitatem <60182044+velocitatem@users.noreply.github.com> * Add EXPOSE directives to all Dockerfiles with port documentation Co-authored-by: velocitatem <60182044+velocitatem@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: velocitatem <60182044+velocitatem@users.noreply.github.com> * 2 nextjs scaffold with store mode shop and admin session experiment wiring event emission v1 (#17) * chore: cleaning gitignore * formating and env documentation * feat: context switching of hotel/airline depndent on env var via middleware * fixed alignment and building * wrong file * prods * fixed applying style * better session cookie management * tentative session storage with maybe using airtable * migrated api of ingestion * events and products apge * fixing build * 13 create outline for research paper draft (#18) * updated outline for paper from issue * extra paper sections and some formalization of series data * algorithms and acknowledgements * updated outline for paper from issue * upadted text formating * event unification * refactor tracking to ues callbacks instead of refs * implement a pricing display api with session passing * moved middleware to proxy according to new changes in Nextjs * refactoed kafka ingestion to go via backend not web-db * Refactor docker-compose services to use individual Dockerfiles (#20) * Initial plan * Refactor services into individual Dockerfiles Co-authored-by: velocitatem <60182044+velocitatem@users.noreply.github.com> * Add EXPOSE directives to all Dockerfiles with port documentation Co-authored-by: velocitatem <60182044+velocitatem@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: velocitatem <60182044+velocitatem@users.noreply.github.com> * fixing small bugs and adding exepriments to tracking * added some doc * fixing prod * prod kafka server logging * topic auto create * pytest setup a github workflow to run tests + more ignores * getting data from agents properly * proper pipeline to handle data and build matrices * fixing backend dumping * fixing agents and ignore * fixing import for tests --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
45 lines
2.0 KiB
Python
45 lines
2.0 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= "Name all the products on this site and try to find out more about each product by clicking into them (they might not open)"
|
|
agent = get_agent(AgentTypes.GENERIC_BROWSER_USE_AGENT, goal=JTBD, url="http://localhost:3000/products", timeout=300)
|
|
R=asyncio.run(agent.act())
|
|
print(R)
|