Open InterpreterをDocker環境に導入したので、その導入方法についてまとめました。本当はローカル環境に構築したかったのですが、Open Interpreterの特性上様々なパッケージをガンガンインストールしていくようなので、一番綺麗に保てそうなDockerを利用することにしました。
Dockerは自宅環境に導入していなかったので、Docker Desktopを使って導入しています。
1. Open Interpreterとは
Open Interpreterは、OpenAIが提供するChatGPT APIを簡単に利用するためのツールです。プログラミングの知識がなくても、ChatGPTを使ったチャットボットを作ることができます。
2. 構築の前提条件
Open InterpreterをDocker環境で構築するには、以下の環境が必要です。
- Docker: version 20.10.0以上
- OpenAIのAPIキー(GPT-4を利用する場合)
OpenAIのAPIキーは有料です。無料で使うことはできません。OpenAIのWebサイトからサインアップして、有料プランに登録する必要があります。OpenAIのAPIキーがない場合はCode-Llamaのモデルが選択されるようです。
Dockerのインストール方法
Dockerは、以下の手順でインストールできます。
Docker公式サイトからDocker Desktopをダウンロードします。
ダウンロードしたインストーラを実行し、指示に従ってインストールを進めます。
インストールが完了したら、Docker Desktopを起動します。
3. Dockerfileの作成
以下の内容でDockerfileを作成してください。作成したDockerファイルをどこか適当なフォルダ(例えば/Documents/open-interpreter/docker/等)に配置してください。
FROM ubuntu:latest
# 必要なパッケージのインストール
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
software-properties-common \
curl \
python3.10 \
python3.10-distutils \
python3.10-venv \
python3-pip
# python3.10を優先バージョンに設定
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
# PIPのアップグレード
RUN python3 -m pip install --upgrade pip
# open-interpreterのインストール
RUN pip3 install open-interpreter
# 作業ディレクトリの作成
WORKDIR /app
RUN mkdir scripts
# OPENAI_API_KEYを環境変数に設定する (ビルド時の引数から設定することをおすすめ)
ARG OPENAI_API_KEY
ENV OPENAI_API_KEY=$OPENAI_API_KEY
# open-interpreterの実行
CMD ["openinterpreter"]
4. コンテナイメージのビルド
PowerShell等で以下のコマンドを実行して、DockerFileの置いてあるディレクトリに移動します。
cd C:\Users\<user-name>\Documents\open-interpreter\docker
次にdocker buildコマンドでコンテナイメージをビルドします。your_api_key
は、取得したOpenAIのAPIキーに置き換えてください。
docker build -t open-interprter --build-arg OPENAI_API_KEY=your_api_key .
ビルド中のターミナル出力は以下のような感じです。
PS C:\Users\<user-name>\openinterpreter\docker> docker build --build-arg OPENAI_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXX -t openinterpreter:latest .
[+] Building 225.1s (11/11) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 921B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:latest 2.2s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> CACHED [1/7] FROM docker.io/library/ubuntu:latest@sha256:77906da86b60585ce122158ascc0eb327e7386c8fafb5402369e 0.0s
=> => resolve docker.io/library/ubuntu:latest@sha256:77906da86b60585ce1221csaccs0eb327e7386c8fafb5402369e421f44e 0.0s
=> [2/7] RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends s 166.0s
=> [3/7] RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 0.4s
=> [4/7] RUN python3 -m pip install --upgrade pip 1.9s
=> [5/7] RUN pip3 install open-interpreter 52.4s
=> [6/7] WORKDIR /app 0.0s
=> [7/7] RUN mkdir scripts 0.2s
=> exporting to image 2.0s
=> => exporting layers 2.0s
=> => writing image sha256:e4e9a481e53e91912151459dc0sdffd5955b38666a41932ba289489345b5d2b9 0.0s
=> => naming to docker.io/library/openinterpreter:latest 0.0s
5. コンテナの起動
以下のコマンドを実行して、Open Interpreterのコンテナを起動します。
docker run -it --rm -v /host_mnt/c/Users/<user-name>/openinterpreter/scripts:/home/scripts --name openinterpreter1 openinterpreter /bin/bash
上記コマンドでDockerコンテナを起動していますが、いくつかオプションをつけています。
-v
:このオプションにより、ローカルPCのc:\Users\<user-name>\openinterpreter\scripts ディレクトリをコンテナの /home/scripts にマウントしています。マウントすることによりPC/コンテナそれぞれから共通のディレクトリを参照することができます。このとき、ローカルPC側のファイルパスは/host_mnt/c/Users/<user-name>/openinterpreter/scripts のように冒頭に/host_mnt/が付与される形になります。--name
:このオプションは作成されるコンテナに名前を付けています。名前を付けないとランダムな名称が付与されてしまい区別がしにくくなるため、できるだけ名前は付けておいた方が良いです。--it
: このオプションは2つのオプションを組み合わせたものです。-i
(--interactive
) はコンテナの標準入力を開いた状態に保ち、-t
(--tty
) は仮想ターミナル(TTY)を割り当てます。これにより、ユーザーはコンテナ内部で対話的にコマンドを実行することができるようになります。--rm
: このオプションは、コンテナが停止した時に自動的にそのコンテナを削除します。これはディスクスペースを節約し、不要なコンテナがシステム上に残らないようにするために便利です。/bin/bash
: コンテナ内で実行されるコマンドです。この例では、bash
シェルを起動しています。これにより、コンテナが起動した後に対話的なシェルセッションが開始され、ユーザーはコンテナ内でコマンドを実行できるようになります。
コンテナを作成すると、以下のようにDocker Desktop上でも確認することができます。
docker runを実行するとコンテナ内にログインしてコマンドを実行できるようになります。
PS C:\Users\***\Documents> docker run -it --rm -v /host_mnt/c/Users/***/openinterpreter/scripts:/home/scripts --name
openinterpreter1 openinterpreter /bin/bash
root@669515d24263:/app#
6. Open Interpreterの使い方
コンテナ内で以下のコマンドを実行すると、Open Interpreterを使ったチャットを開始できます。
interpreter
▌ Model set to gpt-4
Open Interpreter will require approval before running code.
Use interpreter -y to bypass this.
Press CTRL-C to exit.
>
Pythonスクリプトの中でOpen InterPreterを使うこともできます。ただし、import interpreter
ではなく、from interpreter import interpreter
を使ってください。
from interpreter import interpreter
interpreter.chat("Hello!")
import interpreter
を使うと、以下のようなエラーが発生します。
Traceback (most recent call last): File "script.py", line 3, in <module> interpreter.chat() AttributeError: module 'interpreter' has no attribute 'chat'
7. まとめ
この記事では、Open InterPreterをDocker環境で構築する方法を説明しました。Open InterPreterは、OpenAIのChatGPT APIを簡単に利用するためのツールです。プログラミングの知識がなくても、ChatGPTを使ったチャットボットを作ることができます。ぜひOpen InterPreterをDocker環境で構築して、ChatGPTを活用したチャットボットを作ってみてください。
以下の記事ではOpen Interpreterを実際に動作させて検証しています。合わせてご覧ください。