Closed5

OpenDevinを試す

kun432kun432

https://docs.all-hands.dev/

OpenDevin
より少ないコードで、より多くのものを作る

OpenDevinへようこそ。オープンソースの自律型AIソフトウェアエンジニアで、複雑なエンジニアリングタスクを実行し、ソフトウェア開発プロジェクトでユーザーと積極的に協力することができる。

以下はDevinの動画。これのOSS実装がOpenDevinということね
https://www.youtube.com/watch?v=fjHtjT7GO1c

GitHubレポジトリ
https://github.com/OpenDevin/OpenDevin

kun432kun432

Getting Started
https://github.com/OpenDevin/OpenDevin?tab=readme-ov-file#-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 特定のタスクが与えられた場合、そのタスクが完了したかどうかを検証する

とりあえずドキュメントにあるのは、CodeActAgentPlannerAgent、でデフォルトはCodeActAgentのようなので、多分主要なのはこのあたりだろうということで、一旦CodeActAgentで進める。

モデル

これは山ほどある。。。主要なモデルはほぼほぼ対象になっているように思える。どこかにリストはないのかなと思ったけど、見つけられなかった。とりあえず今回はgpt-4o-mini-2024-07-18を使う。

あわせてOpenAIのAPIキーも設置しておく。

なお、Ollamaも使える模様だが、起動時のオプションで指定する必要がある様子。

https://docs.all-hands.dev/modules/usage/llms/localLLMs

言語

残念ながら日本語はリストになかったので、英語で。

その他

Enable Confirmation Modeは、コード実行時にユーザの確認を求めるというものらしい。今回は有効にしてみる。

こんな感じで設定したら"Save"

設定が保存され(どこに保存されているのだろう?)これがメインの画面っぽい。

適当に試してみる。今回はフィボナッチ関数を実行するスクリプトを作らせてみる。

まずはチャットに入力すると、こんな感じでコードを生成し、実行してよいかを確認してくる。まずはファイルを作ろうとしている。このcreate_fileってのは元々このエージェントが持っているスキルらしい。

OKで進めると、右のワークスペースにファイルが追加されているのがわかる。そして次にpythonのコードが生成され、これをファイルに追加してよいかを確認してくる。

OKで進めると、ファイルを実行してよいかを確認してくる。

OKで進めると実行される。右下のターミナルで実行されているのがわかる。そして、結果を出力したログファイルを出力するコマンドの実行を確認してくる。

OKで進めると、コマンドの実行結果が出力される。

ちなみにターミナルに直接入力することもできる

どうやら、コードの生成のところなどはJupyterで実行されている様子。

kun432kun432

他のエージェントの例。

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?にしかならないし、プランが作成されない。。。。特別なプロンプトが必要なのかな?

kun432kun432

タスク実行中はどうやら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
kun432kun432

ホント触りの部分だけしか触ってないし、ちょっと前提を少し忘れて触ってた。「オープンソースの自律型AIソフトウェアエンジニア」っていう謳い文句にあわせたユースケース・使い方で触らないと、正しい評価はできないな。

このスクラップは3ヶ月前にクローズされました