sifue / gpt-interactive-learn

ChatGPTを使って対話的学習システムを実現するSlackbot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GPTを利用した対話的学習システム

概要

学習テキストのインデックスを作り、それを利用した対話的学習システムを持つSlackbot 内部的にはOpenAIのEmbedding APIによる文書のベクトル化とコサイン類似度によるベクト文書検索、ChatGPTによる対話機能を利用している。

Slackbotの使い方

  • !il-s 対話学習をスタートします。
  • !il [回答内容] 問われた質問に対して回答します。
  • !il-f 対話学習を終了します。

動作の流れ

  1. テキストデータ収集してJSONファイルを作成
  2. JSONファイルを元にOpenAIのEmbedding APIを利用して文書ベクトルのインデックス作成
  3. DockerのSlackチャットボットで対話的学習システムを起動
  4. ジャンルを選ぶ
  5. 質問をもらう
  6. それに対する採点を返答する

という流れで動く。

環境構築

実行要件

  • Python3.9.6
  • Docker version 20.10.22

OpenAIのAPI Token(SECRET KEY)とOrganazation IDを取得。

OpenAI API Keysにアクセスしてアカウント作成の後、SECRET KEYとOrganization IDを取得。

Slack Botのトークンの用意

Bolt 入門ガイドに準拠。

  • SLACK_BOT_TOKEN
  • SLACK_APP_TOKEN

を取得しておく。

SLACK_BOT_TOKENで要求するスコープ

Bot Token Scopes
  • chat:write

Event SubscriptionsのSubscribe to Bot Events で要求するスコープ

  • 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分程度かかる

これで時間がかかるが文書ベクトルで作成したインデックスファイルが作成される

Slackbotの起動手順

あとは以下を実行してイメージをビルド&実行。

docker compose --env-file ./opt/.env up -d --build

以上で起動。

docker compose --env-file ./opt/.env down

で停止。

docker compose logs

でログ確認。

LICENSE

The MIT License

About

ChatGPTを使って対話的学習システムを実現するSlackbot


Languages

Language:Python 96.5%Language:Dockerfile 3.5%