Closed9
OpenHandsでClaude 3.7 Sonnet on VertexAIを動かす(MacBook Air M3)
What
OpenHandsをM3 MacBookで動かす。LLM Providerとして、ClaudeではなくVertex AIを用いる。
TL;DR
- Docker立ち上げコマンドに環境変数設定が必要
- Vertex AIでClade 3.7 Sonnetが使えるリージョンは
us-east5
かeurope-west1
のどちらか。 - モデル設定は
Advanced
からvertex_ai/claude-3-7-sonnet@20250219
を指定。(vertex_ai
のアンダーバーが必要)
環境
- MacBook Air M3
- Docker Desktop: 4.35.1
OpenHandsのセットアップ
以下のMacOS用のタブを参考。
Docker Desktopの設定を確認
基本コマンド
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.27
Vertex AIの対応
以下の記事にある通り、各種環境設定の設定が必要。
Google Cloudの対応
Vertex AI Model GardenでClaude 3.7 Sonnetを有効化
サービスアカウントの作成
Roleは「Vertex AI ユーザー」を付与し、サービスアカウントキーを発行。
以下の記事に倣って、$HOME/Documents/OpenHands-Workspace
に置いた。(あまりセキュアではない気もするが...)
Vertex AI用の環境変数を追加したコマンド
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.27-nikolaik \
-e LOG_ALL_EVENTS=true \
-e WORKSPACE_MOUNT_PATH=$HOME/Documents/OpenHands-Workspace \
-e GOOGLE_APPLICATION_CREDENTIALS="/opt/workspace_base/openhands-service-account-key.json" \
-e VERTEXAI_PROJECT=<Your Project Id> \
-e VERTEXAI_LOCATION=us-east5 \
-v $HOME/Documents/OpenHands-Workspace:/opt/workspace_base \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.27
注意点として、VERTEXAI_LOCATION
は限られたRegionしか選べない。
Claude 3.7 Sonnetの場合、2025年3月時点でus-east5
かeurope-west1
のどちらか。
モデルの設定
http://localhost:3000 にアクセス。
エラー: litellm.BadRequestError: LLM Provider NOT provided
するとエラーになります。
LiteLLM
の方を見てみます。
vertexai/claude-3-7-sonnet@20250219
ではなく、vertex_ai/claude-3-7-sonnet@20250219
としないといけないようです。
モデル再設定
ドロップダウンから指定するのはワナだったので、Advanced
から設定します。
APIキーは空欄で問題ありません。
テスト
これでメッセージを送ります。
ちょっと待ちます
回答が来ました。
かんたんなお題:足し算プロジェクト with Vitest
以下の指示を与えました。
Create a simple TS project with pnpm.
- define add functions (takes two numbers as args)
- write test using Vitest
結果は以下でした。
pnpmのセットアップ、vitestの導入、実行まで自分でやってくれました。
このスクラップは5ヶ月前にクローズされました