見出し画像

Open Interpreter をコンテナ環境で実行する雑コマンドを作った

社内の情報共有チャンネルで、 Open Interpreter というローカル上でコードとコマンドの実行を許可してタスクを完了させるオープンソースを知った


これが良い精度で、発展や応用を考えるととても面白かったのでコンテナ化して遊んでみる


コンテナ化にあたり、せっかくなので Open Interpreter を使って進めてみた。

前準備としてGitHubリポジトリの作成とクローンまでやったが、ghコマンドを使えるので不要だったと考えられる。実行時に環境変数 OPENAI_API_KEY がないと尋ねられる。デフォルトで使用するLLMは GPT-4 だった。


今回のタスクは以下

> https://github.com/yoshikouki/open-interpreter-with-container のリポジトリを参照して、必要なコードを "~/src/github.com/yoshikouki/open-interpreter-with-container" に書き出してください

すると、計画と立ててコマンド実行の許諾を求められる

こんな感じでサクサク進んでいく。一応 AutoGPT のように自動許諾のオプションもあるが、少なくとも生のローカル環境ではどんなコマンドが実行されるか分からないので使用は難しいだろう


方向転換したいときは n を押した後、フィードバックのプロンプトを入力すると良い。


途中経過の経過はこんな感じ。「README に軽く説明を書いたから後はそれ通りによろしく」的なことをお願いした

1 指定されたディレクトリ(~/src/github.com/yoshikouki/open-interpreter-with-container)に移動します。 - 完了
2 git cloneコマンドを使用して、指定されたURLからリポジトリをクローンします。 - 完了
3 リポジトリ内のファイルを確認します。 - 完了
4 README.mdファイルの内容を確認します。

その後は以下のようなステップで計画を建てられた。正直 docker compose はいらないのだが・・・

以下のステップで進めていきます。

1 Dockerfileを作成します。このファイルは、コンテナの構築に必要な指示を含みます。
2 docker-compose.ymlファイルを作成します。このファイルは、複数のコンテナを一緒に管理するためのものです。


コマンドを実行できるから当たり前なのだが、面白いことに git コマンドも実行してくれるので、AIの変更を逐一 Git でコミットして制御が可能だ。これは画期的だと考えており、何なら私自身がそれを実現したくてコマンドを書いていたくらいだ (初期段階で開発を辞めてしまったが)。

「AIによる現実への副作用を、人間が容易に理解し制御できる」というのは、AIエージェント化の必須事項だと考えており、これだよこれという感じで興奮している


真ん中3つは Open Interpreter によるコミット

コミットメッセージの制御は入れた方が良さそうだ。


できあがった Dockerfile は以下。まあそれはそうだねという感じ。

FROM python:3.11-bookworm
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirements.txt
CMD ["interpreter"]

このくらいなら自分で書いた方が早いのは確か。それに、最初は python 3.8  系のイメージで作成したり、どうしてもLLMの知識に依存してしまうので、「Open Interpreter だけで完璧」とは行かない。


実装まで読んだわけではないがコンテキストはターミナルの出力結果と等価になるようで、例えば長すぎるコードを出力した場合に一部が省略されたりすると、その省略部分はコンテキストから外れてしまう。上限は確か2,000文字だった


その後もインストールコマンドや実行コマンドを作ってもらったりして、結構楽しみながら作業を進めた。やっぱり細かいところは自分でやった方が早いそうだが。


料金問題

もちろん入力やそれまでの流れによって大きく変わるが、そこそこトークンを使用する。下スクショは例で、実測値は 3,000 〜 35,000 トークンほど。

https://platform.openai.com/account/usage

7 コミット分の変更で1,000円以上の課金となってしまった


今後の夢想

コンテナ化できたので、これをベースに CI/CD で回したり、コード生成以外のことをやったり、Code Llama を使えるようにしたりなど、かなり幅が広がる。また、非エンジニアの人にも比較的使いやすくなったのではないだろうか


もう少し遊んでみようと思う

この記事が気に入ったらサポートをしてみませんか?