ChatGPTで簡易AIアシスタント「AIからあげ先生」を作る
ChatGPTでAIアシスタント
もう何番煎じになるか分からないですが、ChatGPTでAIアシスタント的なものを作ってみました。特徴としては以下です。
- Python製
- 複数の画像があればOK
- 音声認識/音声合成による入出力対応
- 感情シミュレート機能付き
構成的には以下のような形です。
Open AIのAPIにがっつり依存しています。
コードは以下で公開しています。
簡単に使い方を紹介したいと思います。
AIからあげ先生セットアップ
前提としてLinux PC(Ubuntu22.04)を使用します。マイクやスピーカでハマると面倒なので試せていませんが、MacやWindows(WSL2)でも、多少変更すれば動かせる気はします。
Ubuntuのセットアップは以下記事参照ください。
Python環境は、pyenv/pyenv-virtualenvを使用しました。以下記事参照ください。
私は、以下コマンドでPythonの仮想環境を構築しました。
$ pyenv install 3.8.12
$ pyenv virtualenv 3.8.12 aichat
$ pyenv global 3.8.12/envs/aichat
慣れている人は、好きなPython環境をお使い下さい。
続いてGitHubのREADME通りにセットアップスクリプトを実行します。
$ git clone https://github.com/karaage0703/ai-karaage-sensei
$ cd ai-karaage-sensei
$ ./setup.sh
続いて.config
を編集して、以下のyour_secret_open_api_key
に自分のシークレットキーを打ち込みます(ダブルクォーテーションでの囲みは不要です)。
[open_api_key]
key = your_secret_open_api_key
顔アイコンをcloneします。ai-karaage-sensei
の中で以下コマンド実行します。
$ git clone https://github.com/karaage0703/karaage_icon
なお、この顔アイコンは「karaage License」で公開していますので注意ください。例えば、からあげにレモンをかけるとライセンス違反になります。詳細は以下記事やライセンスファイル参照ください。
使用方法
以下コマンド実行すれば動きます。
$ python3 ai_karaage_sensei.py
以下のように音声で会話できます。
感情に応じて、表情や声も変わります。
コードの解説
これこそChatGPTができそうですが、簡単に。
ChatGPTの感情シミュレートは深津さんのnote記事を参考にしています。
感情のパラメータをプロンプトの出力を制御した上で、正規表現を使った自然言語処理で抽出しています。ChatGPTに教えてもらいながら実装しました。
音声認識は speech_recognitionというライブラリを使っています。音声合成はVOICEVOXを使っています。VOICEVOXに関しては詳しくは以下記事参照ください。
あと、一応会話履歴を持っているので、会話は再起動するまでは覚えています。
ただ、会話が長くなるほどプロンプトが長くなるので、課金が増えていきます。
お金はちょっと心配でしたが、特に気にせずデバッグし続けても0.1ドル程度でした。安いですね。
まとめ
AIアシスタントを作ってみました。UnityのリッチなAIアシスタントを作っている例や、ロボットを使った例はいくつかあったのですが、オリジナルのアバターやロボットを作るのが大変そうだったので、Pythonを使って画像だけで動かせる簡易版のAIアシスタントを作ってみました。
作ってみると、いつものことですが思ったより時間がかかってしまいました。
プロンプトの制御が難しくて、感情がうまく抽出できない場合が多かったり、音声認識のレスポンスがあんまりよくなかったりと色々課題も多いです。
OpenAIのAPIに頼り切りなのも、個人的にはイマイチです。ChatGPT代わりにRWKVを使うなどして、ローカルで動くAIチャットボットも作りたいですね。
参考リンク
関連記事
Discussion