GenAI Learning Log is a research / open source academic project, intended for educational and personal learning record-keeping purposes.
It is not a registered trademark, and does not constitute a commercial product at this time.
GenAI Learning Log は、教育・研究目的のオープンソースプロジェクトです。 現時点では商標登録をしておらず、商用サービスではありません。
GenAI Learning Logへようこそ!このプロジェクトは、Django 5.2 を使用して、生涯学習講座や大学などでの学習メモの記録と、学習メモをもとにRAGで学習アシスタントを作ることについての開発記録を目的としたWebアプリケーションです。
- 学習メモ
- 個人の学習メモを記録します。また、学習メモのCSVエクスポートや、作成済みの学習メモから、関連するToDoを作成することができます。
- ToDo管理
- 個人の学習メモに関連するToDoを作成します。宿題や今後の予定、AIエージェント作成の忘れ防止に役立ちます。
- AIエージェント構成
- RAGを含め、作成したAIエージェントの構成情報を記録します。この情報には、RAGにつかった学習メモの情報が含まれることがあります。AIエージェントの構成情報を共有することに役立ちます。
- RAG評価ログ
- 手動で実施したRAGASによるRAGの評価結果を記録します。
- RAG評価ツール
- 今後実装予定。今後の拡張用。
このアプリケーションが既に稼働しているとして.....
- DifyやLangflowなどでAIエージェントをつくりましょう。一般ユーザー(学生などの学習者)が、学習に使えるものがベストです。(参考資料:生成AIアプリ開発入門:環境構築とチャットボット作成)
- AIエージェントのワークフローをエクスポートします。いわゆる定義ファイルと言われるもの。
- 管理画面(/admin)にアクセスし、一般ユーザーを登録する。管理画面でグループを作成し、CSVインポート機能で複数人分のアカウントをまとめて作成する。
- 管理者はログインし、「AIエージェント構成」で、サンプルとなるAIエージェントの定義ファイル(「2」のファイル)をアップロードする。
- AIエージェント構成の画面に、サンプルとなるAIエージェント構成が掲載されていることを確認する。
- 管理者が用意したアカウントでログインします。
- 「学習メモ」の画面で、日々の学習について、各単元のまとめ(要約)をつくります。項目はすべて入力しましょう。「ToDo管理」もつかうと効果的です。
- 蓄積した「学習メモ」をCSVエクスポートで、ダウンロードします。RAG利用の場合は、「科目」や「単元」、「記録内容」が必要です。ファインチューニングが目的の場合は、RAG利用向けの項目に加えて、「想定される質問例」や「質問への回答例」をCSVエクスポートに含めましょう。
- 「AIエージェント構成」で、一覧画面に表示されているAIエージェント構成情報にアクセスし、表示されている内容をもとに、自分の学習アシスタントになるAIエージェントを作成します。ダウンロードしたCSVファイルをチャンクデータとして活用しましょう。ファインチューニングによるモデルカスタマイズを実施しても良いでしょう。
- 作成したAIエージェントをいつでも再現できるように、ワークフローのバックアップを取得します。
- 「AIエージェント構成」画面で、新規作成し、取得したファイルを含めたAIエージェント構成の情報を保存します。学習に取り組むなかで、様々なAIエージェントをつくるでしょうから、都度「AIエージェント構成」に登録し、AIエージェント構成の情報を保存します。保存した「AIエージェント構成」の情報は、他のユーザーから表示し、再利用することができます。
詳しくは、wikiをご覧ください。
このアプリケーションは、Docker Compose を使って簡単に開発・運用できます。
ローカルPCに以下のソフトウェアがインストールされていることを確認してください。
- Docker Engine
- Docker Compose
このリポジトリをローカルにクローンします。
git clone https://github.com/kolinz/GenAI-Learning-Log.git
cd GenAI-Learning-Log
この手順では、ホットリロード機能を持つDjango開発サーバーとPostgreSQLデータベースをDockerコンテナで起動します。
開発環境用の環境設定ファイルを作成します。
cp .env.dev.example .env.dev
SECRET_KEY やデータベース情報など、必要に応じて .env.dev ファイルの内容を編集してください。
以下のコマンドを実行します。
python3 -m venv venv
source venv/bin/activate
以下のコマンドを実行します。
pip install -r requirements.txt
以下のコマンドを実行して、コンテナをビルドし、起動します。
docker compose -f docker-compose.dev.yml up --build
ブラウザで http://localhost:8000/memos/ にアクセスすると、アプリケーションを利用できます。
以下のコマンドを実行して、コンテナを終了します。
docker compose -f docker-compose.dev.yml down -v
実行結果
✔ Container genai-learning-log-web-1 Removed 0.0s
✔ Container genai-learning-log-db-1 Removed 0.0s
✔ Volume genai-learning-log_postgres_data Removed 0.1s
✔ Network genai-learning-log_default Removed
この手順では、Nginxをリバースプロキシとして使用し、GunicornでDjangoアプリケーションを動かします。
本番環境で動かす前に、開発環境で十分なテストを行ってください。
本番環境用の環境設定ファイルを作成します。SECRET_KEY は必ず強固なものに変更してください。
cp .env.prod.example .env.prod
.env.prod ファイルには、本番用の SECRET_KEY や DEBUG=False、そして許可するホスト名 (ALLOWED_HOSTS) を記述します。
コンテナ内でスクリプトが実行できるように、権限を付与します。
chmod +x entrypoint.prod.sh
Nginxが配信する静的ファイルを収集します。
docker compose -f docker-compose.prod.yml run --rm web python manage.py collectstatic --no-input
以下のコマンドを実行して、Nginx、Django、PostgreSQLの各コンテナをバックグラウンドで起動します。
docker compose -f docker-compose.prod.yml up --build -d
ブラウザで http://localhost/ にアクセスすると、アプリケーションを利用できます。
運用を停止する場合は、以下のコマンドでコンテナを停止します。すべてのデータを完全に削除する場合は -v オプションを追加します。
docker compose -f docker-compose.prod.yml down -v
- 検索機能の実装。
- 学習メモについて、学習メモとAI対話記録の2つの種別項目を設ける。
- 学習メモのCSVエクスポートについて、種別ごとに、学習メモとAI対話記録を別々にエクスポートする機能の実装。
- 学習メモのCSVエクスポートについて、選択した学習メモだけをエクスポートする機能の実装。
- ToDo管理アプリの基本機能を追加の実装。
- 学習メモの詳細画面内に、関連するToDoを表示する機能を設ける。
- 増えた機能をハンバーガーメニューにまとめる。
- 学習メモからのエクスポート時に、ユーザーが自由に選択できるフォームを実装する。
- 開発環境向けに、maildevを使えるようにする。
- メールを使ったパスワードリセット機能を実装する。
- 多言語化のための準備(configディレクトリ下のsettings.pyの変更、urls.pyの変更 , 各テンプレートの修正 , base.htmlで、言語切り替え表示を一時的にコメント化。多言語化の作業時に、base.htmlのコメント設定を解除する)。
- 多言語化(日本語と英語)(機械翻訳を使って手短に実施した。今後の運用で必要に応じてアップデート。英語以外の言語の追加を検討。)
- モデル管理機能の実装
- 手動でRAGAS実行による評価結果を登録する手順書の作成と表示。