この記事のポイント
- Amazon BedrockのConverse APIを使ってChromeブラウザを開いたよ
- どういう仕組みか解説しているよ
はじめに
この記事ではAmazon Bedrockを使ったブラウザ操作について書いています。
動作環境
- chromedriver
- anthropic.claude-3-haiku-20240307-v1:0
- macOS 15.2
- boto3 1.35.97
AIエージェントの流行りに乗って
巷ではAIエージェントて何かを自動化するのが流行っていると聞いたので今回はブラウザを操作してみることにしました。
実際にやったこと
Amazon BedrockのConverse APIでWebDriverのエンドポイントにリクエストを送り、お手元のChromeブラウザを起動するということをやってみました。
検証の目的としては「プロンプトだけでE2Eテストできたらいいな」というのがありました。
既製品ですでにできることではありますが、やっぱ自分で作ってワクワクしたいってのもありますし、
既製品ではできないことを実現してみたいというモチベーションもありました。
実際のソースコード
今回はWebDriverを操作するモジュールとAmazon Bedrockの基盤モデルを操作するモジュールの2つを自作しました。
2つのモジュールを使ってブラウザをプロンプトだけで操作してみました。
import webdriver.tool as wd_tool
import bedrock.core.const as const
import bedrock.tool as bdr_tool
if __name__ == "__main__":
print(wd_tool.help())
print(bdr_tool.boto3_version())
print(const.region_name["apne1"])
agent = bdr_tool.agent_action()
agent.set_query("https://www.google.com/ をGoogle Chromeのウィンドウで開く")
res = agent.execute(const.claude_model_ids["claude-3-haiku"])
print(res)
if res:
session_id = wd_tool.open_window(
res[1].get("url"), res[1].get("browser"))
print(session_id)
仕組みとしてはAmazon BedrockのConverse APIでTool UseしてWebDriverの機能を呼び出しています。
まとめ
今回はブラウザを起動するだけに留まりましたが、作り方次第でUIのクリックやファイル出力もできるのでもう少し拡張できたら良いなと思いました。
なお、WebDriverで作っていますが、Playwrightで作るのもいいなと思ったので後々考えていきたいと思います。
ちなみに
Google DeepMindさんがProject Marinerというプロジェクトをスタートさせており、簡単に説明するとブラウザを操作するAIエージェントを研究・開発するプロジェクトみたいです。もっと簡単に言うと、プロンプトひとつでAIがブラウザを操作できるようにするプロジェクトなので今回の記事でやっていることに近いのかなと思いました。