はじめに
過去にOpenHandsをAzure OpenAIで試した記事を書いたのですが、
AzureではClaudeが使えず、OpenAIのGPT-4oを使っていました。(o1を使うにも申請が必要で面倒)
Google CloudのVertex AIでは、Claudeを使うことができ、
公式ページにも簡単なガイドがあったので、
これを機に試してみることにしました。
前提
- ローカル端末: M1 Macbook + Docker
- Google Cloud アカウント
- プロジェクト、Vertex AIのAPIを有効化
手順
1. サービスアカウントを作成
-
サービスアカウント名を入力し、次のページへ
-
このサービス アカウントにプロジェクトへのアクセスを許可するページでベース>編集者を選択し、次のページへ
-
特に設定せずに、作成を押下し、サービスアカウントを作成
2. サービスアカウントのJSONキーを取得
- 作成したサービスアカウントを選択し、鍵タブからキーを追加>新しい鍵を作成を押下
- JSONを選択し、作成を押下
- 鍵をダウンロードし、保存
3. 作業ディレクトリの準備
-
$HOME/Documents/OpenHands-Workspace
ディレクトリを作成 - ダウンロードしたサービスアカウントのJSONキーをこのディレクトリに配置
4. OpenHands用のDocker環境を準備
まず、必要なDockerイメージをプルします:
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.23-nikolaik
5. 環境変数の準備
OpenHandsの起動前に、以下の環境変数を準備する必要があります:
- 認証関連
-
GOOGLE_APPLICATION_CREDENTIALS
: サービスアカウントのJSONキーファイルのパス- コンテナ内のパスを指定(例:"/opt/workspace_base/your-key.json")
- JSONキーは作業ディレクトリ(OpenHands-Workspace)に配置しておく
- Vertex AI設定
-
VERTEXAI_PROJECT
: Google CloudのプロジェクトID- Google Cloudコンソールのプロジェクト情報から確認可能
-
VERTEXAI_LOCATION
: Vertex AIのリージョン- 日本の場合は"asia-northeast1"を推奨
- レイテンシを考慮して選択
- OpenHands設定
-
WORKSPACE_MOUNT_PATH
: 作業ディレクトリのマウントパス- コンテナ内のパスを指定(例:"/opt/workspace_base")
-
SANDBOX_RUNTIME_CONTAINER_IMAGE
: 使用するランタイムイメージ- 最新のイメージを指定(例:docker.all-hands.dev/all-hands-ai/runtime:0.23-nikolaik)
6. ディレクトリとファイルの確認
起動前に以下の点を確認してください:
- 作業ディレクトリの構造例
$HOME/Documents/OpenHands-Workspace/
└── your-service-account-key.json # サービスアカウントのJSONキー
- 必要なディレクトリの存在
-
~/.openhands-state
ディレクトリ(なければ作成) - 作業ディレクトリ($HOME/Documents/OpenHands-Workspace)
7. OpenHandsの起動
以下の環境変数とボリュームマウントを指定してOpenHandsを起動します:
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.23-nikolaik \
-e LOG_ALL_EVENTS=true \
-e WORKSPACE_MOUNT_PATH=$HOME/Documents/OpenHands-Workspace \
-e GOOGLE_APPLICATION_CREDENTIALS="/opt/workspace_base/XXX.json" \
-e VERTEXAI_PROJECT="XXX" \
-e VERTEXAI_LOCATION="asia-northeast1" \
-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.23
コンテナが正常に起動すると、http://localhost:3000
でOpenHandsのWebインターフェースにアクセスできます。
Webインターフェースでモデルの設定
OpenHandsのWebインターフェースにアクセスし、AIプロバイダ設定で以下を設定します:
- LLMプロバイダ: Vertex AI
- LLMモデル: claude-3-5-sonnet-v2@20241022
まとめ
Google CloudのVertex AIを使ってOpenHandsを設定する手順を紹介しました。
これでOpenHandsをClaude-3.5-sontnet-v2モデルを使って利用できるようになりました。
設定自体は非常にシンプルで、サービスアカウントの作成とJSONキーの配置、
そして必要な環境変数を設定するだけで利用できます。