Difyで始めるAIアプリ開発 Vol.1|7つの主要機能を公式ドキュメントから解説

こんにちは、エンジニアの瀬戸です。

普段は主にデータ基盤の開発・保守対応の支援をしています。最近、業務でDifyを扱う機会がありましたので、本記事では備忘を兼ねてDifyについて紹介したいと思います。

「Difyってよく聞くけど、なにがどこまでできるの?」—そんな方に向けて、Difyの全体像を公式ドキュメント(以下、公式)を引用しつつ、説明を補足する形で書いてみようと思います。※Difyの公式(本記事の出典)はこちらです。

Difyは2023年にオープンソースとして公開された生成AIアプリケーション開発プラットフォームで、AIを使ったアプリケーションを「作る・試す・運用する」を一つの環境でカバーできるのが特徴です。

無償版と有償版が存在しており、本記事は以下の環境を想定した内容となります。

本記事で想定する動作環境

・Dify 無償版

・バージョン 1.11.2

Difyの概要

公式によるとDifyは以下のように説明されています。

公式ドキュメントより

Difyは、オープンソースのLLM(大規模言語モデル)アプリケーション開発プラットフォームです。直感的なインターフェース上で、AIワークフロー、RAGパイプライン、エージェント機能、モデル管理、Opik・Langfuse・Arize Phoenixなどによる可観測性(Observability)機能をはじめとするさまざまな機能を統合しており、プロトタイプの作成から本番環境への展開までを迅速に実現できます。

DifyはLLMを便利に・柔軟に使うために様々な道具を提供しています、という内容です。

1ユーザーとしては特にLLMを使ったサービス開発のPoCから本番稼働までできますというところが強みに感じます。他サービスとのインテグレーション(統合)に関する機能追加も活発に行われています。

Difyの主要な7つの機能

それではDifyの特徴的な機能について、公式に挙げられているものを紹介していきます。

ワークフローによる処理の構築

公式ドキュメントより

1. ワークフロー:ビジュアルキャンバス上で、以下をはじめとする多彩な機能を活用し、高度なAIワークフローを構築・テストできます。

ユーザーはワークフロー上で処理の流れを作成することができます。以下画像のように画面上で「ノード」と呼ばれる処理のブロックを線でつなげていくようなイメージです。ワークフローは豊富な種類と処理に対応しています。Difyの中心的な機能といえるでしょう。データの変換などを目的にコードを書いて処理を補うこともできます。※本格的なETL処理のような記述には適しません。

Difyにおけるワークフローのイメージ

幅広いモデルのサポート

公式ドキュメントより

2. 幅広いモデルのサポート:数十社の推論プロバイダーが提供する数百種類の商用・オープンソースLLMや、セルフホスト環境のモデルとシームレスに連携できます。GPT、Mistral、Llama 3をはじめ、OpenAI API互換のあらゆるモデルに対応しています。

Difyでは、いろいろなAIのモデルが使えて、管理できます。使いたいモデルをDifyに登録することで利用を開始できます。LLMを提供する側(モデルプロバイダ)と別途契約が必要となり費用が掛かる場合が多いです。

Difyで利用可能なLLMモデルの例

リッチなプロンプト開発体験

公式ドキュメントより

3. Prompt IDE:直感的なインターフェースでプロンプトを作成・編集し、複数のモデルの性能を比較できます。また、チャットアプリケーションにテキスト読み上げ(Text-to-Speech)などの追加機能を簡単に組み込むことができます。

DifyのLLMブロックでは以下画像のようなプロンプトの開発環境が提供されています。

必須の入力部分には赤※がついているのでわかりやすくなっています。

設定箇所が多いように感じますが、すべて埋めなくても動作は確認できます。理想の回答を得るために細かくチューニングを行うことができます。

Difyのプロンプト設定画面

RAG機能

公式ドキュメントより

4. RAGパイプライン:ドキュメントの取り込みから検索・検索結果の取得(リトリーバル)まで、RAGに必要な機能を包括的に提供します。PDFやPowerPoint(PPT)をはじめとする一般的なドキュメント形式からのテキスト抽出にも標準で対応しています。

RAGとは回答生成時にあらかじめ読み込ませた情報を参照しつつ回答に利用できる機能です。社内情報などを格納し、社内向けのAIチャットボットとして提供されている事例をよく目にします。

以下画像の例では「知識検索」というブロックを追加することであらかじめ設定したナレッジ(社内情報など)を回答時に呼び出して利用することができます。

DifyにおけるRAGのイメージ

エージェント機能

公式ドキュメントより

5. エージェント機能:LLMのFunction CallingやReActを利用してAIエージェントを定義し、あらかじめ用意されたツールや独自に作成したカスタムツールを組み込むことができます。Difyには、Google Search、DALL·E、Stable Diffusion、WolframAlphaなど、AIエージェント向けの50種類以上の組み込みツールが用意されています。

エージェントブロックを利用することで、質問によってエージェントが主体的に様々なツールを呼び出して利用できます。以下画像の例では、現在時刻を返すツール(標準プラグイン)を呼び出して回答時に利用しています。

Difyの「エージェント機能」の例

LLMOpsの導入

公式ドキュメントより

6. LLMOps:アプリケーションのログやパフォーマンスを継続的に監視・分析できます。本番環境で収集したデータやアノテーション(評価・フィードバック)を活用しながら、プロンプト、データセット、モデルを継続的に改善できます。

LLMOpsとはLLMを利用したサービスの企画・開発・運用・改善をするための枠組みやプロセスの総称です。オブザーバビリティ(可観測性)に関する機能はブラックボックス(内部の処理が不明な状態)になりやすいDifyの一連の処理についてどこの工程でどのデータがどのように処理されて、費用がいくらかかったかなどを知ることができます。LLMのサービス状況の追跡・監視は組織でLLMOpsを実現するうえで欠かせない観点の機能です。※例としてLangSmithの追跡画面が以下のものです。現在時刻を質問した際の詳細な結果を細かく確認することができます。

Difyにおけるオブザーバビリティを示す画面の例

バックエンドAPIの提供

公式ドキュメントより

7. Backend-as-a-Service(BaaS):Difyが提供するすべての機能には対応するAPIが用意されているため、自社のシステムやビジネスロジックへ容易に組み込むことができます。

この機能はややシステム開発者向けのものです。

他のサービスがDifyと連携がしやすいように作成した各処理(ワークフロー)のエンドポイントをAPIで提供してくれます。例えば社内の別サービスからDifyで作成した処理を呼び出すことが可能になり、ビジネス適用がしやすくなります。(Difyで1回処理を作れば、Difyの画面で実行せずとも、別のツールからの実行や定期実行を行うことがしやすくなるためです。)

Difyで作成した処理をAPIとして公開するイメージ

まとめ

本記事では以下の内容を中心に紹介しました。

・Difyの概要

・Difyの主要な7つの機能

 

Difyの強みを一言でまとめると「AIを使ったサービスをPoCから本番運用まで、一つの環境で完結できる」点です。ワークフロー、モデル管理、RAG、エージェント、LLMOps、APIまで揃っているため、ツールをいくつも組み合わせる必要がありません。
特にこんな方におすすめです。

・LLMを使った社内ツールをまず動くもので試したい

・PoCから本番運用までの移行コストを下げたい

・非エンジニアにもワークフロー作成に参加してほしい

大規模なETL処理や複雑なバックエンドロジックを組みたい場合は、Difyだけで完結させるより既存システムと組み合わせるのが現実的です。

今後もDifyに関する記事を書いていきたいと思っていますので、お付き合いいただけると幸いです。

 

<著者プロフィール>

Ryuichi Seto

瀬戸 龍一 Ryuichi Seto

パーソルビジネスプロセスデザイン株式会社

CX事業本部 DX統括部 データサイエンス部 データエンジニアリング2G

データサイエンスを軸に顧客の課題解決を担い、データ分析やAI活用、クラウド構築といった技術領域をカバー。新規事業開発やスポーツアナリティクス、CSR活動にも関与。部門横断でプロジェクトを推進しながら、誠実な対話と丁寧なドキュメント設計を通じて、顧客の自走を支える伴走型のDX支援を実践している。
インタビュー:データサイエンスの知見と経験に基づき成果にコミットする伴走型DX推進のスペシャリスト