Algomatic Tech Blog

Algomaticの開発チームによる Tech Blog です

Dify最大の弱点と、その克服方法について

ネタバレ

  • Dify 最大の弱点は「ワークフローの大量実行が難しい」ことです
  • 私たちはこの問題をGoogle スプレッドシート + GAS で克服しました
  • コピーしてすぐに使えるテンプレートを公開するので、ぜひ取り入れてみてください

テンプレートはこちら。 docs.google.com

はじめに

こんにちは、Algomatic ネオセールスカンパニーで営業 AI エージェント 「アポドリ」 を開発している 末國 です。

前回の記事では「アポドリは 1日1万回 の Dify 呼び出しで回っている」とお伝えしました。

今回の記事では、非エンジニアでも Dify を大量実行できるようにした、すぐに真似できるワークフローの全容を紹介します。

tech.algomatic.jp


Dify のワークフローは大量実行しにくい

“大量実行”が前提のはずなのに……

  • 営業リストや商品データなど、数百行単位で同じ処理を回すケースは日常茶飯事
  • ワークフローの開発段階でも AB テスト → プロンプト改善 → 再テスト で何百回も叩くのが普通

組み込み UI からバッチ処理が可能だが、課題あり

組み込みUIの特徴 辛いこと
CSVアップロード必須 いちいちCSVファイルを用意する必要がある
認証なしで全世界に公開される 社外秘データを扱いづらい
出力が「CSV の中に JSON カラム」 結果をパッと確認できず、可読性が最悪
同時実行数を制御できない LLM の RPM/TPM リミットがきついと即エラーになる

結果、「UI をポチポチ」か「エンジニアに API 自動化を依頼」の二択になり、非エンジニアが触れないのが実情です。

組み込みのバッチ実行UI

スプレッドシート × GAS は全てを解決する

以下、実際に私たちが運用しているフローを追体験してみてください。

0. ワークフローを作成し、公開

今回は「2つの数値を受け取り、その四則演算の結果をJSONで出力する」ワークフローを例にしていきます。

1. テンプレートのスプレッドシートをコピー

2. Config シートを編集

- `API_KEY` に Dify のキーを貼り付け
- `MAX_CONCURRENCY` に並列数(RPM/TPM 等に合わせて、ギリギリを攻める)
キー
DIFY_ENDPOINT Difyのエンドポイント
DIFY_API_KEY ワークフローのAPIキー(呼び出すワークフローごとに異なる)
MAX_CONCURRENCY 最大並列実行数
PROTECTED_SHEETS シート一括削除の際にも保護したいシートの名前

APIキーとエンドポイントの取得方法
Configシート

⚠️ API KEYは本来スプレッドシート上に記載するべきではありませんが、今回は簡易的にこのような実装にしています。

3. Data シートに入力

- パラメータを行単位で貼り付けるだけ
- 1行目の値でワークフローの入力の名前を指定(ここでは`NUMBER_1`, `NUMBER_2`)

DataシートにDifyに渡すデータを記入

4. カスタムメニュー → 実行する

- カスタムメニューから「実行する」をクリック
- Dataシートの全行がMAX_CONCURRENCYの価まで並列に実行される

カスタムメニュー

5. 処理完了を待つ

6. 自動整形された結果を確認

- 処理が終了すると、結果が新たなシートに記入される
- 全ての出力が、いい感じにフラットになって表示される(実行結果ごとに出力項目が違っても問題なし)
- 出力ノードで指定した変数ごとに、ヘッダーの色が変わる

出力シート

7. 実際のDifyのログとの照合も簡単

- `UUID` をコピペ → Dify のログ検索で一発

はじめ方

こちらのスプレッドシートをコピーすれば、すぐに使い始めることができます。

ただし、GASのタイムアウトの制約上、一千件・一万件を実行することはできない点にご注意ください。

おわりに

ここまで読んでいただきありがとうございました! Algomatic では一緒に 営業 AI エージェントを育てる仲間を絶賛募集中です。

(今回はDifyの記事したが、ちゃんとコードも書いてます!)

興味を持っていただいた方、ぜひお声掛けください!

jobs.algomatic.jp