TECH BLOG

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

🤲 OSS版Devin「OpenHands」とは?

はじめに


自律型のAIソフトウェアエンジニア「Devin」が注目を集めています。

この記事では、OSS版Devinとも呼ばれる「OpenHands」とは何なのか、Devinと比較してどうなのかを紹介します。

OpenHandsとは?


image block

2024年3月にCognition社が自律型AIソフトウェアエンジニア「Devin」を発表しました。自然言語での指示からソフトウェアの開発(コードの生成、デバッグ、テスト、デプロイなど)を自律的に行うことができます。

OpenHands(旧OpenDevin)は、Devinのコンセプトを引き継ぎながら、誰でも利用・拡張可能な形で公開されたオープンソースプロジェクトです。GitHub上でコミュニティ主導の活発な議論やコントリビューションが行われています。

OpenHandsは何ができるのか?


OpenHandsはローカル環境に構築し、ブラウザUIを使って操作することができます。

1つのチャット (Conversations) ごとにUbuntu上の実行環境が用意され、以下の機能を使うことができます。

  • チャット
  • Workspace (VSCode)
  • Terminal
  • Jupyter
  • App
    • 本来はここに構築中のアプリが表示されるはずですが、現時点では別のURLに誘導されるようなっています。
  • Browser
    image block

自然言語を使って、具体的には以下のようなことをできます。

①コードの生成や編集
  • 0からプログラムを作成する
  • 既存のプログラムを編集する
  • テストコードの作成および実行をする
  • タスクが複雑な場合には、事前に実行計画を策定する
  • エラーが発生した場合には、エラーの内容を読み取って自律的に解決する
  • タスク実行のために必要なことがあれば質問をしてくる
  • アップロードした画像からフロントエンドを作成する
②GitHubまたはGitLabとの連携
  • 新しくリポジトリを作成する
  • 既存のリポジトリに接続してコードの編集を行う
  • タスクごとに自動でブランチを切る
  • プルリクエストを作成する
  • リポジトリの内容を調べてREADMEを作成する
③Jupyterを使ったデータ分析
  • Jupyter上でデータ分析を実行し、データフレームやグラフとして可視化する
  • 外部のデータソース(BigQuery等のデータベース、GitHub上のCSVなど)からデータを取得する
④Webブラウジング
  • ユーザーの質問に対して、サイトの情報をもとに回答する
  • スクレイピングを実行する
  • ログイン、フォームの入力・送信などの操作をする

OpenHandsとDevinの比較


OpenHandsとDevinを比較すると、コスト、セキュリティ、カスタマイズ性においてOpenHandsは優位性を持ちます。しかし、その性能はLLMモデルに依存し、今回の検証ではDevinに比べて実行速度が遅く、タスクの成功率も低い結果となりました。

OpenHands Devin
コスト (*) 外部API(OpenAIやGeminiなど)の利用料のみなので安い。 プランによって料金は異なるがOpenHandsよりも高い。
セキュリティ ローカル環境で運用可能。
ローカルに閉じた構成にすれば外部LLMへのデータ送信だけ気にすればよい。
Devin側でのデータの管理方法がブラックボックス。
Devinが秘密鍵をコードに含めてGitHubにPushした事例もアリ。
カスタマイズ性 OSSのため自由 Devinの提供する機能のみ

(*) コストを比較するために同じ指示を出して簡単なサイトを作ってもらいました。

<指示>

あなたはフロントエンドエンジニアです。 
HTML/CSSを使って、個人の自己紹介用のサイトを作成してください。

# 含めてほしい内容
名前:山田太郎
住所:東京都新宿区
年齢:25歳
好きな食べ物:寿司

<結果>

コスト・セキュリティ・カスタマイズ性ではOpenHandsに分があります。

しかし、OpenHandsの性能はLLMモデルによって左右され、今回使用したgpt-4o miniでは同じタスクでも失敗することも多く、実行速度も遅かったです。

OpenHands (gpt-4o mini): $0.03

Devin: $0.765 (0.34ACU)

image block
image block

おわりに


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

次回はOpenHandsの導入方法や基本的な使い方を紹介します。

参考