from langchain_openai import ChatOpenAI from browser_use import Agent import asyncio from dotenv import load_dotenv load_dotenv() import os os.system("playwright install") import sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from langchain.tools import BaseTool from browser_use.browser.browser import Browser, BrowserConfig from browser_use.controller.service import Controller browser = Browser(config=BrowserConfig(headless= True)) controller = Controller() if os.name == 'nt': asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) async def main(task): agent = Agent( task=task, llm=ChatOpenAI(model="gpt-4o-2024-11-20",api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_API_BASE")), controller=controller, browser=browser, use_vision=True, ) result = await agent.run() return result class browseruse(BaseTool): name: str = "browseruse" description: str = ("Calling the browser to search for information in specific website" "input query, return the searching results") openai_api_key: str = None def __init__( self,openai_api_key ): super().__init__() self.openai_api_key = openai_api_key def _run(self, task: str) -> str: result = asyncio.run(main(task, self.openai_api_key)) return result async def _arun(self, smiles: str) -> str: """Use the tool asynchronously.""" raise NotImplementedError()