🎰

Open InterpreterをDockerで動かす

2023/09/19に公開

Open Interpreterが凄い

凄いの出ちゃいましたね。Open Interpreterの凄さとか、可能性とかは、以下のshi3zさんのブログ記事で感じていただければと思います。こういうエモい文章はshi3zさん最高に上手ですね。

https://note.com/shi3zblog/n/n7eaba88ffe4a

自分としては、Advanced Data Analysis(旧ChatGPT Code Interpreter)を触っていて「こりゃ凄いな」と思っていたものの、少し制約に窮屈さを感じていたところだったのでバッチリのタイミングでした。

https://zenn.dev/karaage0703/articles/5df61d446684f9

Open InterpreterをDocker環境を動かす

Open Interpreter凄いのですが、問題は凄すぎる点ですね。ガンガンコマンドを実行するので、ローカルで動かしたら凄い勢いで環境が汚れていきます。

デフォルトのプロンプトは安全側に倒されていますが、それでもファイルを消されたりする可能性もゼロではないですし、色々実験したくもなりそうです。

というわけで、Dockerを使ってOpen Interpreterを動かすと良さそうという話です。Dockerに関しては以下記事参照ください。セットアップなども以下記事参照ください。

https://zenn.dev/mkj/articles/33befbaf38c693

Dockerは、いわゆる仮想環境で、普段使用する環境からは隔離されているので、Open Interpreterが何しようと平気です。暴走して sudo rm -rf *とか実行しても、コンテナを立ち上げ直せば一瞬で元通りです。
頑丈な檻の中で猛獣を飼っているようなものですね。

手軽に使うためのGitHubのリポジトリを準備しました。
https://github.com/karaage0703/open-interpreter-docker

試した環境はMac OSですが、Windows(WSL2)でもLinuxでも問題なく動くと思います(そのうち試します)。

今のところ、シンプルなコマンドラインで実行できるDockerfileと、ブラウザでGUIを使って実行できるDockerfileの2つを用意しています。

使い方はGitHubのリポジトリのREADMEに書いてありますが、簡単に紹介します。

シンプルなDockerfileの使い方

リポジトリをクローンします。

$ cd && git clone https://github.com/karaage0703/open-interpreter-docker

Dockerfileをビルドします。

$ cd ~/open-interpreter-docker
$ docker build -t open-interpreter-simple ./container-simple

ここまでは初回に1回やればOKです。

動かしたいときは、以下コマンドでDockerランします。

$ cd ~/open-interpreter-docker
$ docker run -it --rm -v $(pwd):/root open-interpreter-simple

コンテナが立ち上がるので、コンテナ内でOpen Interpreterを実行します。

root@hostname:~# interpreter -y

以下のような感じに、Open Interpreterをコマンドライン上で実行できます。

ただ、GUIは使えないので画像の表示とかはできません。表示する代わりに画像を保存をプロンプトで指示するなど工夫すると良いでしょう。

また-v $(pwd):/rootでボリュームを使用することでopen-interpreter-docker内にあるファイルをDockerの/rootディレクトリ直下で利用できるようになります。これで、好きなファイルをDocker環境とやりとりすることができます。

GUIが使えるDockerfileの使い方

やっぱりGUIが使いたいという人のためのDockerfileです。GUIの設定が面倒なDockerですが、ブラウザ経由でDockerにVNCでアクセスすることで、OSに依存せず安定してGUIを使うことができます。

過去にROS(Robot Operating System)をDockerで使うときに便利なので使っていましたので、これをOpen Interpreterに応用します。すぐ動かせると思いましたが、Ubuntuのバージョンとかもろもろで結構大変でした。今もまだ色々と問題あります(後述)。

使い方を紹介します。リポジトリcloneしてある前提です。以下でDockerfileをビルドしましょう。

$ cd ~/open-interpreter-docker
$ docker build -t open-interpreter-gui ./container-gui

使いたいときは、以下実行してDockerランしましょう。

$ cd ~/open-interpreter-docker
$ docker run -v $(pwd):/root -p 6080:80 open-interpreter-gui

あとは、ブラウザで http://127.0.0.1:6080/ に入ります。

以下のような画面が出たらOKです。

左のメニューからクリップボードを使えます。これでホストのPCとDockerでコピペができます。ただし日本語はうまくコピペできません。

ターミナルはシステムツール→LXTerminalから起動できます。

あとはターミナルからOpen Interpreterを実行しましょう。

GUIの表示もバッチリです。

StremlitでのGUI

以下記事参照ください。

https://zenn.dev/karaage0703/articles/6f10bd5be666a9

Tips

Open AI API Keyの入力

以下のようにオプションをつけてDockerを起動すると、OPEN AI API KEYを環境変数に設定した状態でDockerを起動できます。

$ docker run -v $(pwd):/root -p 6080:80 -e "OPENAI_API_KEY=<open_ai_api_key>" open-interpreter-simple

問題点

日本語を入力できないです。Docker内で、Googleの仮想キーボードを使って日本語入力して、コピペすることで一応使うことはできますが、普通に入力したいです。

https://www.google.co.jp/intl/ja/inputtools/try/

誰かやり方教えてください。PR募集中です。

まとめ

Open InterpreterをDockerで動かす方法を紹介しました。他の手軽な方法としては、Google Colabを使う方法があります。悪くはないですが、やっぱり手元で動かしたいですよね。あとはOpen Interpreter、Azureにも対応しているそうなので、本格的に使うならそっちでも良いのかもしれません。

宣伝

ChatGPTの本書いてます。Open Interpreterにも触れる予定です。まだ発売は先ですが、もしよろしければ是非!

https://karaage.hatenadiary.jp/entry/2023/09/11/073000

参考リンク

https://github.com/Frederic-Boulanger-UPS/docker-ubuntu_22-04-novnc

https://rooter.jp/infra-ops/build_docker_jp_env/

https://www.mazn.net/2020/09/1913.html

https://qiita.com/ot12/items/d2672144b914cb6f252f

https://qiita.com/takahashiakari/items/f096e5bcdfecf3d5ba90

https://github.com/Tiryoh/docker-ros2-desktop-vnc/tree/master

https://zenn.dev/algomatic/articles/657d4cfa66e74d

https://zenn.dev/derbuihan/articles/2e74ce1c75adfb

https://note.com/nike_cha_n/n/n2b1be25aabc8

https://qiita.com/msymacromill/items/14f90e3bb5635f088cb3

https://note.com/masayuki_abe/n/n97ab5e9c11ad

https://note.com/nike_cha_n/n/nabcfeb7aaf3f

https://zenn.dev/wmoto_ai/articles/a4d39887d79ae3

関連記事

https://qiita.com/karaage0703/items/957bdc7b4dabfc6639da

変更履歴

  • 2023/10/22 OpenInterpreterUIについてリンク追記

Discussion