OpenDevinを試す
OpenDevin
より少ないコードで、より多くのものを作るOpenDevinへようこそ。オープンソースの自律型AIソフトウェアエンジニアで、複雑なエンジニアリングタスクを実行し、ソフトウェア開発プロジェクトでユーザーと積極的に協力することができる。
以下はDevinの動画。これのOSS実装がOpenDevinということね
GitHubレポジトリ
Getting Started
一応作業ディレクトリを作って、そこで記載のコマンドを実行。実際には、その配下にworkspaceというディレクトリが作られて、コンテナとはそこでやり取りをするように見える。一応workspaceというディレクトリがすでにある場合は全部消されるらしいので注意とのこと。
$ mkdir opendevin && cd opendevin
$ WORKSPACE_BASE=$(pwd)/workspace
$ docker run -it \
--pull=always \
-e SANDBOX_USER_ID=$(id -u) \
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
-v $WORKSPACE_BASE:/opt/workspace_base \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name opendevin-app-$(date +%Y%m%d%H%M%S) \
ghcr.io/opendevin/opendevin:0.8
設定ファイルがないというエラーが出るが、とりあえず起動したっぽい。
18:53:33 - opendevin:INFO: config.py:437 - Config file not found: [Errno 2] No such file or directory: 'config.toml'
INFO: Started server process [36]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:3000 (Press CTRL+C to quit)
ブラウザで3000番ポートにアクセスするとこんな感じ。
なるほど最初に色々設定して保存するとおそらく設定ファイルが作成されるのだろうと推測。
ざっと設定項目を見てみる。
エージェント
いろいろある。
名称 | 説明 |
---|---|
BrowsingAgent | ブラウザと対話するエージェント。 |
CodeActAgent | CodeActフレームワークに基づいた、Pythonコードを生成・実行するエージェント |
CodeactSweAgent | CodeActをベースにしたSWEエージェントの実装。GitHub Issuesを解決することが目的となっている |
CoderAgent | 特定のタスクとコードベースの詳細な説明が与えられ、そのタスクを達成する |
CommitWriterAgent | gitステージングエリアにあるファイルに対してgitコミットメッセージを書く |
DelegatorAgent | 現在のタスクに基づいて他のエージェントにタスクを委任する責任を負う |
DummyAgent | LLMを呼び出さず、同じアクションセットを決定論的に送信するだけの、e2eテスト用 |
ManagerAgent | 専門分野に応じてマイクロエージェントに仕事を任せる |
MathAgent | Pythonを使って単純・複雑な数学の問題を解く |
PlannerAgent | 問題解決のための長期的な計画を作成するために、特別なプロンプト戦略を利用する、各ステップにおいて、以前の行動と観察のペア、現在のタスク、最後にとった行動に基づくヒントが与えられる |
PostgersAgent | PostgreSQLマイグレーションの作成と保守を行う。 |
RepoExplorerAgent | 既存のコードベースの詳細な要約を生成する。 |
StudyRepoForTask | 特定のタスクが与えられた場合、コードベースの関連する部分をすべて探して説明する |
TypoFixerAgent | 現在の作業ディレクトリにあるファイルのタイプミスを修正する。 |
VerifierAgent | 特定のタスクが与えられた場合、そのタスクが完了したかどうかを検証する |
とりあえずドキュメントにあるのは、CodeActAgent
とPlannerAgent
、でデフォルトはCodeActAgent
のようなので、多分主要なのはこのあたりだろうということで、一旦CodeActAgent
で進める。
モデル
これは山ほどある。。。主要なモデルはほぼほぼ対象になっているように思える。どこかにリストはないのかなと思ったけど、見つけられなかった。とりあえず今回はgpt-4o-mini-2024-07-18
を使う。
あわせてOpenAIのAPIキーも設置しておく。
なお、Ollamaも使える模様だが、起動時のオプションで指定する必要がある様子。
言語
残念ながら日本語はリストになかったので、英語で。
その他
Enable Confirmation Mode
は、コード実行時にユーザの確認を求めるというものらしい。今回は有効にしてみる。
こんな感じで設定したら"Save"
設定が保存され(どこに保存されているのだろう?)これがメインの画面っぽい。
適当に試してみる。今回はフィボナッチ関数を実行するスクリプトを作らせてみる。
まずはチャットに入力すると、こんな感じでコードを生成し、実行してよいかを確認してくる。まずはファイルを作ろうとしている。このcreate_file
ってのは元々このエージェントが持っているスキルらしい。
OKで進めると、右のワークスペースにファイルが追加されているのがわかる。そして次にpythonのコードが生成され、これをファイルに追加してよいかを確認してくる。
OKで進めると、ファイルを実行してよいかを確認してくる。
OKで進めると実行される。右下のターミナルで実行されているのがわかる。そして、結果を出力したログファイルを出力するコマンドの実行を確認してくる。
OKで進めると、コマンドの実行結果が出力される。
ちなみにターミナルに直接入力することもできる
どうやら、コードの生成のところなどはJupyterで実行されている様子。
他のエージェントの例。
BrowsingAgentで天気を調べてもらった。Webサイトにアクセスして、ブラウザー操作しながら情報を集めているのがわかる。
Planner Agentも試してみたんだけども、これ使い方がよくわからないな。。。
The agent is given its previous action-observation pairs, current task, and hint based on last action taken at every step.
ということはいきなりこれを選んで使うというよりは、タスクを実行したらエージェントを切り替えて使うってことなのかなーと思ったのだけども。何やってもAll done! What's next on the agenda?
にしかならないし、プランが作成されない。。。。特別なプロンプトが必要なのかな?
タスク実行中はどうやらSandbox用のコンテナが用意されてそこで諸々行われているっぽい
$ docker ps
CONTAINER ID IMAGE COMMAND (snip) PORTS NAMES
cad749fd343c ghcr.io/opendevin/sandbox:main "/usr/sbin/sshd -D -…" (snip) 0.0.0.0:50857->50857/tcp opendevin-sandbox-7687989f-f380-433c-9678-9141ec8e8f4653a2d5d7-f212-4c80-9502-8498e5a4dae1
13bad1b3980b ghcr.io/opendevin/opendevin:0.8 "/app/entrypoint.sh …" (snip) 0.0.0.0:3000->3000/tcp opendevin-app-20240810233838
ホント触りの部分だけしか触ってないし、ちょっと前提を少し忘れて触ってた。「オープンソースの自律型AIソフトウェアエンジニア」っていう謳い文句にあわせたユースケース・使い方で触らないと、正しい評価はできないな。