はじめに
OpenHands面白そうだし、うまく完全無料で使いたいなと思ったのでその忘備録
Devinとは
知ってる方が多そうですが、一応概要(by copilot)
Devinは、Cognition Labsが開発した完全自律型AI開発エージェントです。
ソフトウェア開発の全プロセスを一手に引き受け、設計、コーディング、デバッグ、テスト、デプロイまで対応します。主な特徴は以下の通りです:
- 完全自律型AI: 自律的にソフトウェア開発を進める。
- 幅広いタスク対応: コード解析、バグ修正、最適化、テスト、デプロイを自動化。
- 対話形式: エンジニアと対話しながら作業を進める。
- 開発ツール互換: VSCodeなどと統合可能。
OpenHandsとは
こちらも同じように(by copilot)
OpenHandsは、オープンソースの自動開発AIエージェントです。
人間の開発者が行う多くのタスクをAIが代行できるように設計されています。
具体的には、コードの修正、コマンドの実行、Webの閲覧、API呼び出しなどが可能です。
開発プロセスを効率化し、開発者がより創造的な作業に集中できる環境を提供します。
DevinとOpenHandsの違い
比較もしてもらってます(by copilot)
特徴 Devin OpenHands 提供形態 商用サービス オープンソースプロジェクト ホスティング ホスティング型のソリューション ユーザー自身がホスティング コスト 月額500ドルからの有料サービス ソフトウェアは無料、API料金は別途必要 ソースコード クローズドソース(非公開) オープンソース(MITライセンス) 主な機能 プルリクエストのレビュー、移行作業など コード修正、コマンド実行、API呼び出しなど
主な機能の部分が違いますが、できることはほぼ一緒です。
質や使い勝手が異なるくらいの感覚かなと
OpenHandsを無料で使う
1. Google AI StudioでAPIキーを取得する
https://aistudio.google.com/app/apikey?hl=jaから直接発行できると思います。
使用に制限はありますが、無料で使えるAPIキーです。
案内通りにやればAPIキー作れると思うので手順割愛
2. ローカルにOpenHandsを立てる
Dockerコマンドを行える環境で下記コマンドを実行してください。
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.26-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.26-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.26
OpenHandsはOpenHandsが爆速で更新かけているので、起動のコマンドは適宜GitHub確認してください。
https://github.com/All-Hands-AI/OpenHands?tab=readme-ov-file#-quick-start
3. OpenHandsにAPIキーを渡す
APIキーを入力する画面になるので、適切なモデルなどを選んでから入力します。
推奨されているモデルはanthropicのclaude-3-5-sonnet-20241022らしいですが、
リクエスト数などに制限がありますが、無料でそこそこ使いたいというのが主旨のため、
今回はGemini 2.0 Flashを使います。
4. OpenHandsで好きなアプリを作成する
適当に入力してみてください。
勝手に作ってエラー解決してくれます。
下記はTODOアプリを作ってもらっている最中の画面です。
画面左側でチャット、右側上部にソースコードや稼働しているアプリ、画面右下にコンソールがあります。
Docker側のログに細かい情報が出てきたりもするので、実際に使う際はそっちも見る必要があるかもです。
終わりに
GeminiのAPIは無料で使う分には使用制限があるので、全然動かないかなと思いましたが、そこそこ使えたのでお金かけずにDevinみたいなことをしたいのであれば、この構成がいいかも...?