「AIエージェントキャッチアップ #4 - OpenHands (旧OpenDevin)」を開催しました

ジェネラティブエージェンツの大嶋です。

「AIエージェントキャッチアップ #4 - OpenHands (旧OpenDevin)」という勉強会を開催しました。

generative-agents.connpass.com

アーカイブ動画はこちらです。

youtube.com

OpenHands (旧OpenDevin)

今回は、OpenHands (旧OpenDevin) を動かしながら、公式ドキュメントやソースコードを読んだりしてみました。

OpenHandsのGitHubリポジトリはこちらです。

github.com

公式ドキュメントはこちらです。

docs.all-hands.dev

今回のポイント

OpenHandsの起動

公式ドキュメントの Installation に記載されているdocker runコマンドを実行すると、しばらくして無事に起動し、ブラウザでOpenHandsのエディタにアクセスできました。

Dockerのイメージとして提供されているので動く可能性は高いと思っていましたが、実際に動作して一安心しました。

このエディタ画面の左でエージェントとやりとりしつつ、エージェントが自動でコマンドを実行したりしてコードを実装していく、ということになります。

簡単な例

Getting Started には、hello.shというシェルスクリプトを書かせたり、ReactでTODOアプリを書かせる例が載っていました。

hello.shというhello worldを表示するだけのシェルスクリプトを実装させる場合でも、

  1. ファイルの作成
  2. コードの実装
  3. 実装したコードの確認
  4. パーミッションの設定
  5. 実行

のようにいくつものステップをエージェントが自動で実行していく様子を見られました。

このような小さなスクリプトであっても、実際には人間は複雑なステップで実装していることを改めて感じました。

Prompting Best Practices

OpenHandsのドキュメントには Prompting Best Practices というページがあり、できるだけ具体的に指示すべきといったことが書かれています。

スコープとしては、一度の指示で実装させるコードの行数は通常100行を超えないようにと書かれており、かなり具体的な指示を出しながらコーディングしていく想定のようです。

OpenHandsの実行モード

ドキュメントを読んでいくと、OpenHandsには4つの実行モードがあることが分かりました。

  • ブラウザ上で動作するエディタとして使う
  • CLI Modeでインタラクティブに使う
  • Headless Modeで1度だけ指示して実行完了したらプロセスを終了する
  • GitHub Actionsで使用する

とくにGitHub Actionsで使用するのが気になったので、少し掘り下げていきました。

GitHub Actionsでのopenhands-resolverの使用

OpenHandsとは別のopenhands-resolverというリポジトリで、GitHubのIssueをもとにOpenHandsを動かす拡張機能のようなものが提供されていました。

github.com

Issueに対して fix-me というラベルを付与すると、OpenHandsが自動で実装してくれるというものです。

openhands-resolverはGitHub Actionsで実行することができ、OpenHandsのリポジトリにも設定されていました。

たとえばOpenHandsのドキュメントを改善する以下のIssueに対して、OpenHandsが自動で修正を作成している様子を確認できます。

github.com

OpenHandsのアーキテクチャソースコード

ドキュメントには OpenHandsアーキテクチャを説明するページ もあり、ソースコードを読む際に参考になりそうでした。

ソースコード内にも適宜READMEファイルが配置されており、どのように実装しているかの説明が比較的手厚いように感じました。

例: https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/README.md

次回のご案内

OpenHands (旧OpenDevin) は実際に動かして試すことができ、なかなか面白かったです。

次回は「AIエージェントキャッチアップ #5 - Aider」ということで、The AI Scientistの中でも使われていた「Aider」を動かしてみます!

github.com

generative-agents.connpass.com

ご興味・お時間ある方はぜひご参加ください!

また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!