Modération automatisée
Configuration du système de modération automatisé. Celui-ci utilise un mécanisme de score pour suivre les violations des utilisateurs. À mesure que les utilisateurs effectuent des actions telles que des connexions, des inscriptions ou des envois de messages excessifs, ils accumulent des scores de violation. Une fois un seuil défini atteint, l'utilisateur et son IP sont temporairement bannis. Ce système assure la sécurité de la plateforme en surveillant et en pénalisant les activités rapides ou suspectes.
Le système de modération automatisé utilise un mécanisme de score pour suivre les violations des utilisateurs. Lorsque les utilisateurs effectuent des actions telles que des connexions, des inscriptions ou des envois de messages excessifs, ils accumulent des scores de violation. Une fois un seuil défini atteint, l'utilisateur et son adresse IP sont temporairement bannis. Ce système garantit la sécurité de la plateforme en surveillant et en pénalisant les activités rapides ou suspectes.
En production, vous devriez mettre en place Cloudflare ou une autre protection DDoS pour réellement protéger le serveur contre les requêtes excessives, mais ces changements vous protégeront en grande partie contre un ou plusieurs acteurs malveillants ciblant votre instance déployée pour faire du proxy.
Pour plus de détails, consultez le guide de l'utilisateur fourni ici : Modération automatisée
Configuration
Voici toutes les variables d'environnement associées pour utiliser et configurer le système de mod. Notez que celles-ci se trouvent également dans le fichier /.env.example, à définir dans votre propre fichier .env.
Note : actuellement, la plupart de ces valeurs sont configurées via le fichier .env, mais elles pourraient bientôt migrer pour être exclusivement configurées à partir du fichier de configuration librechat.yaml.
Violation, Interval, Duration
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | Indique si le bannissement des utilisateurs pour infractions doit être activé ou non (ils seront toujours enregistrés). | BAN_VIOLATIONS=true |
| BAN_DURATION | integer | Durée pendant laquelle l'utilisateur et l'adresse IP associée sont bannis (en millisecondes). | BAN_DURATION=1000 * 60 * 60 * 2 |
| BAN_INTERVAL | integer | L'utilisateur sera banni chaque fois que son score atteindra ou dépassera le seuil de l'intervalle. | BAN_INTERVAL=20 |
Le score pour chaque violation
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | Score pour les violations de connexion. | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | Score pour les violations d'inscription. | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | Score pour les violations simultanées. | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | Score pour les violations de message. | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | Score pour les violations hors navigateur. | NON_BROWSER_VIOLATION_SCORE=20 |
| IMPORT_VIOLATION_SCORE | integer | Score pour les violations d'importation de conversation. | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | Score pour les violations de bifurcation de conversation. | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | Score pour les violations de synthèse vocale. | TTS_VIOLATION_SCORE=0 |
| STT_VIOLATION_SCORE | integer | Score pour les violations de conversion parole-texte. | STT_VIOLATION_SCORE=0 |
| FILE_UPLOAD_VIOLATION_SCORE | integer | Score pour les violations de téléchargement de fichiers. | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | Score pour les violations de réinitialisation de mot de passe. | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | Score pour les violations de vérification d'e-mail. | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | Score pour les violations d'appel d'outil. | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | Score pour les violations d'accès aux conversations. | CONVO_ACCESS_VIOLATION_SCORE=0 |
Limitation du taux de connexion et d'inscription.
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | number | Le nombre maximum de connexions autorisées par IP par LOGIN_WINDOW. La valeur par défaut est `7`. | |
| LOGIN_WINDOW | number | En minutes, détermine la fenêtre de temps pour LOGIN_MAX connexions. La valeur par défaut est `5`. | |
| REGISTER_MAX | number | Le nombre maximum d'inscriptions autorisées par IP par REGISTER_WINDOW. La valeur par défaut est `5`. | |
| REGISTER_WINDOW | number | En minutes, détermine la fenêtre temporelle pour les inscriptions REGISTER_MAX. La valeur par défaut est `60`. |
Limitation du débit des messages
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | Indique s'il faut limiter le nombre de messages qu'un utilisateur peut envoyer par requête. | LIMIT_CONCURRENT_MESSAGES=true |
| CONCURRENT_MESSAGE_MAX | integer | Le nombre maximal de messages qu'un utilisateur peut envoyer par requête. | CONCURRENT_MESSAGE_MAX=2 |
Remarque : Vous pouvez utiliser les deux limiteurs, mais la valeur par défaut est de limiter uniquement par IP.
Limitation du débit de messages (par IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | Indique s'il faut limiter le nombre de messages qu'une IP peut envoyer par `MESSAGE_IP_WINDOW`. | LIMIT_MESSAGE_IP=true |
| MESSAGE_IP_MAX | integer | Le nombre maximal de messages qu'une IP peut envoyer par `MESSAGE_IP_WINDOW`. | MESSAGE_IP_MAX=40 |
| MESSAGE_IP_WINDOW | integer | En minutes, détermine la fenêtre de temps pour `MESSAGE_IP_MAX` messages. | MESSAGE_IP_WINDOW=1 |
Limitation du débit des messages (par utilisateur)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | Indique s'il faut limiter le nombre de messages qu'un utilisateur peut envoyer par `MESSAGE_USER_WINDOW`. | LIMIT_MESSAGE_USER=false |
| MESSAGE_USER_MAX | integer | Le nombre maximal de messages qu'un utilisateur peut envoyer par `MESSAGE_USER_WINDOW`. | MESSAGE_USER_MAX=40 |
| MESSAGE_USER_WINDOW | integer | En minutes, détermine la fenêtre temporelle pour `MESSAGE_USER_MAX` messages. | MESSAGE_USER_WINDOW=1 |
Limitation du taux d'importation de conversations
Limite la fréquence à laquelle les utilisateurs peuvent importer des conversations pour prévenir les abus.
Remarque : Vous pouvez utiliser les deux limiteurs, mais la valeur par défaut est de limiter uniquement par IP.
Limitation du taux d'importation de conversations (par IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | Indique s'il faut limiter le nombre d'importations de conversations qu'une adresse IP peut effectuer par `IMPORT_IP_WINDOW`. | LIMIT_IMPORT_IP=true |
| IMPORT_IP_MAX | integer | Le nombre maximal d'importations de conversations qu'une adresse IP peut effectuer par `IMPORT_IP_WINDOW`. | IMPORT_IP_MAX=100 |
| IMPORT_IP_WINDOW | integer | En minutes, détermine la fenêtre temporelle pour les importations `IMPORT_IP_MAX`. | IMPORT_IP_WINDOW=1 |
Limitation du taux d'importation de conversations (par utilisateur)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | Indique s'il faut limiter le nombre d'importations de conversations qu'un utilisateur peut effectuer par `IMPORT_USER_WINDOW`. | LIMIT_IMPORT_USER=false |
| IMPORT_USER_MAX | integer | Le nombre maximal d'importations de conversations qu'un utilisateur peut effectuer par `IMPORT_USER_WINDOW`. | IMPORT_USER_MAX=50 |
| IMPORT_USER_WINDOW | integer | En minutes, détermine la fenêtre temporelle pour les importations `IMPORT_USER_MAX`. | IMPORT_USER_WINDOW=1 |
Limitation du taux de forking de conversation
Limite la fréquence à laquelle les utilisateurs peuvent forker des conversations pour prévenir les abus.
Remarque : Vous pouvez utiliser les deux limiteurs, mais la valeur par défaut est de limiter uniquement par IP.
Limitation du taux de forking de conversation (par IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | Indique s'il faut limiter le nombre de ramifications de conversation qu'une adresse IP peut créer par `FORK_IP_WINDOW`. | LIMIT_FORK_IP=true |
| FORK_IP_MAX | integer | Le nombre maximal de bifurcations de conversation qu'une IP peut créer par `FORK_IP_WINDOW`. | FORK_IP_MAX=30 |
| FORK_IP_WINDOW | integer | En minutes, détermine la fenêtre temporelle pour les forks `FORK_IP_MAX`. | FORK_IP_WINDOW=1 |
Limitation du taux de forking de conversation (par utilisateur)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | Détermine s'il faut limiter le nombre de ramifications de conversation qu'un utilisateur peut créer par `FORK_USER_WINDOW`. | LIMIT_FORK_USER=false |
| FORK_USER_MAX | integer | Le nombre maximal de ramifications de conversation qu'un utilisateur peut créer par `FORK_USER_WINDOW`. | FORK_USER_MAX=7 |
| FORK_USER_WINDOW | integer | En minutes, détermine la fenêtre temporelle pour les forks `FORK_USER_MAX`. | FORK_USER_WINDOW=1 |
Requêtes de modèles illégales
Remarque : Les requêtes de modèles illégales sont presque toujours malveillantes, car cela signifie qu'une tierce partie tente d'accéder au serveur via un script automatisé. Pour cela, je recommande un score relativement élevé, pas inférieur à 5.
| Key | Type | Description | Example |
|---|---|---|---|
| ILLEGAL_MODEL_REQ_SCORE | integer | Score pour les requêtes de modèle illégales. | ILLEGAL_MODEL_REQ_SCORE=5 |
Modération de texte OpenAI
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | Indique s'il faut activer la modération OpenAI sur les endpoints **OpenAI** et **Plugins**. | OPENAI_MODERATION=false |
| OPENAI_MODERATION_API_KEY | string | Votre clé API OpenAI. | OPENAI_MODERATION_API_KEY= |
Notez que cela pourrait ne pas fonctionner avec tous les reverse proxies :
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION_REVERSE_PROXY | string | Remarque : Commenté par défaut, ceci ne fonctionne pas avec tous les reverse proxys. | # OPENAI_MODERATION_REVERSE_PROXY= |
Que pensez-vous de ce guide ?