Claude 3.5 Sonnet V2 on Bedrock にクッキーを焼かせる

# はじめに
お疲れ様です！
つい先々月ぐらいに、ついにAIがPCを操作できるでよ〜という話を聞きました。

<iframe width="858" height="483" src="https://www.youtube.com/embed/ODaHJzOyVCQ" title="Claude | Computer use for automating operations" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

んじゃあ僕はもう実家に帰って農業をするしかないなと思ったのですが・・・😭
幸いなことにまだ解雇されていないので、今年もこうやってアドベントカレンダーに投稿することができます。これは大変ありがたいことです🙏

ということで、仕事は全部代わりにAIにやってもらいたいですよね・・・！😊
上司にバレないうちに、早速やっていきましょう！

# 公式サンプルを使ってみる！

https://github.com/anthropics/anthropic-quickstarts/tree/main/computer-use-demo

これを入れます！まだベータ版だそうですが、その実力はいかに🧐

ここで前提として、Claude 3.5 Sonnet V2で諸々処理しますので、
1. Anthropic公式でユーザ課金し、APIキーを手にいれる
2. Bedrockでモデルアクセスを要求したAWSのアカウントのアクセスキーを発行する
3. Vertexでプロジェクト作成したGoogleCloudのクレデンシャル情報を発行する

のいずれかが必要です（2024/12現在）。各々、手っ取り早い方法で準備しましょう。

## 準備

今回は２の、Bedrockを使いました。今のところオレゴンリージョンだけ対応なようでしたので、オレゴンでClaude 3.5 Sonnet V2を有効化し、IAMアクセスキーを発行、AWS CLIを入れたPCにプロファイルを設定します。この辺りは他記事ご参照ください。

https://dev.classmethod.jp/articles/if-you-want-to-try-out-amazon-bedrock-from-the-management-console-you-can-set-up-access-to-base-models/

https://dev.classmethod.jp/articles/lim-cli-profile/

起動用にdockerをインストールしたら、先ほどのgithubからプロジェクトをクローンして、下記コマンドでコンテナを起動します。
``` bash
export AWS_PROFILE=your-profile-name
docker run \
    -e API_PROVIDER=bedrock \
    -e AWS_PROFILE=$AWS_PROFILE \
    -e AWS_REGION=us-west-2 \
    -v $HOME/.aws:/home/computeruse/.aws \
    -v $HOME/.anthropic:/home/computeruse/.anthropic \
    -p 5900:5900 \
    -p 8501:8501 \
    -p 6080:6080 \
    -p 8080:8080 \
    -it ghcr.io/anthropics/anthropic-quickstarts:computer-use-demo-latest
```
すると、
```
Xvfb started successfully on display :1
Xvfb PID: 9
starting tint2 on display :1 ...
starting mutter
starting vnc
PORT=5900
starting noVNC
noVNC started successfully
✨ Computer Use Demo is ready!
➡️  Open http://localhost:8080 in your browser to begin
```
何かが始まりました！🙌
ブラウザを立ち上げて、localhost:8080にアクセスします。

![スクリーンショット 2024-11-07 20.06.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385830/32f778c8-918a-2caf-6e35-797dbd6afd65.png)

やったぁ。これでもう仕事をしなくていいぞ！
左側が指示を出すチャット、右側がDockerで起動したUbuntuのようです。

## クッキーを焼かせる

:::note warn
利用にあたっては公式のガイドラインをよく読み、危険な操作、危険なURLへのアクセスなどを行わないよう、十分な注意を払うとともに、実行は自己責任でお願いいたします🙏
:::

早速ですが、仕事をしてもらいましょう・・・ふふふ・・・😎
ということで、往年の伝説のゲーム「クッキークリッカー」でクッキーを焼いてもらいます。

念の為ですが、クッキークリッカーは、こちらです。

https://natto0wtr.web.fc2.com/CookieClicker/

まずはURLを指定して、クッキークリッカーを開いてもらいます。
下記のような指示を出しました。

<img width="50%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385830/9f0c12a7-295f-c094-ce7e-e59e80b56885.png">

すると、自動で以下のようなことをやってくれました。

+ 画像認識してアドレスバーのポインタ位置を取得し、クリックを実行
+ アドレスバーにカーソルが入った状態でURLテキストを入力
+ エンターを入力

![スクリーンショット 2024-11-08 11.38.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385830/d7d42819-4590-14f6-f6cc-a06dd540d56f.png)

画面にクッキーが表示され、何となくクリスマス感でてきましたね！[^1]🎄🥰
ゲーム画面まで到達したことを画像認識で確認し、以下のようなことを言ってきました。

:::note info
ゲームが正常にロードされ、プレイ可能な状態になりました。画面中央に大きなクッキーが表示され、現在のクッキー数が０であることが表示されています。これでゲームを開始できる状態です。

次の指示をお待ちしています。クッキーをクリックしたり、アップグレードを購入したりするなど、具体的にどのようなアクションを取るべきかお知らせください。
:::

それにしてもClaudeさん、<b>明らかにクッキークリッカーを知っている反応</b>ですね。
（それはそうなんですが）

まずは、15回クリックしてもらいます。「連続で15回クッキーをクリックして」・・・

![スクリーンショット 2024-11-08 11.42.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385830/45a3969d-3760-a274-2067-a8118a05e363.png)

毎回画像認識を挟みながら、15回クリックをしてくれました。

このまま無限にクリックさせてもいいのですが、<b>Bedrockの課金額をチェックしている上司に間違いなくバレる</b>ので、右下の自動オプションを購入してもらいます。

<img width="50%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385830/d43ec198-6e0c-9ca3-b8da-f300a7a526e6.png">

![スクリーンショット 2024-11-08 11.45.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2385830/f8cb6cd9-febb-36b6-df02-63b58ab6e434.png)

:::note info
カーソルが購入されました。これにより、自動的に10秒ごとにクッキーが１枚生産されるようになりました。画面では以下の変化が確認できます：

1. クッキー生産速度（CpS）が0.1になりました
2. 左側のゲーム画面に小さなカーソルアイコンが表示され、自動的にクッキーをクリックするようになっています
3. 右側の施設欄にカーソルが1つ所有していることが表示されています

カーソルは正常に動作しており、10秒ごとに自動的にクッキーを生産します。次の指示をお待ちしています。

:::

無事、カーソルを購入してくれました！
しかも回答を見るに、結果画像の認識とその理解が的確です。CpSが0.1になったこと、カーソルアイコンが増えていること、施設欄の表示、カーソルの効果など、いろいろと画面から分かる点に言及しています・・・！すごい😳
このまま同様に続けていけば、効率良くクッキーを焼いてくれそうな気がしますね！

ちなみにあくまで参考ですが、今回の一連の検証で30~40回くらいの画像認識とトークンの送受があり、課金額は0.5ドルくらいでした。

## おわりに

以上、クッキーを自動で焼く方法でした！
ではなくて、Claude 3.5 Sonnet V2のComputer use機能の紹介でした。

ぱっと思いつく範囲ですが、スクショをバシバシ撮ってくれて状況把握も的確なので、画面操作を要求するテスト工程とかはすごく相性良さそうです・・・！（載せてないですが、画面ロード中であることなど判定して自動で待ってくれたりもしました。アドリブが効きそうな点が良いですね。）

色々夢が広がりますね。例えその行きつく先が我々の滅びの道であっても・・・🤗
以上、快適なClaudeライフをお過ごしください！👍

[^1]: この記事はQiita Advent Calendar 2024に参加しています。