見出し画像

Dify②:Difyで生成AIアプリ作成を試してみよう

今回は、Difyという生成AIプラットフォームを使用して、実際にAIアプリを作成する方法を詳しく解説します。別の記事では、Difyの基本的な使い方やその概要を説明しましたが、今回はさらに一歩進んで、より実用的なアプリを作成してみたいと思います。

Difyのスタート

まず、Difyの公式サイトにアクセスします。サイトにアクセスすると、「Get Started」というボタンが見つかりますので、それをクリックして、自分のクラウド環境に移動します。ここで、自分専用のDifyページにアクセスできます。なお、私はクラウド環境を使用していますが、ローカル環境で作業したい方は、Dockerを立ち上げてコマンドプロンプトを使用することで、同じように進めることが可能です。Dockerを使用する場合は、コマンドを実行してローカル環境をセットアップしてください。

アプリの作成開始

Difyページにアクセスしたら、左側のメニューから「アプリを作成する」というボタンをクリックします。これにより、新しいアプリの作成が始まります。アプリのタイプを選択する画面に移動したら、今回は「チャットボット」を選択し、会話形式のアプリを作成することにします。

チャットボットを選択した後、オーケストレーションの設定画面に移ります。オーケストレーションとは、アプリケーションのフローや動作を管理する部分のことです。前回の動画では、「基本」オーケストレーションを使用しましたが、今回は「チャットフロー」を選択します。チャットフローを選択することで、より複雑なフローや条件分岐を持つチャットボットを作成することが可能になります。

アプリの設定

今回作成するアプリは、「ツンデレ総務」という名前のチャットボットです!
このチャットボットは、特定の企業で使用される申請方法に関する情報を回答するというものです。
また、単なる情報提供にとどまらず、ツンデレな口調でユーザーに回答するという遊びを持たせます。
具体的には、企業内の特定のPDFファイルを読み込ませ、その情報をもとに質問に回答する仕組みを実装していきたいと思います。

PDFファイルの準備と読み込み

まず、企業内で使用されている申請方法に関する情報が記載されたPDFファイルを用意します。
このPDFには、例えば「総務に関する申請方法」「経費精算手続き」「休暇申請方法」などが含まれています。これをチャットボットに読み込ませ、ユーザーからの質問に対して適切な回答ができるように設定します。

PDFファイルを読み込むことで、チャットボットはその情報を基に回答を生成します。今回は、特定の企業の申請方法や手続きを理解したチャットボットを作成するために、このPDFファイルをDifyにインポートします。

チャットフローの設定

次に、チャットフローの設定に移ります。チャットフローは、ユーザーが質問を入力したときに、どのように処理されるかを定義する部分です。まず、基本的なフローを確認します。
初期設定では、フローは「開始」「LLM(言語モデル)」「回答」という3つのステップから成り立っています。この基本的な流れをもとに、カスタム要素を追加していきます。

質問分類の設定

まず最初に、ユーザーの質問を分類する「質問分類機」を追加します。質
問分類機を使うことで、ユーザーの質問内容に応じて異なる処理を行うことができます。今回は、「会社の申請に関する質問」と「それ以外の質問」の2つのクラスに分類します。

  • クラス1(会社の申請に関する質問):このクラスに分類された質問に対しては、企業内で使用されるPDFファイルから取得した知識をもとに回答します。

  • クラス2(その他の質問):このクラスに分類された質問に対しては、LLM(言語モデル)を使用して、ツンデレ口調で適当に回答を生成します。

まずは、クラス2の設定を行います。クラス2に分類された質問に対しては、LLM(GPT-3.5)を使用して、ツンデレキャラクターの設定に基づいた回答を生成するように設定します。

ツンデレキャラクターの設定

LLMが回答を生成する際に、ツンデレキャラクターの設定を行います。プロンプトには、「あなたはツンデレな女性です。基本的にツンツンした態度で回答してください。時々優しい態度で回答してもかまいません。」といった内容を設定します。

また、回答は丁寧語を使わず、ため口で行い、全体的にツンデレらしさを保つようにします。さらに、具体的な口調や語尾(例えば、「〜なのだ」「〜ね」など)を指定し、キャラクターらしさを出していきたいところです。

知識の追加とLLMの設定

次に、クラス1のフローに対して、企業の独自の知識をDifyにインポートします。具体的には、企業内で使用されるPDFファイルをインポートし、その情報をもとに質問に回答させるように設定します。

PDFファイルをインポートするには、「ナレッジを追加」ボタンをクリックし、参照する知識を選択します。今回は「総務ドキュメント」という名前でアップロードしたPDFを選択し、Difyに読み込ませます。

LLMと知識の連携

知識をインポートしたら、次にこの知識を使ってLLMが回答を生成できるように設定します。知識取得後、その結果をLLMに渡し、LLMが生成した回答を基にして、適切な回答をユーザーに提供する流れにします。

この際、LLMには「コンテキスト」に、知識取得の結果をプロンプトの一部として使用できるように設定します。
そして、プロンプトに「あなたはツンデレな女性です。企業の申請に関する質問に対しては、この知識をもとに的確に回答してください。」と記述します。

これにより、ある特定の申請方法に関する質問に対して、ツンデレっぽく回答できるチャットボットが完成です。

フローの最終設定

ここまで設定を終えたら、フロー全体を確認して最終調整を行います。具体的には、各ステップ間の接続を確認し、正しいフローが構築されているかをチェックします。例えば、質問分類機で「クラス1(会社の申請に関する質問)」に分類された場合は、まず知識取得が行われ、その後にLLMを通じて回答が生成されるという流れになります。

同様に、クラス2に分類された場合には、直接LLMがツンデレな回答を生成し、そのままユーザーに表示されるというシンプルな流れになります。

アプリのテストとデバッグ

設定が完了したら、アプリをテストして動作を確認します。Difyでは、「デバッグ」と「プレビュー」モードを使用して、アプリの動作をシミュレートできます。これにより、各ステップが正しく機能しているかを確認し、必要に応じて修正を加えます。

まず、「デバッグ」モードを使用して、質問がどのように処理されるかを確認します。例えば、「いい天気ですね」と入力してみると、質問分類機が働き、クラス2に分類されます。そして、LLMがちょっとだけ?ツンデレな回答を生成することが確認できます。

次に、「会社の有給申請の仕方を教えてください」と入力します。
すると、質問分類機がクラス1に分類し、PDFから取得した情報をもとに、申請方法が回答されます。まぁ、合っているかは微妙ですがね。。。

アプリの公開

テストが完了し、すべての動作が期待通りに行われていることを確認したら、アプリを公開します。公開することで、アプリは実際にユーザーが利用できる状態になります。また、公開後のアプリはウェブサイトに埋め込んだり、APIとして外部システムと連携させることも可能です。

例えば、「経費申請のフォームはどこから取得できますか?」と質問すると、ポータルサイトから申請フォームにアクセスする方法が返されるなど、ユーザーが具体的な質問を行うことで、実際の業務をサポートするツールとして活用できます。

簡単にこのくらいはできますが、正確性にはモデルの影響もあるでしょうが、まだまだ難がありますし、思ったような挙動にはなっていない部分もあります。
ですが、このくらいの操作でこのようなチャットボットができるのはかなりおもしろいと思いませんか?

まとめ

今回の設定を通じて、Difyを使ったツンデレキャラクターを持つ企業内の申請サポートチャットボットを作成しました。Difyの柔軟なフロー設定とLLMの組み合わせにより、複雑な手続きや情報提供を簡単に自動化できます。
ぜひ遊んでみてくださいね!

この記事が気に入ったらサポートをしてみませんか?