ブラウザ自動操作をAIエージェントに――「browser-use」の使い方・特徴・利用メリットを徹底解説!

AIエージェント・ワークフロー

近年、大規模言語モデル(LLM)を活用したエージェントがさまざまな作業を自動化する事例が増えています。とりわけ「AIエージェントがウェブブラウザを操作」できるようになると、ログイン手続きや検索、フォーム入力など、今まで人間が行っていたクリック操作や入力作業を自動化できます。こうした取り組みが注目される中、「browser-use」というオープンソースのライブラリが登場し、開発者コミュニティで話題を集めています。

この記事では「browser-use」の機能や導入方法、ユースケース、そして実際に試してみる上での注意点やトラブルシューティング(エラー事例)を紹介します。「AIエージェントによるウェブ操作を簡単に実装したい」という方に、ぜひ参考にしていただければ幸いです。


browser-useとは

概要と目的

browser-useは、Pythonで書かれた「AIエージェントがウェブブラウザを自動操作できるようにする」ためのライブラリです。AIエージェントがインターネット上のページを閲覧し、クリックやフォーム送信、テキスト入力などを行うことで、人間に代わってさまざまなオンライン作業を実行できます。

単に「自動クリックするだけ」でなく、HTMLの構造(DOM)をAIが認識したり、特定の要素を抽出したり、フォームの入力欄を見つけて必要事項を入力したりといった高度な操作を想定している点が特徴です。

開発者

browser-useは、YC(Y Combinator)プログラムに参加しているチームによって開発されています。公式サイトでは「Open Source Web Agents」と謳われており、以下のようなメッセージが示されています。

Browser Use: Open Source Web Agents | Y Combinator
Open Source Web Agents. Founded in 2024 by Magnus Müller and Gregor Zunic, Browser Use has 2 employees based in San Fran...
  • Pythonで数行のコードを書くことで、最先端のウェブエージェントが作れる。
  • LLMを用いてウェブブラウザを操作し、ユーザに代わり複雑なタスクを遂行できる。
  • 「WebVoyager」のようなベンチマークで高スコア(89%)を達成している。

この取り組みによって、チャットGPTやClaudeなどのLLMがただテキストをやり取りするだけではなく、実際のウェブページを行き来し、必要に応じて必要な要素を読み取る・入力するなど、より人間に近い操作を実現しています。


主な機能とメリット

ビジョン+HTML抽出

browser-useはPlaywrightを使い、ページのHTML構造を読み取りやすい形でLLMに渡す仕組みを提供しています。HTMLのDOMをJSON形式で取得できるため、エージェントは「どのボタンがどこにあり、どのリンクテキストが何を意味するのか」をある程度理解した上で操作を進められます。

また、スクリーンショットを撮り、画像解析(Vision)を併用することで、クリック要素をさらに正確に特定することも想定されています。

マルチタブ管理

ウェブの操作は、単一ページだけで完結するとは限りません。複数のタブを開き、別サイトから情報を持ってきて、またメインページに戻り入力する――という流れもよくあります。

browser-useでは、こうしたタブ管理を自動化し、AIが並行して複数ページを扱うことをサポートしています。

カスタムアクション

ブラウザ操作だけでなく、「ファイルを保存」や「チャットツールにメッセージを送る」といった自作アクションを登録して、エージェントがそれを呼び出すことも可能です。

これにより、業務フロー全体を1つのPythonコード+AIエージェントで連携させることができます。たとえば「ログインしてデータを取得 → CSVに出力 → Google Driveにアップロード」という流れをすべてブラウザ-useに付随するアクション群で実現する、といった形です。

自己修正機能

クリック対象が見つからない場合や、DOM構造が想定と違う場合でも、エージェントが自分で軌道修正を試みる仕組みが備わっています。たとえば「要素が存在しません」「ロードに時間がかかりすぎる」といったエラーに直面すると、LLMが再度判断を行い、再試行できるようになっているのです。これによって、多少サイト構造が変わった場合でも臨機応変に対処できる可能性があります。

LangChainや各種LLMとの連携

内部的にはLangChainを利用しており、GPT-4などOpenAIモデルだけでなくAnthropicのClaudeやMetaのLlama、Cohereなど、多彩なモデルを選択可能です。
「ChatOpenAI」「ChatAnthropic」などのクラスをインポートするだけで、エージェントを好みのLLMで動作させることができるため、既にLangChainを使ったワークフローを組んでいるチームにとっては導入が容易でしょう。


始める前の準備

browser-useを利用するためには、以下の環境が必要です。

  1. Python 3.11以降(推奨)
  2. Playwright(ブラウザ自動操作に使用)
  3. 対応するLLMのAPIキー(例:OpenAI、Anthropicなど)

Pythonバージョンは3.10でも動作するケースがあるようですが、ドキュメントでは3.11以上が推奨されています。念のためpython --versionで確認しましょう。

インストールと基本的な使い方

ライブラリの導入

python 3.11以降が推奨(もしくは必要)とのこと。以下のコマンドでインストールします。

pip install browser-use
playwright install

.envファイルへのAPIキー設定

大規模言語モデルにOpenAIやAnthropicを使う場合は、それぞれのAPIキーを.envファイルに記述します。たとえば:

OPENAI_API_KEY=xxxx
ANTHROPIC_API_KEY=xxxx

APIキーを環境変数に設定する形を取れるので、セキュリティ管理にも配慮しやすい点が特徴です。

簡単なサンプル

以下は公式ドキュメントに示される最小例です。

from langchain_openai import ChatOpenAI
from browser_use import Agent
import asyncio

async def main():
    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"),
    )
    result = await agent.run()
    print(result)

asyncio.run(main())

この例では、「Google Flightsを開いて、2025年1月12日にバリからオマーン行きの片道航空券を検索し、最安値を教えて」というタスクをAgentに指示しています。すると、Agentはブラウザを立ち上げ、Google Flightsのページに遷移し、フォームに日付や出発地、目的地を入力して結果を解析。最終的に最安値の情報をコンソールに出力するわけです。
非常にシンプルに書かれているため、本当に「task=”…英語の指示…”」を与えるだけでOKというのは驚きです。


エラー対処:PowerShell上での実行トラブル

質問内にあるエラー報告を見ると、以下のようなメッセージが出ています。

(compute-use-env) PS C:\Users\xxxx> from langchain_openai import ChatOpenAI
このバージョンの言語では、'from' キーワードがサポートされていません。

これは、WindowsのPowerShellがPythonコマンドとして認識せずに、そのままPowerShellスクリプトとして解釈しているために起きるエラーです。「PythonのコードをPowerShellに直接貼り付けても動きません」というのが本質的な原因です。
PowerShellのプロンプトで「from langchain_openai import ChatOpenAI」などのPython文を直接入力すると、PowerShellは「これは自分のスクリプトだろう」と解釈しようとしてパースエラーを起こします。

解決策

  1. Pythonファイルを作成する

    例えば「test_agent.py」というファイルを作り、その中に先ほどのPythonコードを貼り付けます。

    test_agent.py
    ----------------
    from langchain_openai import ChatOpenAI
    from browser_use import Agent
    import asyncio

    async def main():
    agent = Agent(
    task="Googleで最新の天気予報を調べて",
    llm=ChatOpenAI(model="gpt-4o"),
    )
    result = await agent.run()
    print(result)

    if __name__ == "__main__":
    asyncio.run(main())

    これでスクリプトファイルとして保存しましょう。
  2. PowerShellからpythonコマンドを使う

    PowerShell上で以下のように入力し、スクリプトを実行します。
    python test_agent.py

    これでPythonインタープリタがスクリプトを正しく実行し、エージェントが動き始めるはずです。

    もし「python: command not found」などが出る場合は、Pythonのインストールパスが通っていないか、仮想環境(venv, condaなど)をアクティブにしないまま呼んでいる可能性があります。
  3. 仮想環境のアクティブ化

    もし仮想環境を使っているなら、pip install .などを行ったあとに以下のようなコマンドで有効化します。

    .\venv\Scripts\activate

    そして再度、python test_agent.py を実行してみてください。

より発展的な使い方

カスタムアクションを登録する

browser-useでは、ユーザーの独自アクションをPython関数として定義し、LLMエージェントがそれを呼び出せるようにする仕組みを提供しています。たとえば以下のようにPydanticのモデルで引数を型定義し、ブラウザインスタンスを受け取って何か処理をする、という流れが可能です。

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

controller = Controller()

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

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

並列化

複数のタスクを同時並行で処理したい場合も、以下のように一つの Browserインスタンスを使い、新たなコンテキストを使い回す実装が推奨されています。

browser = Browser()
for i in range(10):
    async with browser.new_context() as context:
        agent = Agent(task=f"Task {i}", browser_context=context, llm=model)
        result = await agent.run()
        # ...

これにより10個のタスクを同時に処理可能です。大規模なWebスクレイピングやテスト自動化シナリオで役立つでしょう。


ユースケース例

  • ウェブ上で求人情報を集める:企業サイトや求人サイトを巡回し、AIが詳細を取得・まとめ、ファイルに保存。さらには応募プロセスの一部まで自動化。
  • 予約システムの自動操作:航空券やホテルを検索し、最安プランを比較する。必要に応じて実際に予約まで行う。
  • データ入力/フォーム投稿:企業内システムや外部サービスに対して、大量のCSVやDBから取得した情報を自動送信する。
  • 定型業務のRPA代替:RPAツールのようにブラウザを介した操作を自動化し、Excelマクロや手動クリックに頼らない柔軟なフローを構築。

トラブルシューティングと注意点

Pythonコードを直接PowerShellにコピペしない

前述したとおり、PowerShellはPythonスクリプトをそのまま実行してくれません。必ず.pyファイルを作成し、python filename.py 形式で実行するか、あるいはIDE(VSCode等)のターミナルを利用して実行しましょう。

Playwrightのインストール

playwright installを忘れると、ブラウザのドライバがセットアップされずエラーが起きます。最初に必ず実行しましょう。

.envファイル

APIキーが正しく設定されていないと、LLMが呼び出せず「APIキーが見つからない」といったエラーが出ます。
Windowsの場合、環境変数を設定する手段が複数あるので、問題があるときはprint(os.environ.get("OPENAI_API_KEY"))などで確認するとよいでしょう。

Pythonバージョン

Python 3.11以上が必須と書かれていることがあります。3.10以下だと動かない機能がある可能性が高いので、python --versionでバージョンをチェックしておきましょう。古いバージョンだと「Invalid syntax」エラーが出やすいです。

GPUリソースの問題

このライブラリ自体は軽量ですが、LLMへのリクエストをローカル実行(GPU)する場合は大きなGPUメモリを要する可能性があります。多くの場合はAPI(OpenAIやAnthropic)を使うため気にしなくていいですが、自前モデルを走らせるシナリオでは注意が必要です。


今後の展望

ブラウザ操作をAIに代行させるというコンセプトは、RPA(Robotic Process Automation)をリプレイスする可能性を秘めています。RPAツールはGUI上でワークフローを定義することが多いですが、LLM+コードで記述するアプローチのほうが、複雑な条件分岐や自然言語理解を絡めた柔軟な対応がしやすいと考えられます。
一方で、サイト側の構造が頻繁に変わったり、JavaScriptの動的ロードが多用されたりする場合はAIエージェントが混乱するリスクもあります。browser-useの自己修正機能がどこまで対応できるか、今後のアップデートに注目です。


まとめ

browser-useは、AIエージェントがウェブ上で行う操作――リンククリックからフォーム入力まで――を簡単にスクリプト化できるライブラリです。以下のようなメリットが期待できます。

  • LLMに基づいた高度な解析:単なる要素選択ではなく、ページ内容を自然言語で理解し、最適なクリックや入力を判断。
  • プレイグラウンド感覚の導入:コード量が少なくてもとりあえず動かして試せる。
  • RPA代替やスクレイピング強化:既存のRPAフローをより柔軟かつインテリジェントにアップグレード可能。
  • LangChain対応:ChatOpenAIやClaude、Llamaなど複数のモデルを気軽に切り替えられる。

ただし、PowerShell上で直接Pythonコードを叩いてしまうなど、Windows特有の環境依存エラーが起きやすい点や、.envファイルとAPIキーの設定などの初期設定が必要である点には注意しましょう。
実際に試してみる際は、Pythonファイルを作成し、pythonスクリプト.py の形で実行するのが鉄則です。もし初期段階のサンプルを動かして何らかのエラーが出る場合は、バージョン確認やpipパッケージの再インストール、.envの再設定、さらにはPlaywrightのinstallを再度行うなどのステップを試すのがおすすめです。
今後、ブラウザ操作はあらゆるウェブサービスとのやり取りにおいてますます重要性を増すと見られます。複数のページにまたがるフローや動的サイトへの適応、Cookieや認証情報の管理など、高度な操作もbrowser-useを軸に実現できる可能性が大いにあるでしょう。
皆さんもぜひ、browser-useを活用してエージェントによるウェブ操作を体験してみてはいかがでしょうか。GUIツールのRPAでは難しかった細かな要望やイレギュラーケースへの対応も、LLMの柔軟な推論力があればカバーできるかもしれません。Pythonでシンプルに記述し、LLMが賢くページをナビゲートしてくれるワークフローは、一度味わうとやみつきになるでしょう。

サービスが見つかりません。

Copied title and URL