はじめに
OpenHandsは、AIを活用したソフトウェア開発エージェントであり、人間の開発者が行うようなコードの修正、コマンドの実行、ウェブの閲覧、APIの呼び出しなど、さまざまなタスクを自律的に実行することができます。このツールは、開発プロセスを効率化し、反復的な作業を自動化することで、開発者がより創造的なタスクに集中できる環境を提供します。本記事では、OpenHandsの導入手順とその活用方法について詳しく解説します。
導入手順
OpenHandsを導入するには、以下の手順を実行します。
必要な環境の準備
-
Dockerを使用して以下のコマンドでOpenHandsを起動します
export WORKSPACE_BASE=XXX docker pull docker.all-hands.dev/all-hands-ai/runtime:0.19-nikolaik docker run -it --rm --pull=always \ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.19-nikolaik \ # コンテナのランタイムイメージを指定 -e LOG_ALL_EVENTS=true \ # すべてのイベントをログに記録する設定 -e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \ # コンテナ内のワークスペースのマウントパスを環境変数で設定 -v $WORKSPACE_BASE:/opt/workspace_base \ # ホストのワークスペースディレクトリをコンテナの/opt/workspace_baseにマウント -v /var/run/docker.sock:/var/run/docker.sock \ # ホストのDockerソケットをコンテナにマウントし、コンテナ内からホストのDockerデーモンを操作可能にする -v ~/.openhands-state:/.openhands-state \ # ホストのOpenHands状態ディレクトリをコンテナの/.openhands-stateにマウント -p 8888:3000\ # ホストの8888ポートをコンテナの3000ポートにマッピング --add-host host.docker.internal:host-gateway \ --name openhands-app \ docker.all-hands.dev/all-hands-ai/openhands:0.19
- OpenHandsのQuick Startではローカルフォルダのマウント設定は入っていませんが、入れておくとローカルフォルダのファイルをOpenHandsで直接編集できるようになり、OpenHandsと共同で作業する際に便利です
-
OpenHandsの起動が完了したら、ブラウザで
http://localhost:8888
にアクセスします
モデル設定手順
OpenHandsを使用する際は使用したいモデルを指定できます。今回はAzure OpenAI Serviceを利用するため、以下の手順で設定を行います。
-
AzureポータルでOpenAIリソースを作成します。
-
作成したリソースのエンドポイントURLとAPIキー、モデル名を取得します。
-
http://localhost:8888
で立ち上げたOpenHandsの画面左端歯車アイコンからAI Provider Configurationをクリック、Advanced Optionsをトグルして、APIキー、エンドポイントURL、モデル名を入力します。- Custom Model:
azure/<モデル名>
- Base URL:
<エンドポイントURL>
- API Key:
<APIキー>
※ Agent, Security Analyzer, Enable Confirmation ModeはデフォルトのままでOKです。
- Custom Model:
-
設定が完了したら、Saveをクリックします。
Github連携
OpenHandsはGithubと連携できます。
-
http://localhost:8888
で立ち上げたOpenHandsの画面左端人型アイコンからAccount Settingsをクリックします。 -
Github Token(Optional)にGithubのAPIトークンを入力します。
- トークンを作成していない場合、Get your token hereのhereからGithubのトークン作成ページに遷移するため、そちらからトークンを作成してください
-
トークンを作成したら、Connectをクリックします
-
WorkspaceにリポジトリがCloneされた状態でOpenHandsが起動します
ディレクトリ構成
起動時のWORKSPACE_BASE配下にリポジトリがCloneされるため、以下の構造になります。
そのため、ユーザがOpenHandsと共同で作業する際は、OpenHandsのワークスペースをVSCodeなどで開き、OpenHandsのワークスペースを開くことで、ローカルファイルを編集できるようになります。
WORKSPACE_BASE
├── GithubリポジトリA
├── GithubリポジトリB
...
おわりに
昨年末にDevin AIが発表されてからAIエージェントが気になっていましたが、既存のLLM基盤を用いたAIエージェントの1つであるOpenHandsを試してみました。
その際の導入手順をまとめただけですが、AIエージェントを試す際に参考にしていただければと思います。