不具合とその対処法として記事を公開しようと思っていたら、爆速で修正されたのでほぼ自分用備忘録になってしまいましたが供養として。
Difyにはスケジュールトリガーという機能があります。
こちらは名前の通り、組んだワークフローを定期実行するための機能であり、GUIもしくはcron式で自由に実行頻度やタイミングを設定することができます。
今回はこちらで踏んだバグとそのトラブルシューティングの記録を公開しようと思います。
前提として、Difyはタイトルの通りCloud版でプランはTeamです。
起きたバグ
当時自分は広告主向けサイトから来た申し込みのスパム判定のPoCを行おうとしていました。以下のようなワークフローです。
- 広告主向けサイトで申し込みがあると、Salesforceに保存された申し込み情報をwebhookを介してSlackに投稿
- Difyで以下のワークフローを定期実行
- スパム判定してない申し込みの投稿を取得
- スパム判定をして、結果をその投稿にメンション
- スパム判定したかどうかわかるようにリアクションを付与
とてもシンプルなワークフローだと思います。
テスト実行でも問題なかったので、こちらを公開することにしたのですが、申し込みが来ても実行されないし、そもそもワークフローのログを見ると一件もない状況でした。
効かなかった対処
トリガーが発火していないように見えたので、まずトリガー側を一通り疑いました。
- トリガーノードの作り直し
- DSLのエクスポートと再インポート
- cron式指定とビジュアル設定の切り替え
- ワークフローの再公開
どれも変化がありませんでした。同じワークスペースでは別のスケジュール起動ワークフローが正常に動いていたため、アカウントやプラン全体の問題とも考えにくく、当時の自分は首をかしげていました。
Issueを調べる
類似事例があるのでは、とAIにIssueを漁ってもらったところ以下のIssueを見つけてくれました。
LLM node returns "No permission to use this model" in Schedule-triggered workflow with Dify Managed Quota · Issue #30493 · langgenius/dify
スケジュールトリガーとクレジットを利用したAIを組み合わせるとワークフローが失敗するというものです。
もしかしてと思い、LLMを抜いたワークフローを作成し公開してみたところ、正常に動作しました。
Issue自体は自動で閉じられていたのですが、こちらがまだFixされていないのだろう、と推測しました。
問い合わせる
原因は分かったので対処を行うわけですが、こちらができることは2点です。
- APIキーを使うようにする
- サポートに問い合わせて、エスカレーションする
今回はまず後者を行なって、少し待ってから直らなければ前者を採用することにしました。
Difyにログイン後、左下のはてなマークをクリックするとドロップダウンが出るので、その中からお問い合わせを押すとチャットでやりとりができます。
最初にユーザー情報を求められるのでそちらを入力し、その後要件を聞かれるので今回のバグの内容を英語で伝えました。
すぐにチャットbotによる一時返信が届き、翌日サポートから「不具合が確認できたから、エンジニアチームに報告しました。修正をお待ちください」(意訳)というメッセージが届きました。
さらにその翌日にワークフローが正常に動作するようになり、その後修正されたと報告をいただきました。素早いサポートで非常に満足度高かったです。
まとめ
今回はDify Cloudで経験したトラブルシューティングを記事にしてみました。
不具合そのものは修正済みなので、いま同じ構成を作っても、この症状を踏むことはないはずです。
トラブルシューティングはAIの力を借りることでだいぶ楽になりましたが、人間の頑張りもまだまだ必要そうなので、勘所とかはもっと鍛えていきたいなと思います。