見出し画像

Browser UseをDeepSeekで動かす方法解説

みなさん、Browser Useは使ってみましたか?
これは2024年末に登場したブラウザ操作を完全に自動化するAIエージェントでSNSを中心に大きな話題になっています。

Youtubeで解説しているのでよかったらこちらもチェックしてみてください。

Browser Useはブラウザ操作にたくさんのAPI呼び出しを行うので、コストがかさみやすいという欠点があります。
また、ブラウザ操作を自動化したいという都合上、コストが嵩みやすいと言えます。

一方で、2024年末にリリースされた中国製のAI DeepSeekがコストがChatGPTやCluadeに比べて圧倒的に安くかつ性能もいいということで話題になっています。

このコストが嵩みやすいBrowser Useとコストが安くて性能がいいDeepSeekは相性が良いと言えます。

少し難しい話かもしれませんが、Browser Useは内部でLangChainを使っています。

LangChainはAI開発を楽にするフレームワークで、これ経由でChatGPTやClaudeが呼び出せるという仕組みになっています。

DeepSeekはLangChainにも対応しています。つまり、Browser UseからDeepSeekが使えるということです。

今回はBrowser UseからDeepSeekを使うようにする方法を解説していきたいと思います。

Browser UseでDeepSeekを使う

今回は設定を変更する必要があるので、Github からソースコードをクローンして、設定を変更する必要があります。

# Browser Use をクローン
git clone https://github.com/browser-use/browser-use.git
cd browser-use/

クローンしてきたらPythonの環境構築をしていきます。

python -m venv venv
source venv/bin/activate
pip install . ."[dev]"

そして、環境変数を設定していきます。.env.sampleの内容をコピペして.envファイルを作成しましょう。

OPENAI_API_KEY=your_api_key
ANTHROPIC_API_KEY=your_api_key

# Set to false to disable anonymized telemetry
ANONYMIZED_TELEMETRY=true

# LogLevel: Set to debug to enable verbose logging, set to result to get results only. Available: result | debug | info
BROWSER_USE_LOGGING_LEVEL=info

ここまで来たら、python examples/amazon_search.py で実行して、ブラウザが立ち上がるか確認します。

今はChatGPTのAPIを使っているので、ここからDeepSeekに切り替えていきます。

やることとしては凄く単純で、examples/amazon_search.pyを開いて以下のように変更してください。

"""
Simple try of the agent.

@dev You need to add OPENAI_API_KEY to your environment variables.
"""

import os
import sys

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

import asyncio

from langchain_openai import ChatOpenAI

from browser_use import Agent

# DeepSeekのAPIを使うように変更
llm = ChatOpenAI(
    model='deepseek-chat',
    openai_api_key='your_api_key',
    openai_api_base='https://api.deepseek.com',
)

agent = Agent(
	task='Google検索で「ノートパソコン」と検索してください',
	llm=llm,
	use_vision=False, # use_visionをFalseに設定
	generate_gif=False, # generate_gifをFalseに設定
)

async def main():
	await agent.run(max_steps=3)
	# agent.create_history_gif() # コメントアウト


asyncio.run(main())

ChatOpenAIの引数をDeepSeekに切り替える

ChatOpenAIのmodel, openai_api_key, openai_api_baseをDeepSeek用に切り替えます。

APIキーはこちらから簡単に取得することができます。APIに課金しないと使えないので、まずは課金してください!
2ドルからできるので、まずは2ドルで良いと思います。

https://platform.deepseek.com/api_keys

use_visionとgenerate_gifオプションをFalseに設定する

DeepSeekのAPIは画像や音声などのマルチモーダルに対応していないです。一方、Browser Useはデフォルトではブラウザ画面の画像もAPIに載せてリクエストしています。そのため、エラーになってしまいます。なので、use_visionオプションはFalseにしておきます。

📍 Step 1
ERROR    [agent] ❌ Result failed 1/5 times:
 Failed to deserialize the JSON body into the target type: messages[2]: data did not match any variant of untagged enum ChatCompletionRequestContent at line 1 column 15773

同様にgenerate_gifオプションもオフにしておく必要があります。

raise TypeError("argument should be a bytes-like object or ASCII "
TypeError: argument should be a bytes-like object or ASCII string, not 'NoneType'

これで、DeepSeekが使えるようになりました。デモで何度も実行したのですが、APIリクエスト38回、トークン数119,124で0.07ドルで約1円でした。かなり安いですね。

DeepSeekを使う場合の欠点

DeepSeekを使うと以下のエラーになることがよくありました。

 'NoneType' object has no attribute 'action'

これはDeepSeekのAPIから意図しないJSONが返却されたのが原因のエラーです。
Browser Useでは、APIから以下のプロパティを持つJSONが返される必要があって、これはStructuredOutputという仕組みを使っているのですが、これがDeepSeekだと時折、決められたJSONを返せない場合があるから起こるようです。

{
  "current_state": {
    "evaluation_previous_goal": "...",
    "memory": "...",
    "next_goal": "..."
  },
  "action": [
    {
      "click_element": {
        "index": 1
      }
    },
    ...
  ]
}

OpenAIやAnthoropicのAPIでは、このようなエラーになったことがなかったので、DeepSeekの場合コストは安いですが、エラーが起こりやすいと言えそうです。

使い分けのポイントとしては、自動化したい操作が決まっている場合、きちんと動くことを確認した上でDeepSeekを使うのがよさそうです。

一方、やや複雑な動作を自動化したい場合、エラーが起こりづらいOpenAIやAnthoropicのAPIを使うのがよさそうです。

まとめ

今回は話題のBrowser UseからDeepSeekを使う方法を紹介しました。Browser UseはLangChainで実装されているので、LangChainに対応していれさえすればどんなAPIでも使えるのがいいですね。

最後に宣伝になりますが、株式会社EGGHEADでは、製造業に特化した生成AIを活用した業務改善やシステム開発を行っています。
少しでも興味をお持ちいただけましたら、ぜひ以下のお問い合わせフォームよりご連絡ください。カジュアルな面談やお悩み相談も大歓迎です!

▼ お問い合わせフォーム
 https://forms.gle/MXDVF9fbum87P8b66

▼ LINE公式で30分無料ビデオ相談 | 無料チャット相談受付中
https://line.me/R/ti/p/@043wpvez


いいなと思ったら応援しよう!