Files
Saurav Panda 5953df7d2f fix(llm): make bu-2-0 the default again, keep mini opt-in
0.13.8 shipped bu-2-0-mini-preview as the ChatBrowserUse default, which
means Agent(task=...) with no llm - and every bare ChatBrowserUse() -
silently moved onto a preview model on upgrade, with no code change on
the caller's side.

Two problems with that. A preview id can change behaviour or be renamed,
so it is the wrong thing to reach by omission. And per-token price is the
wrong yardstick for an agent: total cost is tokens-per-step times steps,
and steps is a function of model quality, so a cheaper-per-token model
that needs more steps to finish can cost more and take longer. We do not
yet have a per-task benchmark number for mini to say which way that goes.

bu-2-0-mini-preview stays a first-class option: still accepted, still
priced, still what the examples demonstrate. It is just opted into by
name now rather than landed on by default. Revisit once the benchmark
number exists.
2026-08-17 09:19:26 -07:00

38 lines
1.3 KiB
Python

"""Run the Rust-backed Browser Use Agent.
Set BROWSER_USE_TERMINAL_BINARY when the terminal binary is not on PATH.
Set BU_CDP_URL or BROWSER_USE_CDP_URL to attach to a remote Browser Use cloud browser.
"""
import asyncio
import os
from browser_use.beta import Agent, BrowserSession, ChatBrowserUse
# from browser_use.beta import ChatOpenAI # ChatOpenAI(model='gpt-5.5')
# from browser_use.beta import ChatGoogle # ChatGoogle(model='gemini-3.1-pro-preview')
# from browser_use.beta import ChatAnthropic # ChatAnthropic(model='claude-opus-4-8')
async def main() -> None:
cdp_url = os.environ.get('BU_CDP_URL') or os.environ.get('BROWSER_USE_CDP_URL')
browser_session = BrowserSession(cdp_url=cdp_url) if cdp_url else None
task = os.environ.get('BU_TASK', 'Open https://example.com and report the page title.')
max_steps = int(os.environ.get('BU_MAX_STEPS', '20'))
agent = Agent(
task=task,
llm=ChatBrowserUse(model='openai/gpt-5.5'),
# llm=ChatBrowserUse(), # Browser Use's own optimized model (bu-2-0)
# llm=ChatOpenAI(model='gpt-5.5'),
# llm=ChatGoogle(model='gemini-3.1-pro-preview'),
# llm=ChatAnthropic(model='claude-opus-4-8'), # Sonnet also works well.
browser_session=browser_session,
)
history = await agent.run(max_steps=max_steps)
print(history.final_result() or '(no final result)')
if __name__ == '__main__':
asyncio.run(main())