学習テキストのインデックスを作り、それを利用した対話的学習システムを持つSlackbot 内部的にはOpenAIのEmbedding APIによる文書のベクトル化とコサイン類似度によるベクト文書検索、ChatGPTによる対話機能を利用している。
!il-s
対話学習をスタートします。!il [回答内容]
問われた質問に対して回答します。!il-f
対話学習を終了します。
- テキストデータ収集してJSONファイルを作成
- JSONファイルを元にOpenAIのEmbedding APIを利用して文書ベクトルのインデックス作成
- DockerのSlackチャットボットで対話的学習システムを起動
- ジャンルを選ぶ
- 質問をもらう
- それに対する採点を返答する
という流れで動く。
- Python3.9.6
- Docker version 20.10.22
OpenAI API Keysにアクセスしてアカウント作成の後、SECRET KEYとOrganization IDを取得。
Bolt 入門ガイドに準拠。
- SLACK_BOT_TOKEN
- SLACK_APP_TOKEN
を取得しておく。
- chat:write
- message.channels
- message.groups
- message.im
- message.mpim
opt/.env
OPENAI_API_KEY=
にAPI_KEYを記述
opt/title_and_textpath.csvにタイトルと学習させたいテキストをUTF-8で記述されたテキストファイルのパスで用意
title,../dir/utf8text.md
以下のコマンドを実行。
pip3 install -r requirements.tx
cd opt
python3 make_text_json.py #text.json作成
python3 make_index.py #index.pickle作成 JSONのサイズが1MBで30分程度かかる
これで時間がかかるが文書ベクトルで作成したインデックスファイルが作成される
あとは以下を実行してイメージをビルド&実行。
docker compose --env-file ./opt/.env up -d --build
以上で起動。
docker compose --env-file ./opt/.env down
で停止。
docker compose logs
でログ確認。
The MIT License