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

しかし、私はユーザーのIPアドレスに基づいて制限をかけたいと考えています。これは可能でしょうか?
たとえば、開発中の def _invoke(self, parameters: Dict[str, Any]) -> Generator[ToolInvokeMessage, None, None] というメソッドのパラメータには、ユーザーのIPアドレスは含まれていないですよね!
- 現在考えている実装方法は、チャットワークフローをAPI経由で呼び出す際に、隠しパラメータとしてIPアドレスを追加し、API呼び出し時にその隠しパラメータにIPを渡す方法です。しかし、この方法では公式のWebページを利用できなくなります。
- 公式のWebページを使用したい場合、APIモジュールがIPパラメータをプラグインツールの呼び出しに透過的に渡す仕組みを実装する必要がありますが、これは非常に複雑でしょうか?
- 公式のWebページを使用しながら、IPベースのレートリミットを実装するには、どのようにすればよいでしょうか?
皆様のご助言をお願いいたします!!!
心より感謝申し上げます!!!