👩‍💼

ChatGPTで簡易AIアシスタント「AIからあげ先生」を作る

2023/04/12に公開

ChatGPTでAIアシスタント

もう何番煎じになるか分からないですが、ChatGPTでAIアシスタント的なものを作ってみました。特徴としては以下です。

  • Python製
  • 複数の画像があればOK
  • 音声認識/音声合成による入出力対応
  • 感情シミュレート機能付き

構成的には以下のような形です。

Open AIのAPIにがっつり依存しています。

コードは以下で公開しています。
https://github.com/karaage0703/ai-karaage-sensei

簡単に使い方を紹介したいと思います。

AIからあげ先生セットアップ

前提としてLinux PC(Ubuntu22.04)を使用します。マイクやスピーカでハマると面倒なので試せていませんが、MacやWindows(WSL2)でも、多少変更すれば動かせる気はします。

Ubuntuのセットアップは以下記事参照ください。
https://qiita.com/karaage0703/items/705f1b750c486f00d554

Python環境は、pyenv/pyenv-virtualenvを使用しました。以下記事参照ください。
https://zenn.dev/karaage0703/articles/5af7ce4b8b1a8a

私は、以下コマンドで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」で公開していますので注意ください。例えば、からあげにレモンをかけるとライセンス違反になります。詳細は以下記事やライセンスファイル参照ください。

https://karaage.hatenadiary.jp/entry/2020/06/19/073000

使用方法

以下コマンド実行すれば動きます。

$ python3 ai_karaage_sensei.py

以下のように音声で会話できます。

https://www.youtube.com/watch?v=dQoeJA4WtWM

感情に応じて、表情や声も変わります。

コードの解説

これこそChatGPTができそうですが、簡単に。

ChatGPTの感情シミュレートは深津さんのnote記事を参考にしています。
https://note.com/fladdict/n/n5043e6e61ce3

感情のパラメータをプロンプトの出力を制御した上で、正規表現を使った自然言語処理で抽出しています。ChatGPTに教えてもらいながら実装しました。

音声認識は speech_recognitionというライブラリを使っています。音声合成はVOICEVOXを使っています。VOICEVOXに関しては詳しくは以下記事参照ください。

https://zenn.dev/karaage0703/articles/0187d1d1f4d139

あと、一応会話履歴を持っているので、会話は再起動するまでは覚えています。
ただ、会話が長くなるほどプロンプトが長くなるので、課金が増えていきます。

お金はちょっと心配でしたが、特に気にせずデバッグし続けても0.1ドル程度でした。安いですね。

まとめ

AIアシスタントを作ってみました。UnityのリッチなAIアシスタントを作っている例や、ロボットを使った例はいくつかあったのですが、オリジナルのアバターやロボットを作るのが大変そうだったので、Pythonを使って画像だけで動かせる簡易版のAIアシスタントを作ってみました。

作ってみると、いつものことですが思ったより時間がかかってしまいました。

プロンプトの制御が難しくて、感情がうまく抽出できない場合が多かったり、音声認識のレスポンスがあんまりよくなかったりと色々課題も多いです。

OpenAIのAPIに頼り切りなのも、個人的にはイマイチです。ChatGPT代わりにRWKVを使うなどして、ローカルで動くAIチャットボットも作りたいですね。

参考リンク

https://qiita.com/kunishou/items/814e837cf504ce287a13

https://note.com/npaka/n/n0dd2b226e8ae

https://dev.classmethod.jp/articles/chatgpt-unity-methoko/

https://qiita.com/sakasegawa/items/db2cff79bd14faf2c8e0

https://note.com/npaka/n/n155e66a263a2

https://okumuralab.org/~okumura/python/chatgpt_api.html

https://snowman-88888.hatenablog.com/entry/2023/04/23/081247

関連記事

https://zenn.dev/karaage0703/articles/718506a593fef0

https://karaage.hatenadiary.jp/entry/2023/03/27/073000

Discussion