ChatGPTクローンを試す(YakGPT編)
経緯はここ。他のChatGPT/Code Interpreterクローンなども。
YakGPT
- TypeScript製
- OpenAI APIのみ。Azure OpenAI APIには非対応の様子。。。
- Speech-to-Text/Text-to-Speechに対応してる。
- Speech-to-Text: Azure & OpenAI Whisper
- Text-to-Speech: Azure & Eleven Labs
Azure OpenAIには非対応のようなので、今回の選択肢には入ってこなさそうだけど、音声による入出力をビルトインしてるというのはちょっと面白そう。
インストール
dockerで。
$ git clone https://github.com/yakGPT/yakGPT && cd yakGPT
Open AI APIキーをセット
$ echo "NEXT_PUBLIC_OPENAI_API_KEY=XXXXXXXXXXX" > .env.local
コンテナビルド&起動
$ docker build -t yakgpt:latest .
$ docker run -it -p 3000:3000 yakgpt:latest
アクセスしてみるとAPIキーのセットを促される。.env.localがどうも効いてない。
レポジトリを見てみると.dockerignoreで無視されている
docker run時に--env-fileで読み込ませてみたけど駄目だった。Getting startedにIf you want the keys to persist across app builds, you can add it to the .env.local.
と書いてあるので、イメージに組み込んでしまうならここをコメントアウトして再ビルドしてやればよさそう。
$ docker build -t yakgpt:latest . --no-cache
$ docker run -it -p 3000:3000 yakgpt:latest
いけた。
すこし試してみた。普通に使える。
音声での入出力を試してみる。入力欄の左右にアイコンがある。左がTTSで右がSTTだと思う。マイクアイコンの上でモデルの切り替えとか設定ができる模様。
今回はOpenAIのAPIキーしかセットしてないのでWhisperのSpeech-to-Textだけ。で、試そうとしたら何やってもマイクが動かない。Chromeの設定を見てると、どうもHTTPSじゃないとマイクが有効化できない模様。
Mac上のDocker Desktopを使うならこういうので行けそうな気がする
今の環境はLAN内のサーバ上でdocker動かしててLANのIPアドレスでアクセスしてる。ちゃんとやるのは諸々めんどくさいので、今回はngrokでアクセスすることにした。そういえば、ngrok久々に使ったけど、認証かけたりするにはアカウント登録が必要で、かつMFAの設定も求められたりした。
$ ngrok config add-authtoken XXXXXXXXXX
$ ngrok http 3000 --basic-auth AAAAAA:BBBBBB
マイクのアイコンをクリックすると大きなマイクのアイコンが表示され、クリックすると音声入力スタート。初回はブラウザからマイクを有効にするかどうかを聞かれるので有効にする必要がある。
このアイコンが表示されていれば録音中。しゃべり終わったらクリックして音声入力終了。
で自動的に送信される。設定の中に"auto send text"というのがあり有効化されているので、これを無効にしたら送信されずに入力欄に表示されるのかな?と思ったけど変わらなかった。
どうやらOpenAI Whisperだとちゃんと動いてなくて、AzureのTTSだといける模様。
左下の設定から他にもいろいろ細かい設定ができる模様。
そのうち気が向いたらAzureでSTT/TTSも試してみたい。
所感
Azure OpenAIに対応していないので今回の目的には合わないけど、使い勝手としては公式とそこまで変わらないし、音声入出力に対応してるのは面白い。チャットインタフェースとして考えれば音声でやりとりできたら、より自然に使えるではないかという気がする。
Azure OpenAI対応してないのかー、と思ってIssueを見てたらこういうのが紹介されてた。なるほど。
ただChatbot UIやBetterChatGPTと同じように、これも開発がちょっと止まってるっぽいのよな・・・残念。
参考