| """ |
| To Use It: |
| |
| Example 1: Using OpenAI (default), with default task: 'go to reddit and search for posts about browser-use' |
| python command_line.py |
| |
| Example 2: Using OpenAI with a Custom Query |
| python command_line.py --query "go to google and search for browser-use" |
| |
| Example 3: Using Anthropic's Claude Model with a Custom Query |
| python command_line.py --query "find latest Python tutorials on Medium" --provider anthropic |
| |
| """ |
| import os |
| import sys |
| import argparse |
| import asyncio |
|
|
| |
| sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |
|
|
| from dotenv import load_dotenv |
|
|
| from browser_use import Agent |
| from browser_use.browser.browser import Browser, BrowserConfig |
| from browser_use.controller.service import Controller |
|
|
|
|
| load_dotenv() |
|
|
| def get_llm(provider: str): |
| if provider == 'anthropic': |
| from langchain_anthropic import ChatAnthropic |
| api_key = os.getenv("ANTHROPIC_API_KEY") |
| if not api_key: |
| raise ValueError("Error: ANTHROPIC_API_KEY is not set. Please provide a valid API key.") |
| |
| return ChatAnthropic( |
| model_name='claude-3-5-sonnet-20240620', timeout=25, stop=None, temperature=0.0 |
| ) |
| elif provider == 'openai': |
| from langchain_openai import ChatOpenAI |
| api_key = os.getenv("OPENAI_API_KEY") |
| if not api_key: |
| raise ValueError("Error: OPENAI_API_KEY is not set. Please provide a valid API key.") |
| |
| return ChatOpenAI(model='gpt-4o', temperature=0.0) |
|
|
| else: |
| raise ValueError(f'Unsupported provider: {provider}') |
|
|
| def parse_arguments(): |
| """Parse command-line arguments.""" |
| parser = argparse.ArgumentParser(description="Automate browser tasks using an LLM agent.") |
| parser.add_argument( |
| '--query', |
| type=str, |
| help='The query to process', |
| default='go to reddit and search for posts about browser-use' |
| ) |
| parser.add_argument( |
| '--provider', |
| type=str, |
| choices=['openai', 'anthropic'], |
| default='openai', |
| help='The model provider to use (default: openai)', |
| ) |
| return parser.parse_args() |
|
|
| def initialize_agent(query: str, provider: str): |
| """Initialize the browser agent with the given query and provider.""" |
| llm = get_llm(provider) |
| controller = Controller() |
| browser = Browser(config=BrowserConfig()) |
|
|
| return Agent( |
| task=query, |
| llm=llm, |
| controller=controller, |
| browser=browser, |
| use_vision=True, |
| max_actions_per_step=1, |
| ), browser |
|
|
| async def main(): |
| """Main async function to run the agent.""" |
| args = parse_arguments() |
| agent, browser = initialize_agent(args.query, args.provider) |
|
|
| await agent.run(max_steps=25) |
| |
| input('Press Enter to close the browser...') |
| await browser.close() |
|
|
|
|
| if __name__ == "__main__": |
| asyncio.run(main()) |