ChatGPT as a tutoring assistant, complete with contextual understanding and a persona!
相模原市で IoT 設計を受託しているファームロジックスです。
久しぶりに ChatGPT を取り上げてみたいと思います。皆様は、Discord というネットサービスを御存知でしょうか。インターネットに詳しい若い方々の間では、知らない人はないと思われる有名なチャットアプリです。
今回は、こんなケースを考えてみたいと思います。
- 学習塾(その他、お稽古事の教室)を運営している
- 生徒さんからの質問をリアルタイムに受け付けたり、生徒さん同士で議論ができるように、ネットのチャットサービスを活用している。
- 先生がずっとチャットアプリを見ていられれば良いのだが、先生が不在の場合にも生徒さんの質問に回答したい。
まさに、ChatGPT のキラーアプリケーションではないでしょうか!?
Discord と ChatGPT のインテグレーション
ネットを調べると、Discord と ChatGPT を組み合わせるというテーマは、英語でも日本語でも多くの方が提案なさっています。現在は、Discord そのものは ChatGPT に対応していないようですが、Discord の「ボット(bot)」という拡張機能を利用して、ChatGPT とインテグレーションさせることができます。
今回は以下の条件で、そのようなインテグレーションを探してみました。
- Discord と ChatGPT 以外のネットサービスは利用しない。
- Python プログラムなどで実現されていて、機能のカスタマイズができる。
- 生徒さんとの会話(チャット)の文脈を理解して、文脈に沿った会話をして欲しい。
- ChatGPT にキャラクタ付け(役付け)をして、学習塾の先生と ChatGPT の関係について明確な指示を与えたい。
ここで最後のアイテムが重要です。つまり、ChatGPT には、自分が学習塾のアシスタントであること、先生が不在の間に生徒さんの質問に回答すべき位置付けであること、また、先生の立場や特質を理解して貰いたいという訳です。
Zero6992/chatGPT-discord-bot を試してみる
今回は、GitHub サイトで人気の高い、以下の無償ソフトウェアを評価してみることにしました。
このリポジトリは、直接はダウンロードできず 、GitHub リポジトリのテンプレートとして利用できるようになっています。そこで、一度自身のリポジトリを作ってから git clone してみます。
プログラムの利用は比較的簡単で、pip でモジュールをインストールしたのち、.env
というファイルを記述すれば OK です。あ、その前に、OpenAI の API 利用登録をしていることと、Discord のボット登録の設定が必要ですが、上記リポジトリの README に丁寧に記述されているので難しくないでしょう。
設定でハマりそうなポイント 2点
はまりそうなポイント 2点だけ、説明させて頂きます。
OpenAI(ChatGPT)認証(authentication)の設定
chatGPT-discord-bot の README を見てみると、Step 2 に ChatGPT の認証についての説明があります。
Discord を ChatGPT と連携させるには、ChatGPT の API を利用します。ChatGPT の API には、歴史的経緯から大きく 2種類があって、ChatGPT のウェブサービス用の API を利用するものと、OpenAI 社(ChatGPT の提供会社です)がクラウド API として分離整備した OpenAI API を利用するものがあります。
今回の chatGPT-discord-bot ではどちらも利用できるようになっているようですが、前者は非公式的なもののようで、後者のほうが安心して利用できそうです。ただし、前者は ChatGPT サービスの有償サービス ChatGPT Plus を利用していればそのまま利用できますが、後者は、OpenAI の API サービスにサインイン(登録)して、従量課金のためのクレジットカードを登録する必要があります。
ChatGPT Plus サービスも有償サービスなので大きな違いはないのですが、後者は従量課金ということで、大量の API 利用があると支払い金額が増えてしまうという点に注意が必要です。
その一方で、ChatGPT Plus を利用する API は、従量課金はありませんが、非公式の authentication を利用するので、万が一認証キーなどが漏洩してしまった場合、それを解除(無効化)する際に面倒が生じる可能性があります。
できる限り、公式の OpenAI API を利用するようにしたほうが良さそうです。
Discord OAuth2 URL Generator の設定
こちらもややハマりそうな点です。Discord のボット設定に詳しい方には当たり前の話のようで、README でもさらりと触れられていて、私は少し悩みました。
OAuth2 URL Generator のページを開くと、scopes というたくさんのチェックボックスが表示され、どれを選んだら良いか悩みます。ここでは、bot という項目のチェックボックスにだけチェックを入れます。すると下の方に generated URL というものが表示されますので、それをコピーしてブラウザで開けば OK です。
実際に動かしてみる
実際に動かしてみましょう。Discord 御利用の経験がある方なら、すんなりと動かせるでしょう。/chat というスラッシュコマンドを入力して、続けて質問などを入力すれば OK です。
ちゃんと前後の文脈を理解していているので、この直後に「C 言語の場合はどうでしょう?」と質問すると、GPIO 制御を C 言語でする場合の例も教えてくれます。(ただし、chatGPT-discord-bot の Python プログラムを中断してしまうと、文脈を忘れられてしまいます。Discord の投稿を過去に遡って見ている訳ではないようです。)
ChatGPT にキャラクタ付け(役付け)をする
もちろんこのままでも便利に利用できますが、ChatGPT にキャラクタ付けをしてみたいですね。
chatGPT-discord-bot では、ChatGPT にキャラクタ(ペルソナ)付けをする設定があります。src/personas.py
というファイルを覗くと、いくつかのキャラクタ付けの設定があります。私もまだ十分には理解できていないのですが、例えば、
“sensei”:””” あなたは、ファームロジックスのキッズ工作クラブのアシスタント先生です。普段は、○○先生がいらっしゃいますが、不在のときは、○○先生の替わりに、子供の質問に回答してください。質問の多くは、電子工作に関すること、プログラミングに関することです。先生に連絡を取りたい生徒さんがいたら、メールを書くように伝えてください。”””
のように記述すると、ChatGPT はそのキャラクタ付けを理解して、生徒さんとのチャットに反映してくれます。キャラクタ付けはかなり詳細にできるようですので、例えば学習塾の住所、学習塾のウェブサイト URL、学習塾での最近のトピックなどを記述すれば、それを理解してチャットに答えてくれるかと思います。
非常に面白い機能ですので、ぜひ皆さんもお試しください。
今日はここまで。