Open InterpreterをDocker上で実行する

ChatGPTのアイコン ChatGPT

Open Interpreterとは

The Open Interpreter Project
Open Interpreter is a free, open-source code interpreter.

かんたんに言うと、「プログラムの作成、実行までをやってくれるChatGPT」。

通常のChatGPTであれば、プログラムを書いてくれるが実行まではしてくれない。
OpenInterpreterはそのプログラム実行までしてくれるところがすごいところである。

実行イメージは以下の通り。
現在日時を出力するプログラムをOpen Interpreterが生成し、実行まで代わりにやってくれている。

なぜDocker上で動かすのか?

Open Interpreterは、プログラムの実行に必要なライブラリなどを
よしなにインストールしながら実行してくれる。

また、PC上のファイルアクセスも自由自在である。

そのため、勝手にPCにライブラリインストールされることを防いだり
重要なファイルに勝手にアクセスされることを防ぐためにDockerという仮想マシン上で動作させるのが最も安全である。

必要なもの

対話するのにChatGPTのAPIを利用するため、以下が必要になる。

  • OpenAIのアカウント
  • APIキーの発行
  • (利用量が多い場合)有料プランへの課金

手順

①Dockerfileを作成する

まずはDockerfileを作成する。

Python3.11をベースイメージにして、pipを使ってopen-interpreterをインストールしておく。

FROM python:3.11
# 作業ディレクトリを定義する
WORKDIR /workspace
RUN pip install open-interpreter

②APIキーを環境変数ファイルに記載する

※これはgit管理してはいけないので注意

.env」というファイルを作成し、中身を以下のように記述

OPENAI_API_KEY=APIにリクエストするためのAPIキー

③Dockerイメージをビルド

以下のコマンドで、Dockerイメージをビルドする。

$ docker build -t open-interpreter:1.0 .
[+] Building 3.8s (8/8) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                       0.0s
 => => transferring dockerfile: 68B                                                                                                                                        0.0s
 => [internal] load .dockerignore                                                                                                                                          0.0s
 => => transferring context: 2B                                                                                                                                            0.0s
 => [internal] load metadata for docker.io/library/python:3.11                                                                                                             3.7s
 => [auth] library/python:pull token for registry-1.docker.io                                                                                                              0.0s
 => [1/3] FROM docker.io/library/python:3.11@sha256:2e376990a11f1c1e03796d08db0e99c36eadb4bb6491372b227f1e53c3482914                                                       0.0s
 => CACHED [2/3] WORKDIR /workspace                                                                                                                                        0.0s
 => CACHED [3/3] RUN pip install open-interpreter                                                                                                                          0.0s
 => exporting to image                                                                                                                                                     0.0s
 => => exporting layers                                                                                                                                                    0.0s
 => => writing image sha256:52fce28f98cb170cafff5405945810478e6295a409ab6ff5c0ef598fa8389b8f                                                                               0.0s
 => => naming to docker.io/library/open-interpreter:1.0

-tオプションで、イメージ名とタグを指定しながらビルドしている。

④コンテナを起動しつつ実行

$ docker container run -it --rm --name open-interpreter-container --env-file ./.env open-interpreter:1.0 /bin/bash
root@8d9925533405:/workspace#
  • -itbashを実行しつつコンテナ内に入る
  • -rm:コンテナ終了時にコンテナを自動削除(この場合bashから抜けるとコンテナが削除される)
  • --env-file:環境変数のファイルを指定

⑤Open Interpreterを自由に利用する

コンテナ内部ではinterpreterコマンドが利用可能になっているので、
あとはOpen Interpreterの使い方に沿って利用するだけ。

# コマンドが存在することを確認
root@4d1fd01400ad:/workspace# which interpreter
/usr/local/bin/interpreter
# 筆者はGPT-4を課金してないので、GPT-3.5でinterpreterコマンドを起動
root@4d1fd01400ad:/workspace# interpreter --fast
▌ Model set to GPT-3.5-TURBO
Tip: To run locally, use interpreter --local
Open Interpreter will require approval before running code. Use interpreter -y to bypass this.
Press CTRL-C to exit.
>

CTRL-Cでinterpreterコマンドを抜けることができ、
再度CTRL-Cをすることでbashからも抜けることができる。
(この際にコンテナも終了、削除される)

この対話形式のやり取りで、プログラムの作成や実行を依頼することができる。

⑥遊び終わったらDockerイメージを削除しておく

$ docker image rm open-interpreter:1.0
Untagged: open-interpreter:1.0
Deleted: sha256:52fce28f98cb170cafff5405945810478e6295a409ab6ff5c0ef598fa8389b8f

参考

Dockerfileの書き方や、環境変数のあ使い方などを詳しく知りたい方はこちら。

まとめ

  • Open Interpreterは、プログラムの生成、実行までやってくれる
  • PCに対して不用意なファイルアクセスやライブラリインストールを防ぐため、Docker環境で実行すると良い
  • ポイントはコンテナ内でbashを実行するところと、APIキーを読み込ませるところ
タイトルとURLをコピーしました