Slackで就業規則の質問に答えるチャットボットを作ってみた
「社内の就業規則に答えてくれるAIがほしい」
ということで、Slackで気軽に就業規則の質問ができるチャットボットをノーコード系ツールを組み合わせて作ってみました。
なぜチャットボットを作ろうと思ったのか?
私たちの会社では、セキュリティ上の理由から、就業規則などの社内規定はWEBで公開していません。
誰でも見られるのですが、やはり知りたいところを探すのは面倒くさいものです。そこで誰もが簡単にSlackで質問するだけで答えが返ってくるチャットボットを作ってみました。
チャットボットの仕組み
今回のチャットボットは、Slack、Make (旧Integromat)、Difyという3つのサービスを連携させて作成しました。
社員がSlackで質問を送信すると、MakeがWebhookを通じてその内容を受け取ります。
Makeは「少々お待ちください...」といった一次回答をSlackに返し、Difyに質問内容を送信します。
Difyは社内規程のPDFを参照し、AIが最適な回答を生成します。
MakeはDifyから受け取った回答をSlackに返信します。
全体像を図にすると、以下のようになります。
各サービスの役割
Slack: チャットボットと会話するためのインターフェース
Make: 質問をDifyに送り、回答をSlackに返す仲介役
Dify: AIを使って、社内規程PDFの内容から最適な回答を生成
開発のヒント
基本的には、こちらの記事を参考にさせていただきました🙏
(7割くらいがそのまんまって感じなので、ぜひこちらの記事を参考されてください)
MAKE(旧Integromat)を使ってノーコードで GPT Slack bot を作る
この記事ではDifyは使用していないので、その部分は自分でカスタマイズしました。
Slack: メンション機能を使えるように、新しくアプリを作成する必要があります。
Make: Slackで質問が来たら「少々お待ちください...」といった内容を返信し、裏側でDifyに質問を送信。Difyから回答が返ってきたら、それをSlackに投稿するフローを作成します。
Dify: 就業規則のPDFをナレッジとしてDifyに学習させ、「社内の規程を確認して回答するチャットボット」を作成しました。今回は高精度なGPT-4-turboというAIモデルを使用していますが、状況に応じて他のAIモデルに変更することも可能です。
実際に使ってみた
専用のSlackチャンネルで「@就業規則bot」とメンションをつけて質問すると、チャットボットが回答してくれます。
例えば、「休日について教えて」と質問すると…?
こんな形で回答が返ってきました。Good!
利用するときの注意
回答の精度は100%ではありません。重要な判断をする際は、必ず原文を確認するようにしてもらいたい
開発の裏側
今回の開発では、perplexity.aiというAI検索エンジンを使って調査や質問をしながら進めました。
開発に行き詰まった時、シーケンス図を手書きで書いてAIに読み込ませたところ、次に何をすべきか具体的に教えてくれたのには本当に驚きました!
ちなみに画面上部で使っているMermaid記法への変換もAIにお願いしたら一発で出てきました。AIすごい…!
sequenceDiagram
participant 社員
participant Slack
participant MAKE
participant Dify
社員->>Slack: メッセージ送信
Slack->>MAKE: Webhook
MAKE-->>Slack: 一次回答
MAKE->>Dify: Slackのメッセージをリクエスト
Dify-->>MAKE: Dify APIから応答
MAKE-->>Slack: 応答を返信
Slack-->>Slack: 返信を更新
Slack-->>社員: Difyメッセージ表示
残課題
エラーハンドリングの強化
質問内容などをデータベースに保存
など、改善点はまだまだたくさんありますが、いったんこんな感じでしょうか。
エラーとの格闘が長かったですが、成功するとやはり嬉しいものですね。小さな成功を積んでいきます。