はじめに
本記事では、DifyのDSLファイルをCursor上で自然言語から自動生成する方法を紹介します。
DifyはGUIでワークフローを作成できますが、規模が大きくなると編集や再利用が手間になります。そこで、Cursorを使ってDSL(YAML)ファイルを自動生成する手法を検証しました。
結論としては次の通りです。
- 単純なワークフローなら自然言語だけで生成可能
- Difyにそのまま取り込めるYAMLファイルが出力される
- CursorのWeb検索機能により外部仕様の参照も可能
まずは、このアプローチがなぜ有用なのかを整理し、その後で具体的な手順を紹介します。
この記事の対象者
- 普段からCursorを使っている方
- Difyを使ってAIアプリを開発している方
- AIアプリ開発の効率化・標準化を模索している方
なぜ「自然言語からDSLファイルを自動作成」するのか?
DifyのGUIによるアプリケーション開発は、プログラミングよりも直感的ですが、実用的なAIアプリケーションをゼロから構築し、管理・共有していく上では、いくつかの壁に直面します。
自然言語によるDSLファイルの自動生成は、これらの壁を乗り越え、開発プロセスを効率化する可能性があります。
1. GUI操作の壁
-
手間
ノードの配置、接続、詳細の設定に時間がかかります。 -
複雑化
ワークフローが大規模になると可読性が下がり、修正やデバッグが困難になります。 -
再利用性
似たワークフローを別アプリで再現する際、手作業が多く非効率です。
2. 自然言語による解決策
自然言語によるDSLファイルの自動生成は、これらの課題を解決するアプローチです。
-
開発の高速化
プロンプトを指示するだけで、ワークフローの下書きがすぐに完成し、開発の初期時間を短縮できます。 -
専門知識が不要
Difyの詳細なノード知識やGUI操作の習熟度に依存せず、「やりたいこと」を指示するだけでAIが雛形を生成します。
実際に作成してみる
今回はCursorのエージェント機能を使用してDSLファイルを作成していきます。
作成するのは、「PDFを読み取り、要約するワークフロー」です。このワークフローはGUIでの作成方法も紹介しているので、詳細はこちらをご覧ください。
完成イメージ
-
Cursorのチャット機能で「Agent」を選択し、作成したいワークフローについてのプロンプトを入力します。今回入力したプロンプトは以下です。
入力プロンプト
PDFを読み取り、LLMが要約するワークフローを作成して。 作成した.ymlファイルはworkflowsディレクトリに格納して。 -
Cursorで、DSLファイルを作成します。
プロンプトに沿った、ワークフローのyamlファイルが作成されます。
-
作成されたDSLファイルをDifyにアップロードすると、ワークフローが読み込まれます。
下記のような、PDFを読み取りLLMが要約するワークフローを読み込むことができました。
出力ワークフロー
1. 事前準備
-
作業用フォルダの作成
各種ファイルを整理するため、任意の場所に新しいフォルダを作成します。
2. 使用するリポジトリ
今回のDSLファイルの作成では、以下のリポジトリを使用しました。
このリポジトリは、DifyでワークフローのDSLファイルを自動生成するためのプロンプトとサンプルをまとめたものです。Dify内で動作するチャットボットを使い、自然言語からYAMLファイルを生成することを目的としています。
本記事では、このリポジトリで公開されているファイルをCursor上で利用します。
CursorのLLMにファイルを読み込ませることで、LLMがDifyのノード構造やワークフロー定義を理解し、ローカル環境で正しいDSLファイルを生成できるようになります。
Cursorを使うメリットは以下の通りです。
-
Web検索機能の活用
Cursorでは、LLMに対して「@web」を使って、外部仕様やAPIドキュメントをリアルタイムに検索・参照できます。プロンプト内に「@web」を入れるだけで、インターネット上の最新情報をAIが自動的に取り込み、より正確なDSL生成が可能になります。
この機能により、ノード設定や外部サービス連携の際に、ブラウザとエディタを行き来する手間を大きく減らせます。
-
YAML ファイルの自動生成
リポジトリの方式では、出来上がった YAML のコードをコピーして別ファイルにペーストし、その後 Difyにインポートする必要があります。
Cursorを使用すると、LLMが YAML ファイルの作成まで行うため、あとは Difyにインポートするだけで済みます。
3. 必要なファイルのダウンロード・配置
ここから、Cursor上で作業をします。先程作成した作業用のフォルダをCursorで開いてください。
まずは、リポジトリ内にある以下の3つのファイルをダウンロードし、docsというフォルダに保存してください。
-
DifyWorkflowGenerate.yml:ワークフロー生成用のDifyチャットボット定義 -
manual_search.yml:生成結果のサンプル -
workflow_generator_prompt.yml:ワークフロー生成プロンプトの定義
以下のような配置になっているか確認してください。
.
├── docs
│ ├── DifyWorkflowGenerate.yml
│ ├── manual_search.yml
│ └── workflow_generator_prompt.yml
次に、LLMにそれぞれのファイルがどのようなものかを知らせるルールをMarkdownで書いたものを配置します。.cursor/rules/workflow-rules.mdc というファイルを作成し、以下の内容を書き、保存してください。
---
description: "docs フォルダ内の YML ファイルを用いた Dify ワークフロー生成のルール"
globs:
- "docs/*.yml"
alwaysApply: false
---
# ワークフロー生成ルール
- docs フォルダ内の YML ファイル(DifyWorkflowGenerate.yml, manual_search.yml, workflow_generator_prompt.yml)を参照してワークフローを作成してください。
最後に、作成されるワークフローのDSLファイルを格納するフォルダworkflowsを作成します。
最終的に以下のような配置になっているか確認してください。
.
├── .cursor/rules/workflow-rules.mdc
├── docs
│ ├── DifyWorkflowGenerate.yml
│ ├── manual_search.yml
│ ├── workflow_generator_prompt.yml
└── workflows
4. ワークフローの作成
CursorでNew Chatを開き、Agentを選択します。
ワークフローを作成するためのプロンプトを書きます。以下のプロンプトを入力してください。
PDFを読み取り、LLMが要約するワークフローを作成して。作成した.ymlファイルはworkflowsディレクトリに格納して。
その後、送信してください。
「Keep all」を選択してください。
これでDSLファイルが作成されました。
5. ワークフローの動作確認
Difyで先程作成したDSLファイルをアップロードします。
ワークフローが作成されていることが確認できます。
「実行」ボタンを押し、PDFファイルをアップロードしたあと、「実行開始」を押してください。
今回使用したPDFファイルはこちらです。
問題なくワークフローが動作していることを確認できました。
今後の展望
課題と改善
- まれにノードが繋がれていない時があります。
- CursorのWeb検索機能を使うと更に正確にワークフローを作れる可能性があります。
さらに複雑なワークフローを作成したい場合
今回は「PDF読み取り→要約」という比較的単純な直線フローでした。もし、条件分岐(IF/ELSE)やループ(Iteration)を含む複雑なワークフローを作成したい場合は、どうすればよいでしょうか。
一つの有効なアプローチとして、Mermaid記法の活用が考えられます。
テキストでフローチャートやシーケンス図を記述できる記法です。
自然言語で曖昧に「Aの場合はB、Cの場合はD」と指示するよりも、Mermaidで処理の順序と分岐を視覚的に定義し、それをプロンプトとしてLLMに渡すことで、LLMはノード間の接続関係をより正確に理解し、DSLファイルに変換できると期待されます。
生成されたワークフローを修正する際の指針
LLMが生成したDSLファイルが期待通りに動かない場合の修正アプローチは、目的によって使い分けると効率的です。
-
Dify上で直接修正するケース:
- プロンプトの内容を少し変えたい。
- 使用するLLMモデルを変更したい(例:GPT-4oからClaude 3 Sonnetへ)。
- ノードの接続が1箇所だけ間違っている。
このような「微調整」は、DifyのGUI上で直接編集する方が簡単に済みます。
-
Cursorで再度指示するケース:
- ワークフローの根本的な構造が違う(例:使うノードが想定と全く違う)。
- 大幅にノードを追加・削除したい。
このような大きな修正がある場合は、Dify上で手作業するよりも、Cursorに戻ってプロンプトを修正し、再度DSLファイルを生成させる方が効率的な場合があります。
おわりに
本記事では、DifyのDSLファイルを自然言語から自動生成するアプローチについて、AI搭載エディタ「Cursor」を使った具体的な実践方法とともに紹介しました。
DifyのGUI操作は直感的ですが、ノードの接続や設定が増えるにつれて、ワークフローの構築・管理には手間がかかります。
自然言語でやりたいことを指示するだけでDSLファイルの下書きを生成できるこの方法は、開発の初期コストを大幅に削減し、開発を効率化する強力な手段となり得ます。
まずは簡単なワークフローの自動生成から、ぜひ試してみてはいかがでしょうか。