AINOW(エーアイナウ)編集部です。近年、大規模言語モデル(LLM)を活用したエージェントが、従来人間が行っていたウェブブラウザ操作を自動で行う事例が増加しています。特に、「AIエージェントがウェブブラウザを操作」する技術は、ログインや検索、フォーム入力、さらには複雑なクリック作業まで自動化できる点で注目を集めています。
本記事では、オープンソースライブラリ「browser-use」の詳細な機能、導入方法、具体的なユースケース、さらには実用時の注意点やトラブルシューティングのポイントについて、解説・補足を交えながらご紹介します。実際に試してみた筆者の体験も掲載しており、生成AIの基本やChatGPTの活用に興味がある方はもちろん、企業の導入事例を知りたい方にも価値ある情報を提供しています。
本記事では、まず「browser-use」とは何か、その技術的背景や目的について分かりやすく解説します。次にライブラリの主要な機能や、マルチタブ管理、自己修正機能、さらにはLangChainとの連携方法など、実践に役立つ具体例を交えて紹介していきます。また、実際に利用する際の初期設定やPowerShell実行時のトラブル対処法も詳述します。
最終的には、今後の展望やこの技術がRPA分野・スクレイピング業務に提供する可能性についても考察を深めます。
browser-useとは
概要と目的
browser-useは、Pythonで実装されたライブラリで、エージェントがウェブブラウザの自動操作を実現するためのツールです。AIがウェブページ上の要素を認識し、クリック、フォーム送信、テキスト入力といった操作を自動で行う仕組みを提供します。これにより、従来人間が行っていた複雑なオンライン作業を、Pythonスクリプトを通して効率的に自動化できます。
たとえば、求人情報の収集や予約システムの操作、さらには定型業務のRPA代替など、幅広い分野で応用可能です。
このライブラリは、単にボタンの自動クリックだけでなく、HTMLのDOM(Document Object Model)構造を解析することで、どの部分が重要な要素であるかをAIが理解できるよう設計されています。これにより、ボタンラベルやリンクテキストの意味まで把握し、より正確な操作が可能になっています。内部では、スクリーンショットと画像解析(Vision)を組み合わせ、必要な要素を特定する高度な技術も取り入れています。
詳細な概念については、RAG技術の記事なども参考にしてください。
開発者
browser-useは、YC(Y Combinator)プログラムに参加中のチームが中心となって開発されました。公式サイトでは「Open Source Web Agents」というキャッチフレーズの下、シンプルな数行のコードで先端のウェブエージェントが構築できると強調されています。以下に公式メッセージの一端を紹介します。
- Pythonで数行のコードを記述するだけで、最新のウェブエージェントを構築できる。
- 大規模言語モデル(LLM)を用い、ユーザーに代わって複雑なウェブ操作タスクを遂行。
- 「WebVoyager」などのベンチマークテストで高得点(89%)を達成している。
このプロジェクトは、チャットGPTやClaudeなどのLLMに留まらず、ブラウザの実際の操作までAIが担うという、従来のテキストベースの対話システムとは一線を画す革新的な試みです。実際に、企業内プロセス自動化の一例として、Azure生成AIやMicrosoft生成AIなどと融合した利用事例も今後増えていくと予想されます。
主な機能とメリット
ビジョン+HTML抽出
browser-useは、Playwrightを基盤とし、ウェブページのHTML構造をJSON形式に変換してLLMに渡す機能を備えています。この機能により、エージェントはページ上のどのボタンがどこに位置し、リンクテキストが何を意味するかを高い精度で把握できます。具体的には、LLMがHTMLタグを解析して、クリック対象や入力フォームなどの重要要素を識別し、正しい操作順序に従って進むよう設計されています。
筆者が実際に試した際には、この仕組みによって複雑なウェブページでもエラーが少なく動作することを確認しました。さらに、画像解析機能が加わることで、特定の視覚情報の判断も可能となり、直感的な操作実現につながっています。より詳しい技術背景については、Stable Diffusionといった生成系技術との融合も見逃せません。
マルチタブ管理
ウェブ操作において、単一ページだけではなく、複数タブを同時に扱う必要が生じるケースは少なくありません。例えば、あるタブでログインを行い、別のタブで情報取得、さらに別のタブで結果入力など、複数のプロセスを並行して進める必要がある場合があります。browser-useのマルチタブ管理機能は、このような複雑なシナリオにも柔軟に対応できるよう作られており、AIエージェントが並行して複数のページ操作を行える環境を整備します。
実際、企業の業務自動化事例では、この機能が大いに役立っており、企業の生成AI活用事例としても既に注目されています。これにより、エージェントはユーザーの介在なしにシームレスなタスク完了が可能です。
カスタムアクション
browser-useは、標準的なブラウザ操作だけでなく、ユーザー自身が定義した独自のアクションを実装する柔軟性も備えています。具体的には、「ファイル保存」や「チャットツールへの自動メッセージ送信」などのタスクを、独自のPython関数として定義し、エージェントに呼び出させることが可能です。この仕組みにより、例えば「ログイン後のデータ取得 → CSVファイルに出力 → Google Driveへの自動アップロード」といった一連の業務フローを、ひとつのスクリプトで実現できます。
開発者向けのカスタム実装ガイドラインも充実しており、初学者から高度なシステム開発を目指す方まで、幅広い利用シーンで活用されています。
自己修正機能
動的なウェブページや予期せぬDOM構造の変更に対して、エージェントが自律的に判断し、操作内容を再試行する自己修正機能が組み込まれています。たとえば、クリック対象の要素が見つからなかった場合や、予期しないエラーが発生した際に、エージェントは再度ページの解析を行い、適切な修正措置を試みる仕組みです。このような自律性は、一部のRPAツールでは難しい柔軟性を実現し、実運用時のトラブルを大幅に軽減できます。
実際に、筆者がテスト環境で試したところ、多少の変更があってもエージェントが自動で軌道修正できる点に驚かされました。
LangChainや各種LLMとの連携
内部構造にはLangChainが採用されており、これによりGPT-4をはじめ、AnthropicのClaude、MetaのLlama、さらにはCohereなど、多様なLLMと連携が可能となっています。具体的には、「ChatOpenAI」や「ChatAnthropic」といったクラスをインポートするだけで、好みのLLMでエージェントを動作させることができるため、既存のLLMを利用したワークフローに簡単に統合できるのが特徴です。こうした柔軟なモデル選択は、ニーズに合わせたカスタマイズや、動作の最適化に寄与します。
また、NVIDIAの最新AI技術とも連携できるポテンシャルも秘めており、NVIDIA AI技術の進展とともに、さらなる高機能化が期待されます。
始める前の準備
browser-useを利用するためには、まず正しい環境の整備が必要です。以下に推奨されるシステム要件とその背景について詳しく説明します。必須条件として、最新のPython環境とPlaywright、そして使用するLLMのAPIキーの用意が挙げられます。
なお、PythonやLLMの利用については、ChatGPTの活用記事にも詳細な説明があるので、合わせて確認してください。
- Python 3.11以降(推奨) – 最新の機能やセキュリティ強化が含まれているため、推奨されます。
- Playwright – ウェブブラウザの自動操作を実現するためのフレームワーク。
- 対応するLLMのAPIキー – 例としてOpenAIやAnthropicのAPIキーが必要です。
なお、Python 3.10以前のバージョンでも動作する場合がありますが、不具合回避のため3.11以上での利用をお勧めします。ターミナルでpython --versionと入力し、バージョンの確認を行いましょう。環境構築の詳細については、生成AIの基本の解説も参考になります。
インストールと基本的な使い方
ライブラリの導入
まずは、Python 3.11以降が推奨環境となっているため、正しいバージョンがインストールされていることを確認してください。その上で、以下のコマンドを用いてライブラリをインストールします。ライブラリのインストールは、環境構築の初歩ですが、エラーなく進めるためにも基本となる工程です。
pip install browser-use
playwright install
.envファイルへのAPIキー設定
大規模言語モデルとしてOpenAIやAnthropicなど、外部APIを利用する場合、各サービスが発行するAPIキーを.envファイルに記述する必要があります。環境変数によりキーを安全に管理できるため、セキュリティ面でも非常に有用です。例えば、以下のように設定します。
OPENAI_API_KEY=xxxx
ANTHROPIC_API_KEY=xxxx
環境変数の設定方法は、開発環境によって異なる場合もあるため、その際は公式ドキュメントや他の開発者向けガイドを参照してください。
簡単なサンプル
以下は、公式ドキュメントに記載されている最小限のサンプルコードです。この例では、Google Flightsを用いて、2025年1月12日にバリからオマーン行きの片道航空券の最安値検索を実行するタスクをエージェントに指示しています。コードは非常にシンプルに記述されており、スクリプトを実行するだけでタスクが自動で完了します。
実際に試した際は、そのシンプルさと高い機能性に感動するはずです。
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のページを操作し、指定の日付と区間に基づく最安値情報を取得します。シンプルなタスク指示文のみで多機能な操作が可能な点は、LLMによるコード自動生成技術の進化を感じさせます。例えば、チャット形式で操作を進める際は、Stable Diffusionの画像生成技術との連携など、今後の拡張性も高いといえるでしょう。
エラー対処:PowerShell上での実行トラブル
PythonコードをWindowsのPowerShell上で直接実行しようとすると、以下のようなエラーメッセージが表示される場合があります。この原因として、PowerShellがPythonコードをスクリプトとして認識せず、独自の解析を試みるために発生するパースエラーが挙げられます。
(compute-use-env) PS C:\Users\xxxx> from langchain_openai import ChatOpenAI
このバージョンの言語では、'from' キーワードがサポートされていません。
このエラーは、PythonスクリプトをそのままPowerShellに貼り付けることが原因です。PowerShellは、Pythonのコードを自動的に認識せず、シェル内コマンドと見なして解釈してしまいます。正しく実行するためには、必ず.pyファイルとして保存し、python filename.pyの形式で実行してください。
筆者も初めは同様のトラブルに遭遇したため、環境構築の注意点として強く推奨します。
解決策
- Pythonファイルを作成する
例えば「test_agent.py」というファイルを作成し、先ほどのコードをそのまま貼り付け保存します。以下はサンプル内容です。
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()) - PowerShellからpythonコマンドを使用する
PowerShellのプロンプトで、下記のコマンドを入力してスクリプトを実行します。
これにより、Pythonインタープリターが正しくコードを解釈し、エージェントが動作を開始するはずです。もし「python: command not found」というエラーが表示される場合は、Pythonのインストールパスが通っていない可能性があるため、環境変数の設定を再確認してください。python test_agent.py - 仮想環境のアクティブ化
仮想環境(venv、condaなど)を使用している場合、必ず環境をアクティブにした上でインストールや実行を行ってください。以下のコマンドで仮想環境を有効化し、その後スクリプトを実行しましょう。
.\venv\Scripts\activate python test_agent.py
より発展的な使い方
カスタムアクションを登録する
browser-useは、ユーザーが独自に定義したカスタムアクションも手軽に実装できる柔軟性を持っています。この仕組みにより、たとえば求人情報の詳細収集に加えて、取得した情報をデータベースに保存したり、外部システムに転送する処理など、複合的な業務フローをひとつのPythonコードで実現できます。内部では、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個の独立したタスクが同時に処理され、全体の作業効率が大幅にアップします。システム全体のパフォーマンス向上のため、並列化は重要なテクニックと言えます。
ユースケース例
- ウェブ上で求人情報を集める:企業サイトや求人サイトを自動巡回し、AIが求人詳細情報を抽出後、CSVファイルへ保存。さらに応募プロセスの一部自動化も実現可能です。
- 予約システムの自動操作:航空券やホテルのウェブサイトを操作し、最安プランの比較から予約までを自動化。ユーザーに代わり複雑な手続きも行えます。
- データ入力/フォーム投稿:大量のCSVまたはDBから取得した情報を、対象のウェブフォームに自動送信。手動入力の手間を大幅に省略できます。
- 定型業務のRPA代替:従来のExcelマクロや手動クリックに頼る業務を、柔軟かつインテリジェントなAIエージェントで置き換え、業務効率を向上させます。
トラブルシューティングと注意点
Pythonコードを直接PowerShellにコピペしない
先に説明したように、PowerShellはPythonコードをそのまま実行する設計になっていません。コードは必ず.pyファイルに保存し、python filename.py形式で実行してください。特にWindowsユーザーは、PowerShellでの入力に起因するトラブルに注意が必要です。
筆者自身も、初回実行時に同様の問題を経験しています。
Playwrightのインストール
playwright installを実行しないと、ブラウザドライバのセットアップが不完全となり、動作時にエラーが発生します。初回セットアップ時の基本工程として必ず実行するよう心がけましょう。
.envファイル
正確なAPIキーの設定がなされていない場合、LLMの呼び出しに失敗し、エラーとなります。Windows環境では、環境変数の設定方法が異なるため、print(os.environ.get("OPENAI_API_KEY"))などで確認し、正しい値が設定されているか再チェックしてください。環境構築中のトラブルシュートとして、設定確認は基本となります。
Pythonバージョン
本ライブラリはPython 3.11以上での動作が推奨されています。特に、一部の新機能や最適化が古いバージョンでは動作しない可能性があるため、必ずpython --versionでバージョン確認を行い、必要ならアップグレードしてください。旧バージョン使用時には「Invalid syntax」等のエラーが発生しやすい点も注意が必要です。
GPUリソースの問題
browser-use自体は比較的軽量ですが、ローカルでLLMの実行にGPUを利用する場合、十分なGPUメモリが必要となります。多くのユーザーはOpenAIやAnthropic等のAPIを経由するためこの問題は顕在しにくいですが、自前のモデルを運用する場合は、GPUリソースの確保を事前に検討してください。
今後の展望
AIエージェントによるウェブブラウザ操作の自動化は、今後RPA(Robotic Process Automation)の新たな形として注目を集めるでしょう。従来のGUIベースのRPAツールと比較して、LLM+コードによるアプローチは、複雑な条件分岐や自然言語の理解を要するタスクにおいて大きな柔軟性を発揮します。もちろん、サイト側の構造変更や動的ページの読み込みなど、エージェントが直面する様々な課題も存在しますが、自己修正機能の機能向上により、こうした問題にも対処可能になると期待されます。
筆者自身、実際に試行錯誤した結果、初期状態では多少のエラーが発生するものの、改善策を講じることで安定した動作が確認できました。今後のアップデートと技術進化に注目しつつ、RPAの次なる選択肢として探索する価値は十分にあると言えるでしょう。さらに、NVIDIA AI技術との連携も視野に入れることで、より高度な処理が可能になる点にも期待が持てます。
まとめ
browser-useは、AIエージェントがウェブ上での各種操作―リンクのクリックからフォーム入力まで―を簡単に自動化できる非常に強力なライブラリです。LLMの自然言語理解と自動化機能を融合させることで、従来の手作業やRPAでは実現が難しかった柔軟な操作を可能にします。以下、主なメリットをご紹介します。
- 高度な解析能力:LLMがページ内容を自然言語で把握し、最適なクリックや入力を自動で判断。
- プレイグラウンド感覚:少ないコード量で即座に動作を確認でき、試行錯誤が容易。
- RPAの進化:従来のRPAツールに比べ、柔軟な操作フローの構築が可能で、複雑な業務自動化に最適。
- LLMとの連携:ChatOpenAI、Claude、Llamaなど、さまざまな言語モデルと連携できるため、用途に合わせたカスタマイズが可能。
ただし、実際に利用する際には、初期設定での環境整備や、WindowsのPowerShell上での直接実行によるエラー発生など、いくつか注意すべき点があります。筆者も初回実行時にはこれらのトラブルに苦労しましたが、基本的な手順を守ることで十分解消可能です。今後、より高度なウェブ操作や動的サイトへの対応、さらには多重ページにまたがる複雑な処理ワークフローの実現が期待されており、AIエージェントの活用範囲はますます広がっていくことでしょう。
また、業界全体としてはAzure生成AIやMicrosoft生成AIといった他の技術との融合による新たな可能性も拡大しています。皆さんもぜひ、browser-useを活用して、次世代のウェブ操作自動化の世界に挑戦してみてください。実際の業務効率向上や、従来のRPAツールではカバーしきれなかった柔軟な対応力を、体験することができるはずです。




