🦍

browser-useをCLIからインタラクティブに呼び出す

2024/12/26に公開

browser-useをChatGPTのようにインタラクティブに使えたら嬉しいので実装してみました。

やること

以下の3ステップです。

  1. 環境変数としてOPEN_API_KEYを設定する(dotfiles/env.sh)
  2. インタラクティブに実行するためのプログラムを実装する(dotfiles/interactive-agent.py`)
  3. プログラムをaliasとして設定する(dotfiles/alias.zsh)
    私はdotfilesを育てているので、必要なファイルはすべてdotfiles内に配置しています。
    もしdotfilesをお持ちでない場合は各自のbashなりzshなりに合わせて設定してください。

ステップ1.OPEN_API_KEYの設定

まずOpen AI APIからAPI keyを取得してください。取得できたら.envなどにセットします。

export OPENAI_API_KEY="your_openai_api_key"

以下のコマンドで呼び出せたらオッケーです

echo $OPENAI_API_KEY

このAPI keyをどこに設定するかは個人によって違うと思います。
私はグローバルに呼び出したかったので`dotfiles/env.sh`ファイルに記述しています。

もし同じように設定される場合は以下の2点に注意してください。

  1. リポジトリにプッシュしない: .envenv.shをリポジトリにプッシュしないよう、必ず.gitignoreに追加してください
  2. アクセス権を制限: APIキーを含むファイルは、読み取り権限を自分のユーザーだけに設定します。
chmod 600 ~/dotfiles/env.sh

ステップ2.プログラムの実装

次に以下のようなdotfiles/interactive-agent.pyを実装しました。

from langchain_openai import ChatOpenAI
from browser_use import Agent
import asyncio
import os

api_key = os.getenv("OPENAI_API_KEY")
if api_key:
    print(f"API Key loaded: {api_key}")
else:
    print("Failed to load API Key. Is it set in the environment?")

async def interactive_chat():
    print("Welcome to the interactive flight search tool!")
    print("Type 'exit' to quit.\n")

    while True:
        task = input("Enter your task (e.g., 'Find a one-way flight...'): ").strip()
        if task.lower() == "exit":
            print("Goodbye!")
            break

        agent = Agent(
            task=task,
            llm=ChatOpenAI(model="gpt-4o"),
        )
        print("\nSearching...\n")
        try:
            result = await agent.run()
            print(f"\nResult:\n{result}\n")
        except Exception as e:
            print(f"An error occurred: {e}\n")

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

ステップ3.aliasの設定

私の場合はこのプログラムをbuというaliasで呼び出せるようにしました(bu:=browser-use)
dotfiles/alias.zshに以下のaliasを追加してsource ~/.zshrcします。

alias bu='source ~/dotfiles/env.sh && python3.13 ~/dotfiles/interactive_agent.py'

実行

buコマンドを実行すると以下のように会話ができます

 $bu
INFO     [browser_use] BrowserUse logging setup complete with level info
INFO     [root] Anonymized telemetry enabled. See https://github.com/gregpr07/browser-use for more information.
API Key loaded: your_openai_api_key
Welcome to the interactive flight search tool!
Type 'exit' to quit.

Enter your task (e.g., 'Find a one-way flight...'): what is the..?

Discussion