DEVELOPER’s BLOG

技術ブログ

はじめてのDify - エージェント&ワークフロー実践: 第1部 入門編

2025.12.11 Takahisa Ogawa
生成AI
はじめてのDify - エージェント&ワークフロー実践: 第1部 入門編

  1. 1. はじめに
  2. 2. Difyとは
  3. 3. Difyの基本操作
  4.  3-1. Difyの種類
  5.  3-2. アカウント作成
  6.  3-3. シンプルなワークフローを作ってみる
  7. 4. Dify実践: LLMとの連携
  8.  4-1. 初期設定(LLM設定)
  9.  4-2. ワークフローでLLMを使ってみる
  10. 5. まとめ

1. はじめに

山根さん「小川くん、Difyディフィって知ってる?」
ボク「海賊王になるやつですかね」
山根さん「じゃあ調べてブログ書いてね。」
ボク「はい。」

そんなやり取りがあったとか無かったとか



ブログをご覧の皆さまこんにちは。エンジニアの小川です。

今回はAIツール「Dify」について、入門編として基本的な使い方を解説します。

2. Difyとは

Dify公式サイト
https://www.dify.ai/

Difyとは、プログラミング知識がなくてもAIアプリケーションを開発できるオープンソースのプラットフォームです。
大規模言語モデル(LLM)を利用し、チャットボットやコンテンツ生成ツールなどを直感的な操作(ノーコード/ローコード)で開発できます。
(Google 要約より引用)

まとめるとDifyはAIアプリケーションを簡単に作成できるプラットフォームです。
GUIで操作できるため、プログラミングの知識がなくてもAIツールを作成できます。

ええそうです。ごくごく簡単なものであれば。

実際はコードを書かないといけない場面が多々ありますし、そもそもやりたいことのワークフローの設計自体が難しいケースもあります。

つまりは謳われている程には「プログラミング知識がなくても良い」ことはなく、あった方が断然良いかと思われます。まぁ「ノーコード」を名乗るサービスの多くは大体そんな感じかと思いますが。

一方で経験がある方からすると、DifyはLLMを使ったアプリケーションをとても手軽に作成できる便利なツールと言えます。

そこで本記事では、Difyの基本的な使い方と、LLMやMCPサーバーとの連携方法について、2部構成で紹介します。

・はじめてのDify - エージェント&ワークフロー実践: 第1部 入門編
・はじめてのDify - エージェント&ワークフロー実践: 第2部 応用編


本記事は主に

 ・初級〜中級エンジニアの方
 ・Difyを初めて使う方
 ・DifyでLLMを使ったアプリケーションを作成したい方
 ・DifyとMCPサーバーの連携に興味がある方

を対象としています。

3. Difyの基本操作

3-1. Difyの種類

Difyには大きく分けて2つの提供形態があります。

Dify Cloud:Dify社が提供するクラウドサービス
Dify Self-Hosted:Difyのオープンソースコードを自分で構築・ホスティングする

今回はCloud版を使用します。Self-Hosted版はGitHubでコードが公開されていますので、興味がある方はそちらも試してみてください。実際に使ってみましたが、Docker経験者であればとても簡単に構築できるかと思います。

またEnterprise版もありますが、こちらは大規模組織向けの有料プランとなっており、今回は割愛します。

3-2. アカウント作成

まずはDifyのアカウントを作成します。
特に難しい点はありません。

Dify公式サイト(https://www.dify.ai/)にアクセスし、画面右上の「Get Started」ボタンをクリックします。

dify login

GitHubアカウント、Googleアカウント、またはメールアドレスで登録/ログインできます。

dify top

ログイン後、Difyのダッシュボード画面が表示されます。

3-3. シンプルなワークフローを作ってみる

それでは実際にワークフローを作成してみましょう。
画面内のメニューにある「最初から作成」リンクを押下します。

dify top menu

作成内容の選択画面が表示されます。
ここでは「ワークフロー」を選択し、アプリ名とアプリ説明を入力して「作成する」ボタンを押下します。

dify new menu

現在(2025/11/26)の最新バージョン(v1.10.0)では、開始ノードを選択する機能が追加されていました。
今回は「ユーザー入力」を選択します。

dify select start

開始ノードが作成され、ワークフロー編集画面が表示されます。

dify start

次にワークフローのキャンバス上で右クリックし、表示されるメニューから「ブロックを追加」を選択します。
次に「HTTPリクエスト」を選択します。

dify right clieck menu

次にワークフローのキャンバス上で右クリックし、表示されるメニューから「ブロックを追加」を選択します。
次に「HTTPリクエスト」を選択すると、マウスにHTTPリクエストブロックが追従しますので、それをキャンバス内に配置します。

http request menu.

この中に通信したい先を設定していきます。
今回は例として「livedoor 天気予報API(https://weather.tsukumijima.net/)」を使用しましょう。

API欄でメソッドを「GET」に設定し、URL欄にはAPIのエンドポイントを入力します。
次にこのAPIでは「city」というクエリパラメータが必要となりますが、折角なのでこちらは実行時にユーザが入力できる様にしていきます。

まず「ユーザー入力」ブロックを選択し、「入力フィールド」横の「+」ボタンを押下します。

dify user input block

押下すると入力フィールドが追加されますので、以下に設定します。

 ・フィールドタイプ: 短文
 ・変数名:input_city
 ・ラベル名: input_city
 ・最大長: 48(デフォルト)
 ・初期値: 130010(東京)
 ・必須: チェック有り

input menu

入力できたら次は入力ブロックとHTTPリクエストブロックを接続します。
ユーザー入力ブロックにマウスオーバーすると、右側に小さな丸が表示されますので、それをドラッグしてHTTPリクエストブロックに接続します。
これでユーザが入力した値をHTTPリクエストブロックで使用できる様になります。

次にHTTPリクエストブロックを選択し、「パラメータ」フィールドに以下を設定します。
入力欄で「/」を最初に入力すると、変数を指定できる様になります。

 ・キー: city (文字列を入力)
 ・値: input_city (変数から設定)


これでユーザが入力した都市IDがHTTPリクエストのクエリパラメータとして設定されます。

dify http request block setting

最後に結果を出力するための「出力」ブロックを追加します。
先程と同様にキャンバス上で右クリックし、表示されるメニューから「ブロックを追加」から「出力」を選択して配置します。
配置したら先程と同様にHTTPリクエストブロックと出力を接続します。
接続したら、出力ブロックを選択し、「出力内容」フィールドに以下を設定します。

 ・result: {{HTTPリクエスト.body}}

これでHTTPリクエストのレスポンスボディが出力される様になります。

dify output block

それでは最後に「テスト実行」ボタンを押下して動作確認をしてみましょう。 入力欄は初期値か、または
全国の地点定義表から都市IDを参照して入力してください。

test run input

実行すると実行結果が表示されます。
正常に動作していれば指定した都市の天気予報データがJSON形式で表示されます。

dify result output

以上でシンプルなワークフローの作成と実行が完了です。

4. Dify実践: LLMとの連携

ワークフローの基本操作が理解できたところで、次はDifyのコア機能と言えるLLMとの連携を試してみましょう。

4-1. 初期設定(LLM設定)

まずは使用するLLMの設定を行います。

ヘッダーのアカウントメニューから「設定」を選択します。

dify-1-image15.webp

次に設定メニューから「モデルプロバイダー」を選択します。
すると使用できるLLMを提供するサービス一覧が表示されます。

今回は「Gemini」を使用しますので、「Gemini」カードにマウスオーバーし、「インストール」ボタンを押下します。

ここで注意してほしいのが、インストールしたモデルプロバイダーはアンインストールできません(謎仕様)。
その為無駄にインストールしない様に注意してください。「消させろー!」ってなります(なりました)。

model list

インストールが完了したら、次にAPIキーを設定します。
「Gemini」カードの「セットアップ」ボタンを押下し、表示されたモーダル内にGeminiのAPIキーを入力します。
APIキーが正しければ使用できるモデル一覧が表示される様になります。
※GeminiのAPIキーの取得方法については本記事では割愛します。公式ドキュメント等を参照してください。

install complete インストール完了時の表示

setup complete Geminiセットアップ画面

setup gemini セットアップ完了時のGeminiサービス内モデル一覧

以上でLLMを使う準備ができました!

4-2. ワークフローでLLMを使ってみる

それでは実際にLLMを使ったワークフローを作成してみましょう。
先程作成したワークフロー編集画面に戻り、キャンバス上で右クリックし、表示されるメニューから「ブロックを追加」を選択します。
次に「LLM」を選択してLLMブロックをワークフロー内に配置します。

dify-1-image20.webp

配置したら先程と同様にLLMブロックを編集します。
「AIモデル」欄に先程セットアップしたGeminiモデルを選択します。
今回は一定量まで無料枠で使用できる「Gemini 2.5 Flash」を選択します。

また今回やりたいこととして、現在のワークフローでは1次細分区定義表内の都市IDを入力させていますが、ここからいちいちIDを調べるのは面倒です。
そこでLLMに都市名から都市IDを調べてもらい、そのIDを使用して天気予報APIに問い合わせる様にしてみましょう。

SYSTEMプロンプト欄には以下を設定します。

https://weather.tsukumijima.net/primary_area.xml に定義されている、入力された地名に一番近い1次細分区域の都市IDを取得してください

USERプロンプト欄には先頭に「/」を入力し、変数選択モードに切り替えた上で、「input_city」変数を選択して設定します。

最後にこのLLMブロックの実行結果を見る為、出力ブロックにLLMブロックを接続し、出力変数にLLMブロックの出力「text」を設定します。
全ての設定ができましたら、「テスト実行」ボタンを押下して動作確認をしてみましょう。

dify test

実行すると実行結果が表示されます。
正常に動作していれば指定した都市名に対応する都市IDが表示されますが、余計なテキストが大量に含まれてしまっていますね。

dify test result 1

この結果を天気予報のAPIにそのまま渡してもエラーになってしまいます。
そこでLLMブロックのSYSTEMプロンプトを以下の様に修正してみましょう。
「出力形式を明示的に指定する」ことで、LLMの出力をコントロールします。

https://weather.tsukumijima.net/primary_area.xml に定義されている、入力された地名に一番近い一次細分区域の都市IDを取得してください。
出力は都市IDのみとし、他のテキストは一切含めないでください。

そして再度「テスト実行」ボタンを押下して動作確認をしてみます。

dify test result 2

しっかりIDのみが取得できていますね!
あとはLLMブロックの出力をHTTPリクエストブロックのパラメータに設定すれば、都市名から天気予報を取得できるワークフローが完成します。

dify work flow compete 完成したワークフロー

dify result complete 最終実行結果

ばっちり東京の天気情報が取得できましたね!
以上でLLMを使ったワークフローの作成と実行が完了です!

5. まとめ

本記事ではDifyの基本的な使い方と、LLMとの連携方法について紹介しました。

Difyはノーコード/ローコードでAIアプリケーションを作成できる便利なツールですが、ご覧の通りある程度のプログラミング知識が必要となるかと思います。
更に複雑なことをやろうとすると、通常のブロックだけでは実現できず、コードブロックを使用してJavaScriptやPythonで処理を書く必要が出てきます。

また今回は触れていませんでしたが、今回のワークフローの場合、LLMが返す都市IDが不正確な場合があり、その場合は天気予報APIからエラーが返ってしまいます。
こういったケースに対応するには、エラーハンドリングやリトライ処理を実装するなどの工夫が必要となってきます。AIによる不確実性を考慮した設計が求められる点は、他のLLM連携ツールと同様です。
ちなみに今回は数回の試行の内、1回謎のIDを出力していました。

しかしプログラムを理解している人が、複数サービスのAPIを組み合わせてAIアプリケーションを手軽に作成するツールとしては非常に有用であるとは感じます。
以前も「Yahoo Pipes」の様な複数のAPIを組み合わせることができるマッシュアップサービスが数多くありましたが、そのAI対応版でしょうか。
※残念ながらYahoo Pipesは2015年にサービス終了しました。当時は「マッシュアップ」という言葉と共に流行ったんですけど一緒に廃れましたね。

また冒頭に出てきましたが、少し前までスケジュールトリガ機能がありませんでしたが、現在では実装された模様ですので、より多様なユースケースに対応できる様になっているかと思います。
今後もDifyの機能追加や改善が進むことが期待されますので、興味がある方は是非試してみてください。

次回は「DifyとMCPサーバーの連携」について紹介します。

関連記事

MCP実践:公式・SaaS・OSS、3つの導入方法を試す。第3部 OSS MCPサーバー

  1. はじめに 2. OSS MCPサーバーを使ってみよう  2-1. 準備フェーズ   ①OSS MCPサーバーをGitHubからダウンロード   ②OSS MCPサーバーを構築   ③VS CodeにMCPサーバー情報を設定   ④動きませんでした。そしてその対策。  2-2. 実行フェーズ   ①Agentを実行しよう   ②実行ログを見て、通信の動きを確認しよう 3. まとめ 4. MCPサーバーの

記事詳細
MCP実践:公式・SaaS・OSS、3つの導入方法を試す。第3部 OSS MCPサーバー
生成AI
[AWS re:Invent 2025 速報] 新サービス:AWS AI Factories

はじめに 1. AWS AI Factories とは:AI 運用の課題をまとめて解決する新モデル 2. AWS AI Factories を構成する要素 3. AWS AI Factories がもたらす企業メリット さいごに はじめに 今年もラスベガスにて、世界最大級のクラウドカンファレンス「AWS re:Invent 2025」が開催されました。 今年のre:InventではAIに関するサービスのアップデートが中心となって

記事詳細
[AWS re:Invent 2025 速報] 新サービス:AWS AI Factories
AWS 生成AI
[AWS re:Invent2025 速報] 見逃せない!?AWS MCP ServerのPreview開始!

はじめに 基本の確認:MCPサーバーとは何か? AWS MCP Serverの核心機能 AWS MCP Server:何が嬉しい?! はじめに Amazon Web Services(AWS)が2025年11月30日に「AWS MCP Server」をプレビュー版として公開しました! 参照:AWS announces a preview of the AWS MCP Server 「本番VPC作っておいて。」とAIエージェントに指示を出せ

記事詳細
[AWS re:Invent2025 速報] 見逃せない!?AWS MCP ServerのPreview開始!
AWS 生成AI
MCP実践:公式・SaaS・OSS、3つの導入方法を試す。第2部 Zapier MCPサーバー

1. はじめに 2. Zapier MCPサーバーを使ってみよう  2-1. 準備フェーズ   ①Zapierでアカウントを作成   ②ZapierでMCPサーバーを構築   ③VS CodeにMCPサーバー情報を設定  2-2. 実行フェーズ   ①Agentを実行しよう   ②Zapierの実行履歴(History)を確認しよう 3. まとめ 1. はじめに ブログをご覧の皆さまこんにちは。エ

記事詳細
MCP実践:公式・SaaS・OSS、3つの導入方法を試す。第2部 Zapier MCPサーバー
生成AI

お問い合わせはこちらから