はじめに
2025年はAIエージェント元年と言われています。
AIエージェントは、質問に答えるだけでなく、メール送信やレポート作成など、人間が行うようなタスクを自律的にこなす仕組みです。
ただ、既存のAIを人間のように振る舞わせるシステムを構築するには、AIが外部システムと連携するために、複雑なプログラムを設計・開発する必要があります。
これを標準化し簡単にする仕組みとして、MCP(Model Context Protocol)が用意されています。
とはいえ、MCPサーバーが既に用意されておりクライアントも対応している領域に限られ、MCP未対応の領域では結局自作が必要です。
なので私は、AIと外部システムを都度連携させるのではなく、それらを操作できる「ブラウザ」をAIに連携させればいいと考えました。
そこで、ブラウザを自然言語で動かすAIエージェント「nova-click」を作りました。
同じ方向性の取り組みは各社でも進んでいて、OpenAIのOperator、AnthropicのClaude for Chrome、GoogleのProject Marinaなどが公開されています。
nova-clickのデモ
それではデモをご覧ください
プロンプト「Amazonで50ドル以下の最も人気のある防水Bluetoothスピーカーを検索し、カートに追加してください。」
使用方法
# リポジトリをクローン
git clone https://github.com/Naoki0513/nova-click.git
cd nova-click
# 依存関係インストール
pip install boto3==1.38.13 playwright==1.40.0
python -m playwright install chromium
# AWSクレデンシャル設定
mkdir credentials
以下の形式でaws_credentials.jsonを作成
{
"aws_access_key_id": "AKIA…",
"aws_secret_access_key": "xxxxxxxx",
"region_name": "us-west-2"
}
起動
python main.py
main.py内の定数を変更して違うプロンプトやモデルを試せます。
仕組み
- 今開いているページのスナップショットをPlaywrightで取得します。
- そのスナップショットをもとに、ページの要素を操作するツールをAmazon Novaが呼び出します。
- 再度スナップショットを取得し、必要あれば再度ツールを呼び出す。不要であれば完了する。
- というループを繰り返すことで、最終的にWebのタスクを完了させます。
Amazon Novaを選んだ理由
なぜAmazon BedrockのうちAmazon Novaを用いていたかというと、それはコストパフォーマンスが良かったということです。
| モデル | 入力コスト($/Mトークン) | 出力コスト($/Mトークン) | コンテキストウィンドウ | 速度 |
|---|---|---|---|---|
| Amazon Nova Pro | 0.80 | 3.20 | 最大300Kトークン | 速い |
| GPT-5 | 1.25 | 10.00 | 最大128Kトークン | 普通 |
| Claude Sonnet 4 | 3.00 | 15.00 | 最大200Kトークン | 普通 |
Nova Proは特にコスト面で優れており、大きなコンテキストウィンドウも持ってるので複雑なページの状態も扱いやすいです。
工夫したこと
工夫したこととしてはコンテキストエンジニアリングです。
コンテキストエンジニアリングとは、AIエージェントにおいて渡すコンテキストを工夫、最適化することによって精度を上げるという手法です。
それをどう工夫したかというと、先ほど申し上げた通りそのままページのHTML情報を全部載せるだけだと非常に量が多いです。
それをいかに最適な情報だけを渡すために、PlaywrightのARIA snapshotを用いることで、最低限のDOM情報のみ渡すことで、処理を最適化させました。
現状のユースケース
ユースケースとしては、E2Eテストの自動化が挙げられます。
例えば、Playwrightで書かれたテストコードは、画面の要素が少し変わるだけで動作しなくなることがあります。
そのため、画面の変更に合わせてコードを毎回修正する必要が生じ、運用が大変です。
しかし、ブラウザ操作AIエージェントに任せることで、自然言語だけで画面操作を実行できます。これにより、複雑なコードの運用を避け、効率的にテストを行えます。
まとめ
以上まとめです。Amazon Novaを使うことによって、より安く高速でブラウザ操作を実行できるエージェントを作成いたしました。
まだ研究段階なのですが、これからどんどん精度を高めてかつコストを安くしてスピードを早めていく必要があるかなという風に思います。
