ジェネラティブエージェンツの大嶋です。
「AIエージェントキャッチアップ #4 - OpenHands (旧OpenDevin)」という勉強会を開催しました。
generative-agents.connpass.com
アーカイブ動画はこちらです。
OpenHands (旧OpenDevin)
今回は、OpenHands (旧OpenDevin) を動かしながら、公式ドキュメントやソースコードを読んだりしてみました。
公式ドキュメントはこちらです。
今回のポイント
OpenHandsの起動
公式ドキュメントの Installation に記載されているdocker runコマンドを実行すると、しばらくして無事に起動し、ブラウザでOpenHandsのエディタにアクセスできました。
Dockerのイメージとして提供されているので動く可能性は高いと思っていましたが、実際に動作して一安心しました。
このエディタ画面の左でエージェントとやりとりしつつ、エージェントが自動でコマンドを実行したりしてコードを実装していく、ということになります。
簡単な例
Getting Started には、hello.shというシェルスクリプトを書かせたり、ReactでTODOアプリを書かせる例が載っていました。
hello.shというhello worldを表示するだけのシェルスクリプトを実装させる場合でも、
- ファイルの作成
- コードの実装
- 実装したコードの確認
- パーミッションの設定
- 実行
のようにいくつものステップをエージェントが自動で実行していく様子を見られました。
このような小さなスクリプトであっても、実際には人間は複雑なステップで実装していることを改めて感じました。
Prompting Best Practices
OpenHandsのドキュメントには Prompting Best Practices というページがあり、できるだけ具体的に指示すべきといったことが書かれています。
スコープとしては、一度の指示で実装させるコードの行数は通常100行を超えないようにと書かれており、かなり具体的な指示を出しながらコーディングしていく想定のようです。
OpenHandsの実行モード
ドキュメントを読んでいくと、OpenHandsには4つの実行モードがあることが分かりました。
とくにGitHub Actionsで使用するのが気になったので、少し掘り下げていきました。
GitHub Actionsでのopenhands-resolverの使用
OpenHandsとは別のopenhands-resolverというリポジトリで、GitHubのIssueをもとにOpenHandsを動かす拡張機能のようなものが提供されていました。
Issueに対して fix-me
というラベルを付与すると、OpenHandsが自動で実装してくれるというものです。
openhands-resolverはGitHub Actionsで実行することができ、OpenHandsのリポジトリにも設定されていました。
たとえばOpenHandsのドキュメントを改善する以下のIssueに対して、OpenHandsが自動で修正を作成している様子を確認できます。
OpenHandsのアーキテクチャ・ソースコード
ドキュメントには OpenHandsアーキテクチャを説明するページ もあり、ソースコードを読む際に参考になりそうでした。
ソースコード内にも適宜READMEファイルが配置されており、どのように実装しているかの説明が比較的手厚いように感じました。
例: https://github.com/All-Hands-AI/OpenHands/blob/main/openhands/README.md
次回のご案内
OpenHands (旧OpenDevin) は実際に動かして試すことができ、なかなか面白かったです。
次回は「AIエージェントキャッチアップ #5 - Aider」ということで、The AI Scientistの中でも使われていた「Aider」を動かしてみます!
generative-agents.connpass.com
ご興味・お時間ある方はぜひご参加ください!
また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!