メインコンテンツへスキップ
見出し画像

【配布】LLMで試験勉強BOT作ってみた ~Discordでいつでも手軽に試験勉強~

    こんにちはRcatです。
    2025年にやりたいことに書いたようにG検定取るために勉強中です。
    既存のテキストと問題集買ってみましたが、雰囲気を覚えちゃうんですよね…。
    真新しい問題が欲しい!あ、AI使えばいいじゃん☆。
    ということで、AI使って問題を生成させて解けるDiscordのBOTを作成しましたので紹介します。


    はじめに

    利用規約

    情報や作品の活用時は事前に利用規約をご確認ください。

    コメントについて

    利用規約のガイドラインを確認の上コメントしてください


    概要

    試験勉強といえばテキストと問題集ですが、問題集の方ってやりこむとだんだん覚えちゃうんですよね。
    もちろんそれが勉強できているという証ですが、問題文の最初の方だけ見て、ああこれだなと思うようになるともう。完全に問題を覚えてしまっています。それって意味あるんですかね?文章が変わった時に対応できるのでしょうか?

    文章を作るといえば生成AIです。つまり必要な情報を与えて問題を作らせてしまえば、いくらでも勉強できるというわけですね。
    しかも分厚い問題集を持ち歩く必要なく、スマホ一つでOKです(電子書籍っていう手もあるけどね)。

    というわけで、今回は試験問題を作ってくれるDiscordのbotを作成しましたので紹介します。

    BOT紹介

    特徴

    • スマホ1つでいつでも勉強
      チャットボットと会話するのに必要なのはスマホだけ。
      重い問題集を持ち歩く必要はありません。

    • Discordのbot
      チャットアプリをベースに作られたbotなので、誰でも手軽に導入が可能

    • 様々な試験に対応
      ユーザーのカスタム試験範囲を参照する仕組みなので、具体的な試験範囲さえ、分かればどんな試験にも対応できる可能性を秘めています。

    紹介&解説

    以下が実際に使用してみた画像です。
    何をやっているか順番に解説します。

    画像
    1. 適当な文字列を入力
      最初は問題を出してもらう必要があります。適当な文字列を入力することで、botのプログラムが自動的にAIに対して出題するようにチャットを開始します。
      なので、画像では数字の2を発言していますが、AIに対しては全く別の文字列(このこの後解説)が入力されています。

    2. 問題の表示
      生成された問題文がAIから出力されます。よく考えて回答しましょう。

    3. 問題への回答
      Discordの返信の機能を使用することで、その問題に対して回答をすることができます。
      画像では私は選択肢の2番を選択しています。

    4. 問題の回答と解説
      返信を使うと、AIに対してはチャット形式での入力が行われるため、答え合わせが開始されます。
      上記の画像では正解だったようです。その下に解説がありますが長いのでトリムしています。

    5. 質問をする(オプション)
      もし間違えた場合や他の選択肢について詳しく知りたい場合は、さらに返信することで質問することができます。
      せっかくAIを使っているのだから一連のチャットを活用してそのまま質問してしまおうというアイデアです。
      問題集などでは解説で終わりですが、ここではAIを活用しているため、さらなる知識の深掘りが可能です。もちろん問題集でわからないところを自分で調べるというのも否定しませんが、こっちの方がスマートです。

    実際に使ってみた動画

    動画で見られる方はこちらから実際の動作の方を見てみてください。


    導入方法(事前準備)

    こちらのBOTは最下部で配布しているため、ご自身の環境で導入していただくことができます。
    なお、AIのライセンスの都合上、botサービスとして提供する予定はありません。

    事前準備は次の通りです。

    Pythonのインストール

    本作はPythonでできています。
    そのため、まずはPythonのインストールが必要です。
    インストール方法については以下の記事で解説していますので、参考にしてください。

    Difyの用意

    AIを活用するためにDifyという中間サーバーを介しています。
    以下の記事で導入方法とセットアップを紹介しています。このサービスはオンラインもあるので、導入自体はしなくてもオンラインで登録すれば利用が可能です。
    また、利用するAIモデルはGoogleのジェミニを予定しています。それ以外でも利用できる可能性はありますが、挙動が異なる可能性があります。

    セットアップが完了したら配布データ内に入っているbotファイルを読み込んでチャットボットをロードしてください。
    ロードが完了したらAPIキーを取得してコピーしておいてください。

    画像

    試験範囲情報の入手

    問題を出してもらうために必要な情報です。
    例えばG検定の場合は以下でシラバスが公開されています。

    例えば一部分を引用すると以下のようになっています。
    この情報を活用して、キーワードの方を選択肢として出させるように指示を出しています。

    画像
    公式シラパスG2024#6 https://www.jdla.org/certificate/general/  より引用

    BOTとサーバーの用意

    以下の記事でボットの作成方法を解説していますので、あらかじめ用意しておいてください。
    作成したら任意のサーバーに管理者権限で招待しておいてください。


    導入方法(BOTの導入)

    データの展開

    まず最初に配布されているbotのデータを任意のフォルダに展開します。
    LinuxとWindowsで動作を確認済みです。

    画像

    設定の変更

    Studybotファイルを編集し、70行目前後にあるコンフィグの行を変更します。
    apikeyに対してはDifyのAPIキーを入力します。
    サーバーの方はオンライン版を使っている場合はそのままで大丈夫です。ローカルの場合はローカルサーバーのIPアドレスに変えておいてください。

    画像

    また"token.ini"というファイルの中に、Discordのbotのトークンを入力しておいてください。

    環境構築

    最初にstartを実行します。Windowsの場合は歯車マークのアイコンを、Linuxの場合はshスクリプトの方を実行してください。
    これを実行することで自動的に環境が構築されます。

    画像

    試験範囲データの格納

    問題を出すために必要となる。試験範囲のデータを格納します。
    自動的に作成された"studys"フォルダーの中に任意の名前でフォルダを作ってください。※アルファベットは全て小文字にすること

    画像

    この中に対して試験範囲情報となるCSVデータを格納します。
    AIに対してはこの情報がそのままテキストとして入力されるため、UTF8形式のテキストファイルであれば何でもいいです。データは分割しても一つでも認識できます。
    AIに入力される際は、ファイルの中のN%の範囲のシャッフルで与えられます。また、"キーワード"というカラムを持つ場合はキーワードがランダムに決定されてAIに渡されるため、問題の多様性が向上します。
    ※キーワード列を作って使うのがこのツールの前提となります

    画像

    例えば、G検定の例ではシラバスを参考に、以下のような形のCSVファイルとして作成しています。
    最初の行はヘッダーで、ここに"キーワード"の列があるとキーワードランダム選択機能が有効になります。
    キーワードは"\n"を文字として記述しておくことで分割ができます。

    範囲本体は2行名以降に書いてください

    画像

    入力の例
    カンマで列を区切り、セルの中に複数のキーワードや目標がある場合は"\n"という文字で区切ります。

    大項目,中項目,目標,キーワード
    人工知能とは,1. 人工知能の定義,\n・人工知能とは何か、具体例を用いて説明できる\n・人工知能のレベルを「単純な制御プログラム」「古典的な人工知能」「機械学習」「深層学習」の4つに分類し、それぞれがどのようなものか説明することができる\n・AI効果を説明できる\n・人工知能とロボットの違いを説明できる、人工知能とは何か、具体例を用いて説明できる,AI 効果\n エージェント\n 人工知能\n 機械学習\n ディープラーニング

    テスト稼働をする

    試験データが格納できたら再起動します。
    bot起動時コンソールに試験範囲がきちんとロードされていることが表示されれば成功です。

    画像

    正常にロードされると、自動的にDiscordの中にチャンネルが作成されます。
    チャンネルの名前はフォルダの名前です。

    画像

    ボットが稼働していることを確認できたら、適当なメッセージを入力してみましょう。
    問題が生成されれば成功です。

    画像

    返信して回答してみます。

    画像

    まとめ

    いかがでしたか?
    今回は試験勉強にAIを活用してみました。
    出題範囲などの情報がなくてもできるかもしれませんが、常に最新の状況をAIが認識しているとも限らないため、的外れな部分を学習する可能性があります。
    そのため、今回はシラバスのキーワードというアプローチを使いできる限り、正確な問題を生成してもらうようにしています。

    ただし、注意点としてAIが生成する内容問題や回答が必ず正しいとは限りません。まずは問題集などを1冊やってから、その追加用にこういったAIを用いるのがいいと思います。やっておくとなんか変な問題だなというのに気づくことができます。

    とはいえ、スマホ1つでいつでもチャットで勉強できるというのはいいですね。本は重いし、電子書籍はリーダーが大きいし意外と出すタイミングがなかったりするんですよね。
    スマホであれば、周りの中毒患者に紛れて勉強することができます。
    それではまたお会いしましょう。


    AIにどういう指示をしているのかについて

    配布の方の記事で解説します。


    配布情報

    配布URL

    以下のURLより配布しています。
    利用規約に同意の上ご利用ください。

    https://script.google.com/macros/s/AKfycbxdcr8pnazR7RbjaSICTtaNWfN7h_rjQrKlZ3h9CZpPRFzRILk1OGc8mZqKbF-NXNO9/exec?name=試験勉強アシスタントBOT

    配布情報

    下記記事より取得してください

    アップデート情報

    2025/02/10 ランダム性向上

    しばらく運用して、AIの再現性の高さが予想以上に高く問題バリエーションが少なかったため、プログラムの方からキーワードをランダムに指定して指示するように動作変更。
    CSV入力ファイルの構造が変わります。

     
     
    モノづくりが趣味。 "売ってないなら自分で作ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワーク 全部やります。 記事執筆はAI不使用。 ご連絡や利用規約はプロフィール記事参照。

    あなたへのおすすめ