ChatGPT Code Interpreterクローンを試す(GPT-Code UI編)
経緯はここ。他のChatGPT/Code Interpreterクローンなども。
GPT-Code UI
Code Interpreter の yet anotherなOSS実装。
UIも含めての実装、というところと、Azure用の.env.exampleがあるようなのでちょっと期待。
インストール
以下の記事でインストール手順等公開されている。
で、Dockerfileやdocker-compose.yml は以下にあるのだが、
- docker-compose.yml使っているgpt-code-uiのイメージが古い(2023年5月頃のイメージ)
- gpt-code-uiがAzure対応したのはつい最近。当然上記のイメージには含まれていない。
- gpt-code-uiのmainに上記のDockerfileを持ってきてビルドしてみたけど途中でコケた。(gcc)
という感じ。少なくともAzure向けには動かない。
一応、ちゃんとしたDockerfile用意しようぜというissueとPRがあるのでそのうちできるようになるんじゃないかな、知らんけど(PRは一旦クローズされてる)
一応上記のissue/PRした人のレポジトリにはコードが合ってdockerイメージもあるみたいなんだけど、公式で対応入るならそっちでやればいいかということで、今回はとりあえずpyenv-virtualenv環境でやる。python-3.10.11。
READMEにあるパッケージをインストール。
$ pip install "numpy>=1.24,<1.25" "dateparser>=1.1,<1.2" "pandas>=1.5,<1.6" "geopandas>=0.13,<0.14" "tabulate>=0.9.0<1.0" "PyPDF2>=3.0,<3.1" "pdfminer>=20191125,<20191200" "pdfplumber>=0.9,<0.10" "matplotlib>=3.7,<3.8"
$ pip install gpt-code-ui
.env.azure-exampleをもとにAPIキー等をセット。READMEにあるけど、Azureではモデルの選択はできないとあるので、AZURE_OPENAI_DEPLOYMENTSは1つだけセットした。"name"がデプロイメント名になるらしい。
OPENAI_API_KEY=XXXXXXXXXX
OPENAI_API_TYPE=azure
OPENAI_API_BASE=https://XXXXXXXXXX.openai.azure.com
OPENAI_API_VERSION=2023-07-01-preview
AZURE_OPENAI_DEPLOYMENTS=[{"displayName":"gpt-35-turbo","name":"gpt-35-turbo"}]
OPENAI_API_LOGLEVEL=debug
API_PORT=5010
WEB_PORT=8080
SNAKEMQ_PORT=8765
gpt-code-uiを起動。gpt-code-uiのバージョンは0.42.39。
$ gptcode
ただどうも .envを読んでくれない模様。しょうがないのでこうする。
$ for i in `cat .env | grep -v "^#"`; do export $i; done
$ export | grep OPENAI
再度起動。
$ gptcode
立ち上がってきた。
適当にたたいてみるもエラー。
ログを見てみると、
message='Request to OpenAI API' method=post path=https://XXXXXX.openai.azure.com/openai/deployments/gpt-3.5-turbo/chat/completions?api-version=2023-07-01-preview
んー、デプロイメント名がただしく設定されていない。うちの場合はgpt-35-turbo
なのでgpt-3.5-turbo
になってるのはおかしい。環境変数でもちゃんとセットしているのだけど。どうもここはデフォルトが適用されてるように思える。バグかなぁ。。。
後で調べる。
修正されたのかどうかわからないけど、0.42.40にアップデートしたら動くようになった。相変わらず.envは読んでくれないけども。
もう一つ試してみた。
ローカルにインストールされていた。
$ pip freeze | grep -i gtts
gTTS==2.3.2
所感
UIが用意されていて公式と同じ感じなのは良い。Code Interpreter APIの今のUIは、チャット的にやりとりができないのでこの部分は自然。ただ、その反面、気になるところもチラホラ。
- プロンプトの設定なのかわからないけど、日本語で、と言っても英語で返してくる。
- 日本語IMEの確定時のENTERを送信として受け取ってしまう。かつてテキストエリアに残る。
- チャットの履歴管理はない。新しい会話をやり直したければリロードする感じ。
まあまだ始まったばかりなのでしょうがないんだけど、こういうPRもあってちゃんと独立した環境を用意する感もあるので、ちょっと期待。