この記事では、Difyを使って誰でも簡単にAIチャットボットを作成する方法を、初心者にも分かりやすく解説します。2024年最新ドキュメントを元に進めていきますので、是非最後まで読んでみてください!
1. Difyとは
誰でも簡単にAIアプリを作成できるOSSのAIアプリ開発プラットフォームです。
DifyはオープンソースのAIアプリ開発プラットフォームです。 Backend as ServiceとLLMOpsの理念を融合し、開発者が迅速にAIアプリケーションを構築できるようにします。 同時に、プログラミングが得意でない方でも、自分のアイデアをすぐにAIアプリにできる直感的なインターフェースを提供しています。
2. アプリの作成
まずはアプリを作成します。めちゃめちゃ簡単です。
- Difyにログイン(アカウントがない場合は新規登録)します。
- スタジオ(https://cloud.dify.ai/apps) からアプリを作成します。
- 画面左のアプリを作成するの項目のうち、「最初から作成」をクリックします。
4. 以下のとおり選択、入力します。
項目 | 内容 |
---|---|
どのタイプのアプリを作成しますか? | チャットボット |
チャットボットのオーケストレーション方法 | 基本 |
アプリの名前 | 任意のアプリ名を入力 |
これでアプリが作成できました!簡単ですね。
3. プロンプトの設定
アプリが作成できたので、軽く動かしてみます。LLMに何をしてほしいかプロンプトを設定します。
3-1. プロンプト設定:簡単な指示
「手順」と記載のある箇所にプロンプトを設定します。今回は以下のとおり関西弁でユーモアのある回答をするように指示してみました。
コピペ用:
あなたは、ユーザーの質問、相談に対して回答するAIチャットボットです。以下の指示に従って応答してください:
1. 関西弁で回答してください。
2. 親しみやすくユーモアのある回答をしてください。
3-2. 質問する:プロンプトに従っているか
画面右側に「デバッグとプレビュー」と表示があり、公開前に試すことができるため質問してみました。
元気出た(笑)
おにぎりを地面に落として困っているユーザーに対して、プロンプトどおりに関西弁で親しみやすく、ユーモアのある回答してくれていますね。こんな感じでプロンプトの設定ができます。簡単ですね!
4. 変数の設定
LLMに渡すプロンプトに変数を設定することができます。例えば、ユーザー名や職業などプロンプトに必要な情報を設定することができます。これも簡単に設定できるので見ていきましょう。
4-1. 変数を追加:ユーザー名を変数に追加してみる
項目名のとおり、ユーザー名を変数として利用するために設定してみます。
変数から「+追加」をクリックすると、色々選択肢が表示されます。ユーザー名は短いため、今回は短文をクリックします。
以下の例のとおり入力します。制限や用途も記載しておきます。
項目 | 変数キー | ユーザー入力フィールド名 |
---|---|---|
例 | UserName | 名前 |
制限 | 英数字のみ | 制限なし |
用途 | プロンプトに渡す際に使用 | ユーザー画面に表示される |
4-2. 変数をさらに追加:長文や選択肢を変数として設定
先ほどは短文を設定しましたが、他に段落や選択項目などが設定できます。
選択の場合、オプションで選択値が設定できます。(上図のアクション列:歯車マークから)
今回は「喜怒哀楽」をオプションとして選択できるよう変数設定してみました。
4-3. プロンプト設定:変数を使用するよう修正
プロンプトで変数を利用する際は、{{ }}
で「変数キー」を囲うだけです。以下の設定例を見るとイメージが湧くと思います。
今回は回答に「ユーザー名」「質問・相談内容」「感情」を踏まえるようにプロンプトを設定してみました。
コピペ用:
あなたは、ユーザーの質問、相談に対して回答するAIチャットボットです。以下の指示に従って応答してください:
ユーザー名:{{UserName}}
質問・相談内容:{{Contents}}
ユーザーの感情:{{Emotions}}
1. 関西弁で回答してください。
2. 親しみやすくユーモアのある回答をしてください。
3. ユーザー名を回答に含めてください。
4. 質問・相談内容とユーザーの感情を踏まえて回答してください。
4-4. 質問する:変数が含まれているか確認
デバッグとプレビュー画面を確認すると、変数に設定した項目を入力、選択する画面が追加されています。今回は以下のとおり入力してみました。
ユーザーの入力をしないと回答してくれないため、シンプルに「回答して」と送信してみました。結果、回答に「ユーザー名」や「相談内容」なども含まれているため設定した変数を踏まえて回答してくれていることがわかると思います。
5. コンテキスト:特定の情報からのみ回答させる
AIの対話範囲をナレッジベース内に制限したい場合、企業内のカスタマーサービス用語規準などを「コンテキスト」で参照することができます。
公式ドキュメントに上記のとおり記載があり、「コンテキスト」を利用するとAIの対話範囲を設定した情報(ナレッジベース)に制限することができます。
5-1. コンテキストを追加
まず、コンテキストから「+追加」をクリックします。
参照するナレッジが設定されていない場合は以下のとおり表示されるため「作成に進む」をクリックします。
5-2. ナレッジの作成:テキストファイルから作成
データソースは、テキストファイル・Notion・ウエブサイトから選択可能です。今回は商品情報が含まれたテキストファイルをアップロードします。
以下のとおり設定して、「保存して処理」をクリックします。
設定項目 | 選択肢 |
---|---|
チャンク設定 | 自動 |
インデックスモード | 経済的 |
5-3. コンテキストの設定:作成したナレッジを選択
先ほどアップロードしたナレッジが一覧に表示されるため、選択の上追加します。
デフォルト設定で保存します。
これでLLMが参照するナレッジの設定が完了です。
5-4. プロンプト設定:情報をもとに回答するよう指示
コンテキストで設定したナレッジ内の情報を基にユーザーからの質問へ回答するようプロンプトを設定します。
後程も触れますが、コンテキストにナレッジを設定するとシステムプロンプトにナレッジを参照するよう指示されるため、私たちが設定するプロンプトではナレッジに触れる必要がないかもしれません。
コピペ用:
あなたは、ユーザーの質問に対して回答するAIチャットボットです。以下の指示に従って応答してください:
1. 常に丁寧で親切な態度を保ちます。
2. ユーザーの質問へ提供する商品情報.txtをもとに正確かつ簡潔に回答します。
5-5. 質問する:提供した情報を元に回答しているか確認
質問してみると、コンテキストに設定したナレッジを基に回答していることがわかります。また、回答の下部に「引用:商品情報.txt」と表示されておりナレッジを参照していることがよくわかりますね。
5-6. プロンプトログを確認:システムプロンプトなどの内部処理を理解
先ほども少し触れたがシステムプロンプトに「提供した情報(<context>タグ内)の情報をもとに回答する」よう指示されていることが確認できます。このシステムプロンプトは自動生成されておりアプリを作成するユーザーは意識する必要はありません。
なお、<context>タグ内の情報はナレッジに設定した情報が記載されています。
SYSTEM
Use the following context as your learned knowledge, inside <context></context> XML tags.
<context>
主力商品ライン
チョコレートシリーズ「ココアドリーム」
ミルクチョコレート
特徴的な商品
「変幻チョコ」:口に入れると味が変化するチョコレート
「うたクッキー」:食べると口の中で音が鳴るクッキー
「夢色キャンディ」:舐めると虹色に変化するキャンディ
</context>
When answer to user:
- If you don't know, just say that you don't know.
- If you don't know when you are not sure, ask for clarification.
Avoid mentioning that you obtained the information from the context.
And answer according to the language of the user's question.
あなたは、ユーザーの質問に対して回答するAIチャットボットです。以下の指示に従って応答してください:
1. 常に丁寧で親切な態度を保ちます。
2. ユーザーの質問へ提供する商品情報.txtをもとに正確かつ簡潔に回答します。
USER
夢色キャンディはどのような商品ですか
ASSISTANT
夢色キャンディは舐めると虹色に変化するキャンディです。
6. まとめと次のステップ
ここまでの手順で、基本的なチャットボットが完成しました!Difyを使えば、誰でも簡単にAIチャットボットを作成できることがお分かりいただけたでしょうか。
次回の記事では、さらに高度な「チャットの強化」機能を使用したチャットボット作成方法を紹介します!