Skip to main content

Make websites accessible for AI agents

Project description

🌐 Browser Use

Make websites accessible for AI agents 🤖.

GitHub stars License: MIT Python 3.11+ Discord

Browser use is the easiest way to connect your AI agents with the browser. If you have used Browser Use for your project feel free to show it off in our Discord.

Quick start

With pip:

pip install browser-use

Spin up your agent:

from langchain_openai import ChatOpenAI
from browser_use import Agent

agent = Agent(
    task="Find a one-way flight from Bali to Oman on 12 January 2025 on Google Flights. Return me the cheapest option.",
    llm=ChatOpenAI(model="gpt-4o"),
)

# ... inside an async function
await agent.run()

And don't forget to add your API keys to your .env file.

OPENAI_API_KEY=
ANTHROPIC_API_KEY=

Demos

Prompt: Go to hackernews on show hn and give me top 10 post titles, their points and hours. Calculate for each the ratio of points per hour. (1x speed)

Prompt: Search the top 3 AI companies 2024 and find what out what concrete hardware each is using for their model. (1x speed)

Features ⭐

  • Vision + html extraction
  • Automatic multi-tab management
  • Extract clicked elements XPaths
  • Add custom actions (e.g. add data to database which the LLM can use)
  • Self-correcting
  • Use any LLM supported by LangChain (e.g. gpt4o, gpt4o mini, claude 3.5 sonnet, llama 3.1 405b, etc.)

Register custom actions

If you want to add custom actions your agent can take, you can register them like this:

from browser_use.agent.service import Agent
from browser_use.browser.service import Browser
from browser_use.controller.service import Controller

# Initialize controller first
controller = Controller()

@controller.action('Ask user for information')
def ask_human(question: str, display_question: bool) -> str:
	return input(f'\n{question}\nInput: ')

Or define your parameters using Pydantic

class JobDetails(BaseModel):
title: str
company: str
job_link: str
salary: Optional[str] = None

@controller.action('Save job details which you found on page', param_model=JobDetails, requires_browser=True)
def save_job(params: JobDetails, browser: Browser):
	print(params)

  # use the browser normally
  browser.driver.get(params.job_link)

and then run your agent:

model = ChatAnthropic(model_name='claude-3-5-sonnet-20240620', timeout=25, stop=None, temperature=0.3)
agent = Agent(task=task, llm=model, controller=controller)

await agent.run()

Get XPath history

To get the entire history of everything the agent has done, you can use the output of the run method:

history: list[AgentHistory] = await agent.run()

print(history)

More examples

For more examples see the examples folder or join the Discord and show off your project.

Telemetry

We collect anonymous usage data to help us understand how the library is being used and to identify potential issues. There is no privacy risk, as no personal information is collected. We collect data with PostHog.

You can opt out of telemetry by setting the ANONYMIZED_TELEMETRY=false environment variable.

Contributing

Contributions are welcome! Feel free to open issues for bugs or feature requests.

Local Setup

  1. Create a virtual environment and install dependencies:
# To install all dependencies including dev
pip install . ."[dev]"
  1. Add your API keys to the .env file:
cp .env.example .env

or copy the following to your .env file:

OPENAI_API_KEY=
ANTHROPIC_API_KEY=

You can use any LLM model supported by LangChain by adding the appropriate environment variables. See langchain models for available options.

Building the package

hatch build

Feel free to join the Discord for discussions and support.


Star ⭐ this repo if you find it useful!
Made with ❤️ by the Browser-Use team

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

browser_use-0.1.4.tar.gz (176.1 kB view details)

Uploaded Source

Built Distribution

browser_use-0.1.4-py3-none-any.whl (34.1 kB view details)

Uploaded Python 3

File details

Details for the file browser_use-0.1.4.tar.gz.

File metadata

  • Download URL: browser_use-0.1.4.tar.gz
  • Upload date:
  • Size: 176.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for browser_use-0.1.4.tar.gz
Algorithm Hash digest
SHA256 63a964dbe53146a5732828003e815a4b4d43e762a9c655fae6e8ade5bef45a91
MD5 0e4c698ecf7b39fcda0f98fb4a75e370
BLAKE2b-256 3e0ecc6f4818b64fe0707223293d939c6e09155fb1e2f4582a0ab5954e48ffca

See more details on using hashes here.

File details

Details for the file browser_use-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: browser_use-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 34.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for browser_use-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ab042486efcf0f29e72e4965c407195da618b43111e5627b944443459fe82e91
MD5 d2765e578e61130ce9ba244168c26585
BLAKE2b-256 e2b6a1c7b7a4b75213b928a18c2105ab05cea907d4bfeafa3b12e984d2a8b6fe

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page