チャットワークフロー - レート制限に関する質問, チャットワークフロー - レート制限に関する質問

皆様、こんにちは:

私はDifyのチャットワークフローを実装し、パブリックネットワーク上で一般ユーザーが利用できるようにしようとしていますが、悪意のあるユーザーが大量のチャットリクエストを送信して大規模モデルのAPIトークンを消費するのを防ぐ方法を検討する必要があります。リクエスト制限(レートリミット)の実装が必要です。現在、セーフチャットという機能があり、ユーザーIDに基づいて制限をかけることができます。

image

しかし、私はユーザーのIPアドレスに基づいて制限をかけたいと考えています。これは可能でしょうか?

たとえば、開発中の def _invoke(self, parameters: Dict[str, Any]) -> Generator[ToolInvokeMessage, None, None] というメソッドのパラメータには、ユーザーのIPアドレスは含まれていないですよね!

  1. 現在考えている実装方法は、チャットワークフローをAPI経由で呼び出す際に、隠しパラメータとしてIPアドレスを追加し、API呼び出し時にその隠しパラメータにIPを渡す方法です。しかし、この方法では公式のWebページを利用できなくなります。
  2. 公式のWebページを使用したい場合、APIモジュールがIPパラメータをプラグインツールの呼び出しに透過的に渡す仕組みを実装する必要がありますが、これは非常に複雑でしょうか?
  3. 公式のWebページを使用しながら、IPベースのレートリミットを実装するには、どのようにすればよいでしょうか?

皆様のご助言をお願いいたします!!!

心より感謝申し上げます!!!

依然として、ゲートウェイのNginx層でのレート制限の概念しかできない!!!