Tabelog Tech Blog

食べログの開発者による技術ブログです

1000人超えの組織にDifyでチャットボットを導入した話と生成AIアプリで全社の効率化を進めている話

目次

はじめに

この記事は食べログアドベントカレンダー2024の7日目の記事です☃️。

こんにちは。テクノロジー本部アドバンストテクノロジー部のサービス改善チームに所属している西本です。

株式会社カカクコムでは価格.comをはじめ、食べログ、求人ボックス、スマイティなどの様々なサービスを提供しております。

私たちの部門は、生成AIをはじめとする先進技術を活用し、全社の業務生産性を向上することと、サービスの改善を支援することをミッションに活動しています。

今回の記事では、従業員が1000人を超え、複数の事業部門をもつカカクコム全社に「Dify」というソフトウェアを使って生成AIのアプリを広めている具体的な例をご紹介させていただきます。

そもそも:Difyとは?

生成AIを使ったアプリを簡単につくれるようにするソフトウェアです。

社内情報を元に生成AIが回答するチャットボットアプリや、メールの文案を生成AIが考えてくれるアプリなど、生成AIアプリを簡単に作って公開できるようになります。

カカクコムではDifyの全社導入を進めており、過去のTabelog Tech BlogでもDifyの全社活用について記事を載せています。

今回の記事では、私たちアドバンストテクノロジー部がDifyを使って全社に生成AIアプリを広めている事例についていくつか紹介させていただきます。

全社へのチャットボットの導入

生成AIアプリとして、まずは全従業員を対象とした汎用的なチャットボットの導入をしました。過去記事でもチャットボットとしての導入については触れていますが、今回の記事はDifyの構成やアプリなど、技術的な裏側について記載していきます。

行ったこと:

Difyはクラウドで利用するか、OSS(Open Source Software, 誰でも利用・改良できるソフトウェア)をセルフホストして利用する方法があります。今回、社内の情報を扱うことが想定されるため、OSS版のDifyを自社サーバーにてセルフホストする方法を選択しました。全社でチャットボットを導入するために、OSS版Difyのセットアップ、Difyのアプリ作成、入出力情報のルール整備を行いました。以下、OSS版Difyのセットアップ、Difyのアプリ作成についてより詳細に説明します。

OSS版Difyのセットアップ

初期リリース時は下記のようにシンプルな構成でリリースをしました。

OSS版Difyのセットアップ - サーバーの構成図

(OpenAIのロゴはOpenAI社に帰属するものを使用しています。)

社内のサーバー(オンプレミスサーバー)内に、仮想環境(Docker)を構築し、その中でDifyを動かしました。CPUやメモリなどのリソースの監視は、別サーバーに構築した「システムの状態をチェックするツール(Prometheus, Grafana)」で行っています。生成AIは、OpenAI APIを通じてGPT-4oを利用しています。Dockerのインストールや監視設定などは構成管理ツール(Ansible)で既に定義されているものを適用するのみでしたので、セットアップはほとんど手間を掛けずに行うことができました。

Difyのアプリ作成

下記が初期のアプリ構成です。アプリ自体は1時間くらいで作成完了しています。文字数による課金制であることから長文に対して制限を掛けていましたが、そこ以外はシンプルなチャットボットの構成です。なお、課金額や要望を鑑み、現在は長文に対する制限は解除しています。

Difyのアプリ作成 - チャットボットのワークフロー

Difyの基本的な画面構成で履歴機能・チャット機能が含まれているため、フロントエンド側の開発を行なう必要がなく、開発工数はかなり抑えられました

Difyのアプリ作成 - フロントエンド画面

成果:

社員に対してアンケートベースで業務削減効果を答えてもらいました。結果として、年間18,000時間の削減効果と見積もりました。

下記がアンケート結果のサマリーです。週に1-2時間程度の削減効果を出している人が最も多いものの、一部の人では大きく削減効果を出していることがわかります。

(左図)社内のチャットボット利用頻度の円グラフ。(右図)社内のチャットボットによる削減効果の棒グラフ。

初期調査からチャットボット導入までは、ルールの策定などもあり、3ヶ月ほどかかりました。実際にチャットボットを社内でリリースし、アンケートや一部ユーザーへインタビューを実施したところ、様々なフィードバックが得られました。次の章では、全社にチャットボットを導入して判明した問題とそれに対する施策について書いていきます。

導入後に見えてきた問題と現在の施策

チャットボットを導入後、社内でのアンケートや一部ユーザーへインタビューを実施したところ、「業務効率向上に役立つ」「社内用として安心して使える」などポジティブな声をいただいた一方、業務への活用方法がわからないという課題感や、社内の文書を調べたいという需要などいろいろなものが見えてきました。アンケート、インタビューを通じて得られた問題と現状の施策についてまとめたものが以下の図です。

導入後に見えてきた問題と現在の施策のまとめ絵

今回の記事では、図中の青色の施策についての説明をします。

施策1. Teamsアプリの提供 📱

背景:

まず、インタビューをした中で出てきた仮説が、そもそも社員の中にもチャットボットの存在を知らないためにチャットボットを使っていない人がそれなりの人数いるのではという仮説でした。社内のTeamsを通じて周知はしていましたが、それでも見られていない可能性はあります。

そこで、社員が普段使うチャットツールであるTeamsから利用できるような組み込みを行いました。Teamsの開発者ポータルを利用したアプリでは、特定のWebページを埋め込むことができます。社内向けに公開しているチャットボットのページをTeamsのアプリとして埋め込みました。

以下が実際のTeamsの画面です。左赤枠の「AIChat」を押すとチャットボットを使えるようにしました。

チャットボットのTeams画面からのアクセス

リリースまでの期間:

調査〜公開まで2週間

成果:

デイリーのアクティブユーザー数をリリース前後の約2週間で比較したところ、アクティブユーザー数が27%増加しました。

本件は新卒1年目の楠さんが中心となってプロジェクトを進めてくれました。今回開発に使ったTeamsの開発者ポータルの情報はネットにも情報が少ない中で調査からリリースまで迅速につなげてくれたのは彼のおかげでした。また、Teamsアプリ有効化の際にはTeamsを管理している部門の方にも協力いただき、迅速に展開することができました。

施策2: 社内情報の検索 🔍️

背景:

チャットボットリリース後のアンケートでも、社内の情報を検索できるようにして欲しいという声がいくつかありました。そこで、社内情報の検索機能をチャットボットのアドオンとして載せることにしました。自分たちの部門が経費精算や出張手続きなどの経理関係の情報を探すことに苦労していたため、財務経理の部門に声をかけ、経理関係の文書を検索できるようにチャットボットの機能拡張を行いました。

行ったこと:

下記に概要図を載せています。クラウドのConfluence(社内Wiki)上に経理関係の情報が載っています。Confluenceのエクスポートのため、AtlassianのAPIを使用します。エクスポートされたドキュメントをDifyのナレッジベース機能を用いて、生成AIが回答するためのリソースとして登録しました(APIはPythonラッパーのatlassian-python-apiから利用)。Difyはナレッジベースにデータを登録し、「知識検索」というノードをつなげば情報検索ができますので、開発工数も抑えることができました。

社内情報の検索の概要図

リリースまでの期間:

2ヶ月

成果:

財務経理部の方の問い合わせという観点で、問い合わせ対応の時間を約15%減少させることができました。現状、ユーザーの方がチャットボット機能を知らないこともあるため、都度案内などを通じて認知率を上げるなどの取り組みを行っています。また、今後は他の部門の文書も取り込む予定です。

プロジェクト取り組み時の工夫:

OSS版のDifyは頻繁なアップデートがあります。そして、最新版にしか載っていない機能も多くあるため、アップデートへの対応は必須です。しかし、アップグレードのたびに社内情報の回答品質がデグレしていないかを手動で確認するのは手間がかかります。

そこで、出来上がったシステムの評価の点で少し工夫をしています。具体的には、別のLLMに回答を評価してもらうLLM-as-a-judgeという手法を使って評価を自動化しています。今回、特にLINEヤフーさんの事例を参考にさせていただきました。ありがとうございます。

LLM-as-a-judgeの概要図

Difyのバージョンアップに際しLLM-as-a-judgeを用いた評価することで、デグレがないことを確かめた上でアップデートできました。評価プロセスの自動化は、社内で生成AIアプリを効果的に運用するための重要なポイントと実感しました。

施策3: 汎用アプリ(議事録作成AIアプリ)の提供 📝

背景:

チャットボットを全社に導入する前から、チャットボットだけ渡されても使い方がわからない人がいるのでは?という仮説を部内でもっていました。アンケートでも、「業務への活用方法がわからない」という声がありました。

その解決策として、チャットボットよりも具体的に業務活用できる生成AIアプリを作り、その効果を実感してもらうというのが1案としてあります。そこで、全社員が共通で行っていることの1つとして、議事録を作成してくれるアプリを作成しました。

行ったこと:

Difyのアプリとして作成し、全社に提供しました。実際のアプリ画面とDifyのワークフローを示します。入力には、Teamsの文字起こし機能で文字起こしされたトランスクリプトを入力します。

【アプリ画面】 議事録作成AIアプリ - アプリ画面

【Difyのワークフロー画面】 議事録作成AIアプリ - Difyワークフロー画面

何通りか試行錯誤を行い、最終的にはAIエージェントのデザインパターンの「役割ベースの協力」なども参考にし、この形に決めました。テンプレート取得という部分ではマークダウン形式の議事録テンプレを取得していますが、このテンプレートも生成AIにたたき台を作成してもらいました。

リリースまでの期間:

1ヶ月

成果:

アンケートベースで成果を算出したところ、年間2,600時間の削減効果と見積もりました。

このアプリの傾向として、使っている人からの反響が大きいということが挙げられます。実際に、複数名から「すごい使える」と直接フィードバックをもらっただけでなく、隣の部署からこの議事録アプリがすごい!という声が聞こえてきた…という話も部長から教えてもらいました。現状、Teamsの文字起こしの精度(社内用語や人名をよく間違えてしまう)や作成のために文字起こしデータのコピペのひと手間が必要などの改善の余地はありますが、それでも社内の議事録作成の手間を減らすことに成功しています。

今後について

導入後に見えてきた問題と現在の施策のまとめ絵

業務への活用方法がわからない人へ向けた有用な活用事例の共有、自身でアプリを作成したい社員に向けたアプリ作成基盤の提供などを行っていくつもりです。特にアプリ作成基盤の全社提供に向けては、 Dify meetup #1で話した非機能要件をはじめとした様々な技術的なチャレンジがありますが(下記図)、導入に向けて進めています。

Difymeetup#1より、導入に必要な非機能要件

アドバンストテクノロジー部では、本プロジェクトをはじめとする、様々な生成AIの活用プロジェクトを推進しています。生成AI活用プラットフォームの構築に興味がある方、プラットフォーム上で生成AI活用ソリューションを創り上げる事に興味がある方、いずれのメンバーも募集しております。カジュアル面談だけでも歓迎ですので、ご連絡お待ちしています。

また、アドバンストテクノロジー部ではカカクコムのデータ基盤に関するエンジニアも募集しています。こちらに興味がある方は以下から応募いただければと思います。

明日は須賀さんの「GradleProfilerとBaselineProfileを導入した話」です。お楽しみに!!