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サーバーの連携」について紹介します。

関連記事

ループエンジニアリングとは?生成AIエージェント時代の「回る仕組み」の設計

生成AIを活用した開発では、近年「ループ(loop)」という考え方が重要視されるようになっています。AnthropicはClaude Codeに関するドキュメントや技術ブログで、エージェントが「停止条件を満たすまで自律的に作業を繰り返すループ」を基本的な実行モデルとして説明しています。 Anthropic の Claude Code チームは、エージェントの活用について「プロンプトを書くこと」から「ループを設計すること」への移行が起きていると表現していま

記事詳細
ループエンジニアリングとは?生成AIエージェント時代の「回る仕組み」の設計
生成AI
WalmartはAIをどう業務に組み込んだのか?AI BPRで読み解く業務変革の内容

Walmartは生成AIを活用した翻訳エンジンを作り、翻訳コストを99%削減しました。年間約2,500万ドルかけていた翻訳作業を、AIを組み込んだ「Walmart Translation Platform(WTP)」に置き換えることに成功しました。成功のポイントは、単純に単語を置き換える(翻訳する)ことではなく、意味・意図を汲んで訳したことでした。 その成功のポイントを整理すると、AWSが提唱する「AI BPR」というフレームワークとの類似性が見えてきま

記事詳細
WalmartはAIをどう業務に組み込んだのか?AI BPRで読み解く業務変革の内容
AWS 生成AI
書類の「目視チェック」を生成AIで劇的に効率化─ AWS RAPIDの導入の勧め

はじめに AWS RAPIDとは AWS RAPIDによる書類審査デモ AWS RAPIDのプロンプト改良で精度向上 AWS RAPIDの「嬉しい点」とまとめ おわりに はじめに 書類審査業務のDXを実現する「AWS RAPID」 設計書や契約書、申請書などの書類審査業務は、多くの組織で重要な業務の一つです。 しかし実際の現場では、「チェック項目が多すぎる」「確認する書類が膨大」「審査に時間がかかる」といった悩みを抱えている方

記事詳細
書類の「目視チェック」を生成AIで劇的に効率化─ AWS RAPIDの導入の勧め
AWS 生成AI
データと現場の声をAIエージェントが分析!「SMART」で作る新しい店舗運営のカタチ

はじめに 環境構築手順 Store Manager Agentで実現できること まとめ 1.はじめに 店舗運営において、こんなお悩みはありませんか。 売上データは見ているが、次に何をすべきか判断に迷う 売場づくりや品揃えが、どうしてもベテラン頼みになってしまう 在庫・売上・時間帯など、考えるべき要素が多すぎる 数字の振り返りはしているものの、改善アクションに落とし込めない こうした課題は、特定の業種だけのものではありません。 例えば、 ス

記事詳細
データと現場の声をAIエージェントが分析!「SMART」で作る新しい店舗運営のカタチ
AWS データ分析 生成AI

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