😺

[Dify] ユーザの任意の質問文に対して、FAQの回答を返すチャットボットを作ってみた

2025/01/22に公開

FAQ チャットボットの作成

「いくらですか?」「データの追加方法」といったユーザーからの任意の問い合わせに、すぐに回答できるチャットボットを作ってみませんか? このチャットボットは、あらかじめ用意したFAQの中から、ユーザーの質問に最も適した回答を選んで表示します。

本記事では、Dify を使って、FAQ検索チャットボットを簡単に作る方法をご紹介します。AIの検索技術を使って質問に合った回答を見つけ出し、事前に用意した正確な回答をそのまま返すので、間違った情報を返すリスクを減らすことができます。また、チャットボットの作り方だけでなく、FAQの登録方法や、より使いやすくするためのコツもお伝えします。

FAQ チャットボット作成の流れ

  • FAQのデータを用意する
  • FAQのデータを、Dify のナレッジとして作成する
  • ナレッジを元に回答するチャットボットを作成する

前準備:FAQのデータを用意する

Dify のナレッジは、ナレッジ > ドキュメント > チャンク、という構造になっています。このチャンクの1つ1つに、FAQのQ&A1つ1つを登録します。

LLM、チャットボットに、何がQ(質問)で、何がA(答え)なのか分かり易い形式で登録する必要があります。今回は、JSON形式で、

{
  "question": "質問文",
  "answer": "回答文"
}

の形で、Q&Aを用意します。ナレッジを登録する際、Q&A1つ1つをきれいに分割するために、わかりやすい区切り文字を挿入すると良いでしょう。

{
  "question": "質問文",
  "answer": "回答文"
},

{
  "question": "質問文",
  "answer": "回答文"
},

{
  "question": "質問文",
  "answer": "回答文"
}

カンマと改行で区切った例

このようなデータを既存のWebサイトや手元のドキュメントから、LLM等を用いて作成してください。

ナレッジを作成

ナレッジタブを開き、ナレッジを作成、をクリックして進みます。

データソースの選択で、テキストファイルからインポート、を選び、先ほど作成したFAQファイルをアップロードします。次へを押して進みます。

テキストの前処理とクリーニングの画面

チャンクの設定にて、区切り文字を、,\n\n 、オーバーラップをなし、に設定します。プレビューすると、狙い通り、1つのチャンクに、1つのQ&Aのjsonが含まれるように区切られます。

最下部の推定チャンク数が、意図通りになっているか確認しましょう。
その他の設定はそのままで、保存して処理をクリックします。

ナレッジの作成が完了します。

チャットボットを作成する

スタジオを開き「最初から作成」をクリックして始めます。
アプリの種類は、チャットボットを選択。
アプリのアイコンと名前、説明を入力してください。

例:

アプリの名前:
FAQを元にしたチャットボット

説明:
予め用意したFAQを用いて、Q&Aを行うチャットボットです。

作成したアプリを開きます。まず、コンテキストとして、先ほど作成したナレッジを追加しましょう。
また、チャットボットに、答えの部分を変更せずにそのまま答えさせるため、以下のように設定しました。

指示:
以下に示すJSON形式のコンテキストが入力されます。コンテキストは常に
{ "question": "質問文", "answer": "答え" }
という構造を持ちます。
あなたのタスクは、このJSONの "answer" フィールドに格納された値を、そのまま出力することです。
余計な文字(追加の説明や装飾、引用符、改行など)を一切加えず、JSON中の "answer" の値のみを返してください。

もしJSONが不正である、または "answer" フィールドが存在しない場合は、その旨をエラーとして明示的に出力してください。

入力例
{ "question": "所在地はどこですか?", "answer": "東京" }

出力例
東京

試しに質問してみると、最も類似のQ&Aが選択され、回答がそのまま出力されていることが確認できます。

参考

ワークフローにて利用したい場合は、コードブロックを用いて、answer の値を取得することもできます。

知識取得ブロックと組み合わせて使ってみてください。


function main({arg1}) {
    const parsed = JSON.parse(arg1[0].content);
    return {
        result: parsed.answer
    };
}

まとめ

本記事では、Difyを使ってFAQ検索チャットボットを作成する方法について解説しました。主なポイントは以下の通りです:

  • FAQのデータをJSON形式で準備し、質問と回答のペアを作成
  • Difyのナレッジ機能を使って、FAQデータを適切にチャンク分割して登録
  • 専門的なプロンプトを設定することで、FAQの回答をそのまま返すチャットボットを実現

このようなチャットボットを導入することで、ユーザーからの問い合わせに対して、事前に用意した正確な回答をすぐに提供することができます。また、AIの検索技術を活用することで、最適な回答を選択することが可能です。

今後は、より多くのFAQデータの追加や、プロンプトの改善など、さらなる発展が期待できます。ぜひ、お持ちのFAQデータを活用して、効率的な問い合わせ対応を実現してください。

Sparkle AIブログ

Discussion