【Difyで作るSaaSチャットボット:freeeヘルプ回答ボットの作成】
はじめに
ご無沙汰しております!
今回は最近、私が取り組んでいる「生成AIとSaaSをいかに活用できるか?」という考え方で行き着いた『Difyでfreeeのチャットボットを作成する方法』をご紹介します。主な利用用途しては以下を想定しています。
SaaSサービスを導入した際に、社内でのQAボットを作成
導入時に取引先などに案内、仕様などを回答してもらう
SaaSを導入する際は、業務フローの変更だけではなくユーザー体験そのものが変わるケースも多いので少しでも導入が効率化されると嬉しいと考えています。それでは具体的な方法を確認していきましょう
主な手順は以下のように進めます。
DifyとFirecrawl(スクレイピング)を連携
スクレイピングするWebサイト(ヘルプページを指定)
RAGデータとしてDifyに連携
プロンプトなどを設定してチャットボットでの回答を調整

Difyでのナレッジの設定
まずは、ホーム画面メニューのナレッジを押してRAGデータの元になるソースを指定します。ソースは、テキストファイルやnotionのDBが指定できますが、今回は「ウェブサイトから同期」を選択

プロバイダーはFirecrawlを指定します。
※Firecrawlのアカウントが別途必要になります。Free Planもありますが詳細はこちら
freeeのヘルプページのリンクを設定、一旦制限や最大深度などの細かい設定は無視してクロールを開始します。より詳細な設定をされたい方は設定しましょう。

スクレイピングが完了した後は、RAGデータに対するチャンク設定を行います。設定内容が不明の場合はそのまま進めても大丈夫です。
チャンク識別子は文章を区切りを判定、最大チャンク長さは1チャンクの長さを指定します(語弊がありますが≒文字数みたいなものです)。
オーバーラップは最大チャンク長の10-25%で指定することが多く、よりチャンク同士の関連性が高まり、検索効率が上がります。
インデックス方法は特に希望がなければ高品質にしておくと、回答の精度が上がります。

検索設定はベクトルや全文が指定できますが、希望がなければ「ハイブリッド」にしておくのが無難です。トップKやスコア闘値は一旦そのままにします。

保存すると、ナレッジが完成するので次項ではチャットボットの作成を進めていきましょう。
チャットボットの作成
ホーム画面の作成から「チャットボット」を選択します。

チャットボットの設定画面ではそれぞれ詳細設定が可能です。

手順:プロンプトを入力します。
変数:チャットボットを利用する際のフォーム入力変数を指定できます。
※例えば、「利用する機能」を作って「ワークフロー」を入力してもらいプロンプトに反映するなど
コンテキスト:先ほど同期したナレッジを接続します。
試しに質問してみると…

どうやら、設定でうまくナレッジを参照できていないこととプロンプトの指定が足りていないようです。まずは、以下のプロンプトを入れ込みます。
プロンプトのサンプル
###目的
あなたは優秀なfreee導入コンサルタントです。
あらゆるfreeeサービスに関するQAをコンテキストを参照して回答してください
###制約
回答についてはステップバイステップで考え、必ずヘルプページのリンクを添付してください。
会計ソフトや労務関係のソフトにおける一般論は回答せず、あくまでもコンテキストベースでfreeeに関する回答をしてください
加えて、検索設定で値を調整してみます。

質問してみると….

比較的まともに回答してくれました。
ついでにヘルプページのリンクもつけてくれましたね。
終わりに
いかがでしたか?Difyは誰でも手軽にbotを作ったり、API連携したり利用用途が幅広いです。最初は慣れないかもしれませんが、RAGデータに社内のドキュメントを指定することも可能ですので利用用途は幅広いです。
2025年2月25日
Karorino株式会社 窪田 蒼起
X:https://x.com/SaaS_Backoffice
Facebook:https://www.facebook.com/soki.kubota/?locale=ja_JP
YOUTRUST:https://youtrust.jp/users/soki_kubota
YOUTUBE:https://www.youtube.com/@Karorino_Jirei