Difyのワークフロー開発、手作業でYAML書くの面倒だよね? 挙句、動作確認して修正、また修正……って、このループをClaude Codeにぶん投げちゃえばいいよ。
一番雑な投げ方
Difyワークフローの自動生成からインポート、評価、修正まで、Claude Codeに一気通貫でやらせるなら、まずこんな感じで投げてみて。
DifyワークフローのYAML生成から自動インポート、動作検証、修正ループまで含むパイプラインを構築して。
これだけで、Difyの自動化パイプラインの基本的な構成をClaude Codeが提案してくれるはずだよ。
もうちょい具体的に投げるパターン
もうちょっと具体的に要望を伝えると、さらにドンピシャな提案が返ってくるよ。
モデルを使い分けるパターン
YAML生成には賢いSonnet、評価には速いHaikuを使いたい、なんてときはこう伝えてみて。
DifyワークフローのYAML生成パイプラインを構築して。YAML生成はclaude-sonnet-4-6、動作検証後の評価と修正はclaude-haiku-4-5-20251001を使って。
ユースケースを具体的に伝えるパターン
「特定のデモを作りたいんだけど」ってときは、どんなデモか伝えてみるのが一番。例えば、製造業の異常検知のデモを作りたいなら、こんな感じ。
製造業の「設備ログ異常検知」デモ用のDifyワークフローYAMLを自動生成し、Dify APIでインポート、動作検証、修正ループまで一気通貫でできるPythonスクリプトを書いて。
既存のアーキテクチャを前提にするパターン
うちの環境はFastAPIとかDocker Composeで動いてるんだよね、って場合は、その情報を先に伝えておくと、より整合性の取れたコードが出てくるよ。
FastAPIとPython Orchestrator、Docker ComposeベースでDifyワークフローのYAML生成→自動インポート→評価→修正ループを自動化する仕組みを考えて。Difyは1.13.3のSelf-hosted版を使ってる。
実践例 / 実録
うちでは、営業メンバーがSlackから「こんなデモ作って」ってユースケースを投げたら、Claude CodeがDifyワークフローのYAMLを自動生成して、Difyにインポート、動作検証、修正まで自動でやって、翌朝には動くデモURLが渡せる仕組みを動かしてるんだ。
例えば、「製造業の異常検知、工場内の設備ログから異常を検知するDifyワークフローのデモ作って」って投げたら、Claude Codeはこんな感じで動いたよ。
- YAML生成: まず
claude-sonnet-4-6を使って、設備ログの入力、異常検知のロジック(LLMノードやCodeノードを組み合わせたもの)、結果の出力を含むDifyワークフローのYAMLをゴリゴリ生成した。 - Dify自動インポート: 生成されたYAMLは、Pythonスクリプト経由でDifyのConsole API(
/apps/importsエンドポイント)に自動でPOST。すると、DifyのAppコンソールに新しいワークフローがポンと現れた。 - 動作検証: Difyの公式Workflow APIを使って、生成されたワークフローがちゃんと動くか、想定通りの出力をするかをテストした。
- 結果評価と修正: ここで
claude-haiku-4-5-20251001の出番。テスト結果と元のユースケースを比較して、ワークフローのどこを直すべきかをフィードバック。例えば、「異常検知の閾値設定が甘い」とか「ログのパースがうまくいってない」みたいな具体的な指示が出てきた。 - 修正ループ: そのフィードバックを受けて、Claude CodeはすぐにYAMLを修正。またインポート、テスト、評価を繰り返して、最終的にE2Eでパスするワークフローが完成したんだ。
この一連の流れが自動で回るおかげで、Difyのデモ作成にかかる時間が劇的に減ったよ。特に製造業の帳票OCRとか、ナレッジQ&Aみたいな定番ユースケースは、ほぼノータイムでデモが量産できるようになったのはデカい。
つまずきポイント
この仕組みを作る上で、いくつかハマったところがあるから、みんなも気をつけてね。
Dify Console APIの認証
Difyのワークフローを自動インポートするときに使うConsole API(/apps/imports)は、公式ドキュメントで推奨されてるAPIキー認証じゃなくて、Cookie認証が必要だったんだ。これはちょっとイレギュラーだから、PythonのhttpxとかでHTTPリクエストを組むときは、ブラウザでログインした後のCookieをいい感じに取得して使う必要があるよ。最初はAPIキーで動かなくて焦った。
LLMモデルの使い分け
YAML生成に使うClaude APIのモデルと、Difyワークフロー内のLLMノードで使うモデルは、別々に設定しないといけないよ。うちの環境だと、YAML生成はSonnet、評価はHaiku、だけど、Difyワークフロー内のLLMノードは DIFY_{ENV}_DEFAULT_NODE_MODEL で設定する別のモデル(例: gpt-4o や gemini-2.5-flash)を使ってたから、ごっちゃにならないように注意が必要だよ。.env ファイルでしっかり分けて管理しないと、意図しないモデルが動いちゃうからね。