🤖

LlamaIndexでslackのQAボットを作成してみた

2023/08/24に公開

はじめに

前回以下の記事でLlamaIndexでPDFファイルを読み込んでQAボットを作成しましたが、LlamaIndexではslackからもデータを読み込む事ができるようなので、やってみました。

https://zenn.dev/collabostyle/articles/cc52ff546df34d

パッケージのインストール

Pythonで以下のパッケージをインストールします。
今回はslackからデータを読み取るためslack sdkをインストールします。

pip install llama-index
pip install openai
pip install slack sdk

slackアプリの準備

slackのメッセージを読み込むアプリを作成し、トークンを発行します。
アプリの作成からトークンの発行までは、以下の記事が参考になりました。

https://zenn.dev/kou_pg_0131/articles/slack-api-post-message

slackアプリのスコープ設定について

LlamaIndexからデータを読み取る場合は、User Token Scopesで以下4つのスコープを追加する必要があります。

作成したアプリで読み取るメッセージの準備

作成したslackのアプリで以下のようにメッセージを送信しました。

slackメッセージの読み込みとインデックスの作成

slackのメッセージを読み取り、インデックスを作成します。

SlackReader = download_loader("SlackReader")

# slackのメッセージを読み込み
loader = SlackReader("{slackのUser OAuth Token}")
documents = loader.load_data(channel_ids=['{slackのチャンネルID}'])

# インデックスの作成
index = ListIndex.from_documents(documents)

クエリエンジンの作成

あとは前回と同様に作成したインデックスからクエリエンジンを作成し、作成したクエリエンジンの引数に質問内容を渡します。

query_engine = index.as_query_engine()

question = "休暇申請の種類を教えてください"

response = query_engine.query(question)
print(response)

全体のコード

from llama_index import ListIndex, download_loader
import openai

openai.api_key = "{OpenAIのAPIキー}"

SlackReader = download_loader("SlackReader")

# slackのメッセージを読み込み
loader = SlackReader("{slackのUser OAuth Token}")
documents = loader.load_data(channel_ids=["{slackのチャンネルID}"])

# インデックスの作成
index = ListIndex.from_documents(documents)

# # クエリエンジンの作成
query_engine = index.as_query_engine()

question = "休暇申請の種類を教えてください"

response = query_engine.query(question)
print(response)

実行結果

実行した結果は以下になりました。
slackに送信されたメッセージの中にある休暇申請の種類が回答として返ってきました🙌

休暇申請の種類として、有給休暇、有給病気休暇、特別休暇、その他の休暇(慶弔休暇など)があります。

まとめ

slackのメッセージを読み込む部分以外は、前回のPDFと同様の処理で実装できました。
slackの検索だとメッセージ単位でしか検索できませんが、このQAボットであれば、メッセージ内から質問した内容の部分を抜粋して回答してくれるので、活用方法次第では便利になりそうです✨

是非みなさまも試してみてください!

コラボスタイル Developers

Discussion