TECH BLOG

エルカミーの技術ブログです

🤲 OpenHandsの基本的な使い方

はじめに


この記事では、OpenHandsの導入手順から基本的な使い方までを紹介します。

そもそもOpenHandsとは何なのかについては、こちらの記事をご覧ください。

📎

環境


  • Ubuntu 24.04.1 LTS

事前準備


導入手順


  1. UbuntuでDockerコマンドを実行する
    docker pull docker.all-hands.dev/all-hands-ai/runtime:0.33-nikolaik
    
    docker run -it --rm --pull=always \
        -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.33-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.33

    OpenHandsは開発スピードが速くバージョンの更新頻度が高いため、最新のコマンドを適宜確認した方がよいです。

  2. Dockerコマンドで設定したlocalhostにアクセスする
  3. 使用するLLMモデルを選択する
    1. 初めての起動時には設定画面が表示されます。
      image block
    2. それ以降は設定画面から使用するLLMモデルを変更できます。
      image block
  4. 設定画面からその他の設定をする
    1. GitHub/GitLabと連携する場合にはGitHub Token/GitLab TokenにPATを入力する
    2. 日本語表示にしたい場合にはLanguageを「日本語」に変更する

      ※ あくまで日本語表示になるだけで、OpenHandsとのチャットの返答のデフォルトは英語のままです。

      image block

基本的な使い方


今回はOpenAIのgpt-4o-miniを使って、下記の使い方を試します。

  1. 新しくコードを生成する
  2. GitHubと連携して既存のコードを編集する

1つのチャット (Conversations) ごとにUbuntu上の実行環境が用意され、複数のチャットを並行して行うことも可能です。なお、OpenHandsはバージョンや選択するモデルによってタスクのクオリティが異なります。

1. 新しくコードを生成する

今回はじゃんけんで遊べるアプリの作成を依頼してみます。

  1. チャットの入力欄にOpenHandsへの指示を入力します。

    指示文

    • 指示を与えない場合にはWorkspaceにファイルを作成しないため、明示的にWorkspaceでの作業およびファイルの保存を指示しています。
    Pythonを使って、コンピュータとじゃんけんで遊べるアプリを作成してください。
    Workspaceで作業して作成したファイルを保存してください。

    入力画面

    image block

    チャットの保存場所

    • チャットが開始されると下記のように保存されるため、後からチャットを再開することができます。
    image block
  2. 入力後には下記の画面に遷移します。

    今回の指示の場合、回答を開始するまでに30秒~1分程度待つ必要がありました。

    image block
  3. タスクが完了するとWorkspaceにファイルが作成されます。

    ユーザーはターミナルに入力できないため、ターミナルでの実行もチャットで指示する必要があります。ただし、今回のようなインタラクティブな入力(ユーザーによるじゃんけんの手の入力)が必要な場合は実行に失敗してしまうようです。

    image block
  4. Workspaceに保存したファイルはVS Codeで開いて編集することができます。

    VS Code上ではファイルの編集のほか、ファイルのダウンロードやターミナルでの実行もすることができます。

    image block
    image block
2. GitHubと連携して既存のコードを編集する

今回はテスト用に作成したGitHubリポジトリのファイルを編集します。

  1. リポジトリを選択します。

    このとき、指示の入力欄には何も入力する必要がありません。

    image block
  2. 選択後には下記の画面に遷移します。

    Workspaceにリポジトリの内容が反映されて、チャットが開始できるようになるまで1分程度かかりました。

    image block
  3. チャットでファイルの編集を依頼します。

    指示文

    • ファイル名を具体的に指示しないと別のファイルを探したり勝手に作成してしまったりすることがあります。
    以下のとおりファイルの編集をお願いします。
    
    編集ファイル: index.html
    編集内容: 得意なことを「数学」から「国語」に変更
  4. ファイルの編集が完了した後、「Push & Create PR」を選択します。

    今回はCommitまでしていますが、OpenHandsがどこまで対応するかはばらつきがあります。ただし、勝手にPushまですることはないようです。

    image block
  5. GitHub上でプルリクエストが作成されていることが確認できました。
    image block

おわりに


ここまで読んでいただき、ありがとうございました。

次回はOpenHandsの応用的な機能を試して紹介します。

参考