Difyでクライアントの要望に合わせて作る
前回はいくつか入門書の通りに作成してみたわけだが、今回はボスの要望に合わせて作ってみる。内容が前回の続きであるRAGを活用したものになるのでちょうどよい。具体的な作り方も書く。
アプリ概要
・イベントへの質問回答チャットボット
・イベントの概要やQ&Aその他を読み込み、それを元にスポンサー・参加者・登壇者からの問い合わせについて回答する文章を作成してほしい
・利用方法としては以下を想定
1.上記の利用者から電子メールを受け取る
2.担当者はその文面を本ツールに貼って回答を得る
3.その回答をメール貼って返信する
外部情報の読み込み
まずナレッジベースを作成する。いわゆるRAGの実現。三種類のやり方がある
・テキストファイルからインポート
・Notionから同期
・ウェブサイトから同期
テキストファイルは以下の形式に対応。
(TXT, MARKDOWN, MDX, PDF, HTML, XLSX, XLS, VTT, PROPERTIES, DOC, DOCX, CSV, EML, MSG, PPTX, XML, EPUB, PPT, MD, HTM)
ウェブサイトから同期はFirecrawlなどの外部ツールでクローリングしたものと連携し同期が可能。(Difyそのものにその手のネイティブ機能はない)
細かい設定があるが、とりあえず初期設定のままで動作する。
アプリ作成手順
ノードの初期状態は【開始】→【LLM】→【回答】になっているので、開始とLLMの間に【知識検索】を入れる。フローチャートの構築はこれだけ。あとは2点ほど設定をやるだけで作動する。
知識検索のナレッジベースのところの+ボタンを押して、先ほど登録したナレッジベースを読み込ませる。今回はChatGPTに作ってもらった架空のイベントQ&Aを入れている。(ちなみになぜか英語のPDFになったが普通に日本語翻訳して対応してくれる。)
ナレッジベースを利用できるようにするための設定を行う。LLMのノードを選択し、「コンテキスト」の部分で知識検索のresultを選択する。次いでSYSTEMの[x]をクリックして「コンテキスト」を選択する。
これで完了!あっという間である。 実用に合わせて細かくプロンプトを設定することもできるが、正直Q&AチャットボットくらいならプロンプトなしでもLLMが普通に対応してくれる。設定するならイベントに関係ないことを回答しないようにするとかだろうか?
アプリの公開
完成したアプリは右上の「公開する」を押せばこのウインドウが開いて公開可能。更新を公開を押すとURLが発行されるので、社員などに使わせる一番簡単な方法はこのURLを共有することだろう。一応全世界に公開されているのでURLを外部に漏らさないように注意。
コンテキストについて
チャット中に得た情報はそのチャット中には保持されるが、自分の以前のチャットや、自分以外とのチャット内容を永続的に保持はしない。API等を使って外部のデータベースと連携するなどで実現は可能。
まとめ
数分でチャットボットが作成可能。基本的にツールを呼び出して組み合わせてアプリを作るプラットフォームなので、それより一歩踏み込んだこと(クローリングや内容保持など)をやるには外部の助けが必要。ただ連携はしやすいようになっている。