現代のブラウザ自動化は、Seleniumのような固定的なスクリプトだけに依存する方法から、自然言語で指示できるAIエージェント型の実装へ移行しつつあります。Browser Use、Ollama、DeepSeekを組み合わせると、ローカルLLMで推論しながら、ブラウザ操作、フォーム入力、データ抽出、複数ステップのWebタスクをPythonから自動化できます。
この記事では、Browser Use、Ollama、DeepSeekを使って、ローカル環境で動くPythonベースのAIブラウザ自動化エージェントを構築します。API開発者、バックエンドエンジニア、QAエンジニアが、Web操作やAPI連携を含むテスト・検証ワークフローを実装するための手順に絞って解説します。
AIブラウザ自動化にBrowser Use、Ollama、DeepSeekを使う理由
この構成では、各コンポーネントが次の役割を持ちます。
- Browser Use: Pythonからブラウザ操作を制御するためのパッケージ。ナビゲーション、クリック、入力、抽出などを扱います。
- Ollama: ローカルでLLMを実行するためのサーバー。推論を自分のマシン上で実行できます。
- DeepSeek: 高レベルの自然言語指示を、実行可能なブラウザ操作ステップに変換する推論モデルとして使用します。
この組み合わせにより、次のようなタスクを実装できます。
- Webページの巡回とデータ抽出
- フォーム入力や検索操作の自動化
- 複数ステップのWebワークフロー実行
- 自然言語プロンプトによるタスク定義
前提条件: 開発環境を準備する
作業前に、以下をインストールしておきます。
- Python 3.11+
python --version
Ollama
ollama.com からダウンロードします。Node.js
Playwright経由のブラウザ自動化に必要です。
node --version
Git
Browser Useのリポジトリをクローンするために使用します。-
ハードウェア
- CPU: 4コア以上
- RAM: 16GB以上
- 空きストレージ: 12GB以上
- GPU: 必須ではありませんが、大きなモデルを使う場合は推奨です
不足しているツールがある場合は、先にインストールしてから進めてください。
ステップ1: プロジェクトを作成する
作業用ディレクトリを作成します。
mkdir browser-use-agent
cd browser-use-agent
ステップ2: Browser Useをクローンする
Browser Useのリポジトリを取得します。
git clone https://github.com/browser-use/browser-use.git
cd browser-use
ステップ3: Python仮想環境を作成する
依存関係を分離するため、仮想環境を作成します。
python -m venv venv
Mac/Linuxの場合:
source venv/bin/activate
Windowsの場合:
venv\Scripts\activate
有効化できると、ターミナルに (venv) が表示されます。
ステップ4: VS Codeでプロジェクトを開く
VS Codeを使う場合は、次のコマンドで開きます。
code .
VS Codeを使わない場合は、任意のエディタで同じディレクトリを開いてください。
OllamaとDeepSeekをローカルにセットアップする
1. Ollamaをインストールする
ollama.com からOllamaをインストールします。
インストール後、バージョン確認を行います。
ollama --version
2. DeepSeekモデルをダウンロードする
DeepSeekの seed モデルをOllama経由で取得します。
ollama pull deepseek/seed
モデルサイズは約12GBです。ストレージやGPUリソースに制約がある場合は、代替として qwen2.5:14b など、より軽量なモデルを検討できます。
インストール済みモデルを確認します。
ollama list
一覧に deepseek/seed または選択したモデルが表示されていれば準備完了です。
Browser Useと依存関係をインストールする
1. Browser Useをインストールする
仮想環境が有効な状態で、Browser Useと開発用依存関係をインストールします。
pip install . ."[dev]"
2. LangChainとOllama連携パッケージを追加する
Browser UseのエージェントからOllamaのローカルLLMを呼び出すために、次のパッケージを追加します。
pip install langchain langchain-ollama
3. Playwrightのブラウザをインストールする
Browser Useはブラウザ操作にPlaywrightを使用します。
playwright install
Linux環境などで依存関係エラーが出る場合は、次も実行します。
playwright install-deps
Ollamaサーバーを起動する
別ターミナルでOllamaサーバーを起動します。
ollama serve
Ollamaはデフォルトで次のURLにサーバーを立てます。
http://localhost:11434
以降、Pythonスクリプトを実行する間は、このプロセスを起動したままにしてください。
実装例: Googleでボストンの天気を調べるAIエージェント
ここでは、Browser Useエージェントに「Googleでボストンの天気を調べる」というタスクを実行させます。
プロジェクトフォルダに test.py を作成します。
import asyncio
from browser_use import Agent
from langchain_ollama import ChatOllama
async def run_search() -> str:
agent = Agent(
task="Use Google to find the weather in Boston, Massachusetts",
llm=ChatOllama(
model="deepseek/seed",
num_ctx=32000,
),
max_actions_per_step=3,
tool_call_in_content=False,
)
result = await agent.run(max_steps=15)
return result
async def main():
result = await run_search()
print("\n\n", result)
if __name__ == "__main__":
asyncio.run(main())
VS CodeでPythonインタープリターを確認する
VS Codeを使う場合は、仮想環境のPythonを選択します。
-
Ctrl+P、MacではCmd+Pを押す -
> Select Python Interpreterと入力する - プロジェクト内の
venvインタープリターを選択する
スクリプトを実行する
python test.py
実行すると、エージェントがブラウザを起動し、Googleでボストンの天気を検索して、結果をターミナルに出力します。
エラーが発生した場合は、まず次を確認してください。
-
ollama serveが起動している -
http://localhost:11434にアクセス可能 -
ollama listに指定モデルが表示される - Python仮想環境が有効化されている
- Playwrightのインストールが完了している
Ollama側のログは、通常次のディレクトリから確認できます。
~/.ollama/logs
タスクを変更して別の自動化を実装する
Browser Useでは、主に task の文字列を変えることで別のワークフローを試せます。
例:
task="Go to GitHub and search for browser-use repositories"
task="Open a news website, find the top technology headline, and summarize it"
task="Go to a product page, extract the product name and price"
ただし、ログイン、購入、送信、応募などの操作を含む場合は、意図しない実行を避けるために、テスト用アカウントやステージング環境で検証してください。
Apidogの統合: ブラウザAIエージェント向けのAPIテスト
ブラウザAIエージェントがWeb APIと連携する場合、APIの挙動が安定していることを事前に検証する必要があります。
たとえば、次のようなケースです。
- フロントエンド操作の裏側でAPIが呼び出される
- エージェントがAPI駆動型のワークフローを自動化する
- スクレイピング対象の画面がバックエンドAPIに依存している
- E2Eテストの前提としてAPIレスポンスの一貫性を確認したい
Apidogを使うと、次のようなAPIテスト作業をワークフローに組み込めます。
- APIエンドポイントが期待どおりに動作するか確認する
- バックエンドAPIのテストケースを作成・管理する
- ステージング環境と本番環境でAPIコントラクトを検証する
- ブラウザ自動化の前提となるAPIレスポンスを確認する
ブラウザ操作の自動化だけでなく、その裏側にあるAPIのテストも合わせて行うことで、AIエージェントが依存する処理をより安定させられます。
ApidogによるAPIコントラクトテスト
効果的なプロンプト設計のポイント
Browser Useのようなエージェント型自動化では、プロンプトの書き方が実行精度に大きく影響します。
具体的に書く
曖昧な指示ではなく、対象サイト、操作内容、条件、出力形式を含めます。
悪い例:
Find flights.
良い例:
Go to kayak.com, search flights from Zurich to Beijing, 25.12.2025–02.02.2026, sort by price.
複数ステップを明示する
複雑なタスクは、実行順序が分かるように書きます。
LinkedInにアクセスし、MLの求人を検索し、求人リンクをファイルに保存し、上位3件に応募する。
出力形式を指定する
抽出結果を扱いやすくするには、フォーマットも指定します。
Extract the product name, price, and availability. Return the result as JSON.
失敗したらプロンプトを小さくする
一度に多くの操作を任せて失敗する場合は、タスクを分割します。
Step 1: Open the website and search for the product.
Step 2: Open the first result and extract the price.
デバッグとトラブルシューティング
Ollamaが接続できない
確認項目:
ollama serve
ollama list
curl http://localhost:11434
指定したモデル名がコード内と一致しているかも確認してください。
model="deepseek/seed"
Playwrightのブラウザが起動しない
Playwrightのインストールを再実行します。
playwright install
Linuxの場合:
playwright install-deps
実行が遅い
DeepSeekモデルが重い場合は、以下を検討します。
- より軽量なモデルを使う
- GPU環境で実行する
-
max_stepsを小さくする - タスクを短く分割する
例:
result = await agent.run(max_steps=8)
エージェントが不要な操作をする
task をより具体化します。
悪い例:
Check the website.
良い例:
Open the homepage, click the pricing link, extract the plan names and prices, and return them as a Markdown table.
よくある質問
Q1. Browser Useとは何ですか?
Playwrightを使ってAI駆動のブラウザ自動化を行うためのPythonパッケージです。
GitHub
Q2. GPUは必要ですか?
必須ではありません。ただし、DeepSeekのような大きなモデルを快適に実行する場合は、GPUがある方が高速です。
Q3. DeepSeek以外のモデルも使えますか?
はい。Ollamaで利用でき、推論タスクに適したモデルであれば使用できます。
GitHub
Q4. データはローカルで処理されますか?
Ollamaをローカルで実行する場合、特別な設定をしない限り、推論は自分のマシン上で行われます。
Q5. ログインや複数ステップのタスクも自動化できますか?
可能です。高レベルのタスクを定義すると、エージェントがステップに分解して実行します。ただし、認証情報や重要操作を含む場合は、テスト環境で慎重に検証してください。
まとめ
Browser Use、Ollama、DeepSeekを組み合わせることで、自然言語の指示から実ブラウザを操作するPythonベースのAIエージェントを構築できます。
実装の流れは次のとおりです。
- Python仮想環境を作成する
- Browser Useをインストールする
- Ollamaを起動する
- DeepSeekモデルを取得する
-
AgentにタスクとLLMを設定する - Playwright経由でブラウザ操作を実行する
この構成は、QA、自動テスト、バックエンド連携、API駆動型ワークフローの検証に適しています。さらにApidogを組み合わせることで、ブラウザエージェントが依存するAPIのコントラクトやレスポンスを事前に検証し、自動化ワークフロー全体の信頼性を高められます。





Top comments (0)