SmartHR Tech Blog

SmartHR 開発者ブログ

社内で汎用的に使えるAIチャットボットをDifyで作りました

こんにちは!情報システム部コーポレートエンジニアのyoyogiです。

昨今、AI技術の進化は目まぐるしく、みなさんも日常的にAIサービスを活用されているかと思います。 SmartHR社内でも、AIサービスの利用方針が策定され ( AIサービスの利用方針を定めました - SmartHR Tech Blog )、ChatGPT Team等のAIサービスの活用が進んでいるものの、従業員が日常の業務でいざAIサービス(主に、大規模言語モデル)を利用したいと思った際に、扱う情報の考慮が求められる為、なかなか気軽に使えない状況でした。 そこで今回、社内のAI活用をさらに促進するために、全従業員がより安全かつ簡易にAIを使える、Slackで利用可能なAIチャットボットを作成しました。

概要

早速ですが、以下がシステムの概要図です。

SlackBotでインタフェースを提供し、バックエンドのDifyがLLMのAPIとの通信を行う構成になっています。 DifyのAPIを直接扱えるSlackBotは提供されていなさそう(見つけられなかった)だったので、Rails AppにSlack Botの機能をもたせることにしました。Slack BotにメンションされたテキストをDifyのAPIを介してLLMに送っています。

構築当時、Difyが担うであろう機能も含めて、スクラッチで作ることも考えましたが、

  • 開発コスト
  • リリース速度
  • 今後のAI活用の上で社内で自由に使えるLLMアプリ開発プラットフォームが必要になる

ことを踏まえ、Difyを採用することにしました。

Slack上でAIチャットボットへ @メンション + メッセージを送信し会話を開始します。 以降のやり取りはスレッド上にメッセージ送信すると自動でAIチャットボットが回答します。

システムを構成する機能たち

中継用のアプリについて

概要で記載した通り、Railsのアプリケーションです。 Cloud Functions等、サーバーレスコンピューティングサービスを使うのも手ですが、今回は構築実績のあるRailsアプリケーションで組んでいます。

機能としては、

  • Slack Event Webhookの受信
  • DifyへのAPIリクエスト
  • LLMの応答をSlackの独自マークダウン記法(mrkdwn)へ変換
  • Slackへのメッセージ投稿

程度です。 Slackへのメッセージ投稿に関して、LLMからの回答をそのままSlackに流すとメッセージのフォーマットが崩れてしまうので、変換する処理を加えました。

Difyについて

DifyはオープンソースのAIアプリ開発プラットフォームですが、クラウドサービスとしても提供されています。 クラウドサービス版を利用すればインフラを時前で用意しなくても良いので、構築面でのコストは削減できますが、業務情報を外部サービスに保持する懸念等、クラウド版を利用する上でのハードルが高かった為、セルフホスティングすることにしました。

普段利用しており知見のある Cloud Run をホスティング先としましたが、構築当時(2024年8月頃)は Dify のセルフホスティングに関するドキュメントが乏しく、どのような設定が必要かわからず苦労しました。しかし、公式で提供されている docker-compose.yaml に書かれている内容を読み解くなどして何とか対応することができました。

Difyの構成としては以下の通りです。

各種データストアはGCPのリソースで構成しています。 CloudSQLに関しては、pgvectorを有効化し、Vector Storeとして利用できるようにしています。 扱うデータの性質上、ログインが必要なシステムとはいえ、誰もがアクセス可能な状態にはしたくなかったので、Identity-Aware Proxy(IAP) を利用し、アクセス制限を行っています。

生成型検索について

LLMを簡易に利用できる環境だけでも魅力的ではあるのですが、より社内で利用してもらいたかったので、社内の情シス関連のマニュアルを検索拡張生成(RAG)の元データとして利用できるようにしました。 生成型検索のインフラとしては、こちらも社内での知見があった Azure AI Search を利用して実現しています。 ただ、機能の大部分をGCP上に構築しているので、GCPのサービスである Vertex AI Searchへの切り替えも検討中です。

社内にリリースしてみてどうだったか?

まだリリースして間もないので、現在、利用状況の見守り中ではあるのですが、お試し感覚で職種問わず幅広く使っていただけていることを観測できています。

より多くの社内のメンバーにまずは気軽に使ってみてもらい、AI活用の第一歩を踏み出してもらえるように今後も機能拡充していければと思います。

Appendix

今回、情シスのAI活用における取り組みを紹介しましたが、社内での取り組みとしてはほんの一部です。 AI活用の専任チームの活動や、他部署の取り組みに関する以下の記事もぜひご覧いただけると幸いです。

tech.smarthr.jp

note.com