見出し画像

Difyとスクリプトの両用化が便利

Difyでの製作のあれこれを書いてみたいと思います。

最近、他社のDifyロジックの開発や修正案件を受けることも、少し多くなりました。
一つのワークフローだけで、3分以上もかかるようなフローを作ることもあります。
すこし難しめな課題だと、AI(llm)が40-60秒くらい処理がかかるので、それが何個かあると、3分を超えてきます。

スクリプトとDifyの両用


最近、Pythonなり、PHPでスクリプトを書いている途中で、一定のロジックをDifyで作り、それをAPI化して、スクリプト中に使うことをよくするようになりました。

Difyの方のロジックをもしテキストでスクリプトとして書いたら3,000行くらいありそうな内容が、API一つの呼び出しで、書けるので、
スクリプト中の視認性がかなり高くなります。

Difyだけでは、作れないツールなのですが、
できるだけ大きくの部分をDifyで作るようにしてみました。
それでも、全体の半分くらいではありますが。

スクリプトだけだと、どうしても処理の流れを追うのに、頭のリソースを使ってしまいますが、Difyにすると、本当にすっきり流れが見えますね。

ブロックの配置

ただ、Difyでブロックをたくさん作り、つなげると、
ブロックの配置が重要になりますね。
ブロック間の線が、ブロックにあまり隠れてしまわないようにとか
一定のグループに見えるように配置したくなり、
配置で時間がかかることもあります。

コストとllmの選択

処理数がおおいものを作ると、llmのコストが気になります。
けっこう真面目に、トークン数を調べて、各llmのAPIの料金表を見て、
1回のフローの処理に対する料金を調べたりします。
私の場合、内容によりますが、一ヶ月に10万件くらいの処理を何個かすることもありますので、コストを軽視していると、とんでもないことになりますので。
ある程度の精度があり、コストが安いのはGemini Flash1.5だと思うので、
それでできるものは、それで使うようにしています。

ただ、jsonでの出力を固定化したい時がよくあるので、その場合は、
gpt-4o-miniにします。
こちらの方が、すこしコストが高いです。
しかし、さくっとjsonでデータが固定できるので、次の処理に問題なく繋げやすいです。

llmの回答に満足できない時だけ、少しずつ上位版にしていきます。
話題のDeepSeekなども使えるようにしていますが、先日APIの通信エラーが長くあったので、あまり使っていません。

「コード」ブロックの多用

以前は、ノーコードツールで、「コード」ブロックの中にコードを書くのは、とてもナンセンスな気がしていました。
しかし、最近は、けっこう複雑なコードを「コード」ブロックの中に書くことも多いです。
既存のブロック、例えばURLのスクレイピングも、コードで書いてしまうことが多くなりました。
処理の速さだと、やはりコード処理の方が、他のAPIにつなげるよりも速いです。あと、API接続エラーとかも影響しないですから。

オリジナル外部APIの利用

「コード」で使えないモジュール、ライブラリなどがある場合は、
自分の外部サーバーにその機能の仕組みを作り、API化して、
Difyから呼び出して使うこともあります。
自分専用ですので、リソースの心配もほぼないので。

Difyのワークフローを別のワークフロー内に入れることは

自作のワークフローを別のワークフロー内で、一つのブロックとして使えるDifyの機能は、とても魅力的だと思っていたのですが、これをすると時間がかかります。あまりおすすめしません。
やはり、途中で別のワークフローを呼び出すのは、内部的に大変なのかもしれません。APIとかわらないほどの時間がかかります。もっとかかっているかもしれません。
ひとつのワークフローを、別のワークフローで流用する場合は、仕方ないので、ブラウザのタブを2つあげて、手作業でコピー(再作成)していっています。

最近のDify製作でのあれこれでした。
皆様の参考になれば、幸いです。

いいなと思ったら応援しよう!