🍙
Difyの基礎知識
概要
Difyでどのようなことができるのか?他ツールとは、どのように違うのか?Difyのユースケースなどについて紹介します
アジェンダ
- Difyとは? (5分)
 - 従来ツールとの比較 (5分)
 - Dify環境構築の様子 (5分)
 - 1分でGPTsっぽいチャットボット作成 (5分)
 - ワークフローの活用 (5分)
 - その他Difyの主要な機能紹介 (5分)
 
Difyとは?

Dify(ディファイ)とは
- LLM(大規模言語モデル)アプリケーション開発プラットフォーム
- Difyの由来は、Define(定義)+Modify(修正)
 - AIアプリケーションを定義し、継続的に改善すること意味している
 - 開発機能だけではなくアプリの公開や保守運用を簡素化するような機能が提供されている
 
 - 作りっぱなしは簡単、LLMの爆発的な進化に合わせて継続的な改善活動が大切
- アプリの実行履歴やどのような処理を行ったか実行内容の詳細が確認できるので改善に繋げやすい
 - 最新のモデルもすぐ利用可能になります(Claude 3.5 sonnetやGPT-4o miniなど)
 
 
直感的なインターフェースを提供、爆速でアプリケーション開発が可能

- LLM(GPTやGemini)を含めて様々な便利機能が利用できます
 - これらの機能はレゴブロックの様にUIを直感的に組み合わせアプリケーション開発ができます
 - システムチューニングも全体を再設計せずに、
ブロックを込み変え直したり、ブロックの設定を変えるだけ 
RAGエンジンも搭載

- 上記の様に独自のドキュメントをDify上に蓄えることができる
 - 蓄えた情報を元に回答するチャットボットをノーコードで迅速に構築可能(いわゆるRAG)
 - コーディングによるRAG構築に1日かかっていたものが、専門知識いらずに誰でも10分程度で構築できる
 
その他
- GPTs的なLLMアプリも月額課金せず簡単に作れて利用できる優れもの
 
従来ツールとの比較
GPTs

- GPTsとは?
- プログラミング知識や自然言語の知識がなくてもChatGPTをカスタマイズしたチャットボットの開発ができる
 - 例)ロゴ作成、記事作成、メール作成など
 
 - メリット
- お馴染みのChatGPT UIで操作性が良い
 - 専門知識がなくてもカスタマイズしたチャットボットの開発が手軽にできる
 - 作成したツールを公開してマネタイズできる
 
 - デメリット
- 作成や利用には、月額約3,000円の「ChatGPT Plus」への加入が必要
 - GeminiやClaudeなど話題のその他モデルの利用が出来ない
 
 
LangChain

- 
LangChainとは?
- LLMを用いてアプリケーションを効率よく開発するためのフレームワーク
 - プログラミング言語PythonやJavaScriptのライブラリ(便利に使える機能やツール)として提供されている
 - 利用例)ChatGPT+LangChain| Elasticsearch公式ドキュメントのQ&Aを作ってみる
 
 - 
メリット
- コーディングで柔軟に様々な機能を組み合わせた開発が可能
 - 開発の知見がネットに沢山転がっている
 - やりたいことは大体できる
 - GPTやGemini、Claudeなど様々なモデルが利用可能
 - 従量課金制
- ツール自体は無料
 - モデルのみ使った分だけ課金
 - 一方で、見積もりは難しい
 
 
 - 
デメリット
- プログラミングや自然言語といった専門知識が必須
 - システムが複雑になりやすい
- 開発工数が膨らむ
 - 問題点が見つけづらくチューニングが難しい
 
 - 開発可能なエンジニアが希少なため単価が高い
 - バージョンアップが頻繁にあり、そのたびにコードが大きく変わる可能性があるため運用が難しい
 
比較表
個人的に現時点でDifyは最強
GPTs LangChain Dify 非エンジニア利用 ◯ X ◯ 複雑なLLMアプリケーションの構築 X ◎ ◯ 短時間でのLLMアプリケーション作成 ◯ X ◯ アプリケーションの公開機能 ◯ X ◯ GPTやGeminiなど複数社のモデル利用 X ◯ ◯ 運用のしやすさ ◯ X ◯ RAGの構築 X ◯ ◯ 従量課金制 X ◯ ◯  
GitHubの数値で他のツールと比較

※ Dify Meetup Tokyo #1 Difyの開発ロードマップとQ&A より抜粋
Dify環境構築の様子

- 上記は、Difyのシステム構成図、かなり複雑で一つ一つ環境を作っていては大変
 - Dockerによる起動方法を公式が提供、誰でも簡単に少ない手順で起動可能
 
実際にDifyが簡単に構築&起動できる様子をお見せします。
前提条件
- Gitがインストール済み
 - DockerとDocker Composeがインストール済み
 
(Git未インストールの方限定)Gitのインストール
$ sudo apt-get install git
(Docker未インストールの方限定)Dockerのインストール
仮想環境を使ってDifyをお手軽に起動するための準備を行います
# インストールファイルをダウンロード
$ curl -fsSL https://get.docker.com -o install-docker.sh
# インストールファイルを使ってDockerをインストール
$ sh install-docker.sh
# ログイン中のユーザをdockerグループに追加
$ sudo usermod -a -G docker $USER
# 追加したグループを適用
$ newgrp docker
ローカル環境にDifyをダウンロード
$ git clone https://github.com/langgenius/dify.git
ローカル環境のDifyを起動
# Dockerファイルがディレクトリまで移動
$ cd ./dify/docker
# Dockerの起動
$ docker compose up -d
1分でGPTsっぽいチャットボット作成

チャットボットの概要
Difyでネコ語を話すGPTsっぽいチャットボットを1分で作成してみます
チャットボット作成
システムプロンプト(質問やタスクを提示する前に、LLMに指示やガイドラインを提供する方法)を下記のように記載
あなたは猫語を話すBOTです。語尾には必ず「にゃー😸」を付けてください。
ワークフローの活用

ワークフローの概要
Difyにはワークフローと呼ばれる機能があります
ノードと呼ばれる用意されている機能を繋げあわせて複雑なタスクを自動化できます
ワークフローの種類
- チャットフロー:ユーザへの回答までに複雑なロジックを必要とする会話シナリオ用
 - ワークフロー:バッチ処理やタスク自動化のシナリオ用
 
Youtube要約ワークフローの作成
先月v.0.6.11で追加された「Youtubeの字幕取得機能」を利用して、動画の内容を翻訳し要約するワークフローを作成してみましょう
参考記事:https://zenn.dev/zozotech/articles/87a3e318d61920
デモではDify v0.6.9の要約を行いました
ワークフローによる要約結果は下記のようになりました

プロンプト
下記は、Youtubeの動画の字幕データです。
初心者にも分かりやすいように要約してください。また、必ず日本語で教えて下さい。
===========
{{コンテキスト}}
ワークフローAPIの利用

ワークフローの実行は2パターンあります
- Dify上のUIでワークフローを実行
 - ワークフロー毎に提供されるAPIを実行
 
curl -X POST 'http://xxx/v1/workflows/run' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "inputs": {},
    "response_mode": "blocking",
    "user": "abc-123"
}'
手軽に他のサービスへの組み込みもでき、LLMを使ったサービスを簡単に提供できます
ユースケース
- 動画の内容をQ&Aするボット作成
 - 動画の内容をまとめたSEO記事を作成
 - LLMを組み込んだ自社サービスを提供
- AIを使った〇〇サービスが簡単に展開できます
 
 
その他Difyの主要な機能紹介
Difyの主要な機能をいくつか紹介します
複数LLMモデルの出力を比較
DIfyでは、1000以上のLLMモデルが扱えます
- GPT
 - Azure OpenAI Service
 - Gemini
 - Claude
 - Hugging Face
 - などなど
 
Dify上で、これらモデルの出力結果を複数並べて簡単に比較出来ます
最適なモデル選びに役立ちそうですね!

Webサイトのクローリング

- 「firecrawl(ファイヤークロール)」を使えば、特定のサイトをクローリングした情報を扱えるようになります
 - クローリングした情報はマークダウン形式に変換されるのでLLMとの相性も良い
 

ユースケース
- 社内wikiのQ&Aボット
 - 複数のサイトの情報をまとめたSEO記事
 
Discussion