弊社はAIについての知見を高めるために、隔週で「AI技術の最前線」「ゼロから作るDeep Learning」などの書籍を題材した「AI勉強会」を行なっています。(2023年7月から始めて20回目を迎えました)
そんな中、この5月に入り、SNS界隈では Dify.AI というオープンソースの大規模言語モデル(LLM)アプリケーション開発プラットフォームが話題になっていました。類似ツールにFlowise、Langflowなどがあるようですが、GitHub上のスターの数やコントリビューターの数の推移を見ると、Dify.AI が急激の伸びていました。
本記事では、AIの難しい話は横に置いておいて、Dify.AI を使って AI を活用してみる、ということをやってみたいと思います。
Dify.AI とは
Dify.AIについては https://docs.dify.ai にはこのような説明がありました。
Difyはオープンソースの大規模言語モデル(LLM)アプリケーション開発プラットフォームです。Backend-as-a-ServiceとLLMOpsの概念を組み合わせ、開発者が本番レベルの生成AIアプリケーションを迅速に構築できるようにします。技術者でなくても、AIアプリケーションの定義とデータ運用に参加することができます。
何百ものモデルのサポート、直感的なPromptオーケストレーションインターフェース、高品質のRAGエンジン、柔軟なAgentフレームワークなど、LLMアプリケーションの構築に必要な主要なテクノロジースタックを統合し、使いやすいインターフェースとAPIのセットを提供することで、Difyは開発者が車輪を再発明する時間を大幅に節約し、イノベーションとビジネスニーズに集中できるようにします。
https://docs.dify.ai (※DeepL翻訳)
さっそく、チャットアシスタントを作成してみる
弊社製品「truncus graph」について詳しく教えてくれるチャットアシスタント「truncus graph答えるくん」を作成してみます。
Dify.AI にサインアップ
GItHubアカウントかGoogleアカウントでサインインできます。

ナレッジを作成
チャットアシスタントに「truncus graph」の知識を学んでもらうためには製品情報をインポートする必要があります。今回は「truncus graph」ユーザー向けに公開している truncus developer サイトで使っているマークダウン形式のデータを1ファイルにまとめて、インポートします。
1. データソースの選択
メニューにある「ナレッジ」をクリックし、「知識を作成」に入ります。


次に、マークダウンファイルを選択またはドラッグ&ドロップし、「次へ」をクリックします。

2. テキストの前処理とクリーニング
チャンクの設定やインデックスモード、検索設定ができます。今回はデフォルトのまま進めます。
- チャンクの設定:自動
- インデックスモード:高品質
- 検索設定:ベクトル検索
「保存して処理」をクリックして次に進みます。

3. 実行して完了
処理が完了し、ナレッジが作成されます。

チャットアシスタントアプリを作成
先ほどインポートした「truncus graph」のナレッジを使った、チャットアシスタントアプリを作成していきます。
1. 最初から作成
メニューにある「スタジオ」をクリックし、「最初から作成」に入ります。


アプリ作成の設定ですが、アプリの名前と説明だけ設定し、その他はデフォルトのまま進めます。
- アプリのタイプ:「チャットボット」
- チャットボットのオーケストレーション方法:「基本」
- アプリの名前:truncus graph 答えるくん
- 説明:truncus graph のことはなんでも答えるよ!

2. Orchestrate
ここでは、AIに対する手順(プロンプト)と利用する「ナレッジ」を設定します。

手順(プロンプト)
このチャットアシスタントにどのように振る舞ってほしいかをプロンプトとして設定します。今回は、チャットアシスタントとしての目的、具体的に対応してほしい内容を設定しました。
変数
変数は、ユーザーがチャットアシスタントアプリの利用を開始する際に入力する内容になります。今回は既定値として設定されている User をそのまま利用します。例えば、悩み相談をするアプリを作成する場合は、悩みを変数に設定し、悩みに対する具体的な指示をプロンプトに設定ことができます。
コンテキスト
最初に作成した「ナレッジ」をコンテキストに追加します。これで、チャットアシスタントが「truncus graph」の知識を学び、LLMと組み合わせて回答を作成してくれるようになります。
デバッグとプレビュー
画面右側のエリアでチャットアシスタントの動きを確認できます。
アプリを公開する
画面右上の「公開する」をクリックすると、下記のようなメニューが表示されます。「更新」をクリックしてアプリを公開します。「アプリを実行」をクリックするとアプリが起動します。


ちゃんと「truncus graph」について答えてくれました!!

おわりに
今回、Dify.AI を利用して非常に少ないステップでチャットアシスタントアプリを作成することができました。今後もこのようなプラットフォームの利用を通じて、AIの適用の可能性を探っていきたいと思います。
困ったこと
無料版の制限: ベクターベースの容量(5MB)
DIfy.AI の無料版はベクターベースの容量制限(5MB)があります。これはナレッジデータのサイズや設定に影響します。制限に引っかかると、ナレッジ内のドキュメントを削除しても解消されませんでした。ナレッジ自体を削除したら解消されました。

