Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

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

KeyTypeDescriptionExample
BAN_VIOLATIONSbooleanIndique si le bannissement des utilisateurs pour infractions doit être activé ou non (ils seront toujours enregistrés).BAN_VIOLATIONS=true
BAN_DURATIONintegerDurée pendant laquelle l'utilisateur et l'adresse IP associée sont bannis (en millisecondes).BAN_DURATION=1000 * 60 * 60 * 2
BAN_INTERVALintegerL'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

KeyTypeDescriptionExample
LOGIN_VIOLATION_SCOREintegerScore pour les violations de connexion.LOGIN_VIOLATION_SCORE=1
REGISTRATION_VIOLATION_SCOREintegerScore pour les violations d'inscription.REGISTRATION_VIOLATION_SCORE=1
CONCURRENT_VIOLATION_SCOREintegerScore pour les violations simultanées.CONCURRENT_VIOLATION_SCORE=1
MESSAGE_VIOLATION_SCOREintegerScore pour les violations de message.MESSAGE_VIOLATION_SCORE=1
NON_BROWSER_VIOLATION_SCOREintegerScore pour les violations hors navigateur.NON_BROWSER_VIOLATION_SCORE=20
IMPORT_VIOLATION_SCOREintegerScore pour les violations d'importation de conversation.IMPORT_VIOLATION_SCORE=1
FORK_VIOLATION_SCOREintegerScore pour les violations de bifurcation de conversation.FORK_VIOLATION_SCORE=1
TTS_VIOLATION_SCOREintegerScore pour les violations de synthèse vocale.TTS_VIOLATION_SCORE=0
STT_VIOLATION_SCOREintegerScore pour les violations de conversion parole-texte.STT_VIOLATION_SCORE=0
FILE_UPLOAD_VIOLATION_SCOREintegerScore pour les violations de téléchargement de fichiers.FILE_UPLOAD_VIOLATION_SCORE=0
RESET_PASSWORD_VIOLATION_SCOREintegerScore pour les violations de réinitialisation de mot de passe.RESET_PASSWORD_VIOLATION_SCORE=0
VERIFY_EMAIL_VIOLATION_SCOREintegerScore pour les violations de vérification d'e-mail.VERIFY_EMAIL_VIOLATION_SCORE=0
TOOL_CALL_VIOLATION_SCOREintegerScore pour les violations d'appel d'outil.TOOL_CALL_VIOLATION_SCORE=0
CONVO_ACCESS_VIOLATION_SCOREintegerScore pour les violations d'accès aux conversations.CONVO_ACCESS_VIOLATION_SCORE=0

Limitation du taux de connexion et d'inscription.

KeyTypeDescriptionExample
LOGIN_MAXnumberLe nombre maximum de connexions autorisées par IP par LOGIN_WINDOW. La valeur par défaut est `7`.
LOGIN_WINDOWnumberEn minutes, détermine la fenêtre de temps pour LOGIN_MAX connexions. La valeur par défaut est `5`.
REGISTER_MAXnumberLe nombre maximum d'inscriptions autorisées par IP par REGISTER_WINDOW. La valeur par défaut est `5`.
REGISTER_WINDOWnumberEn 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

KeyTypeDescriptionExample
LIMIT_CONCURRENT_MESSAGESbooleanIndique s'il faut limiter le nombre de messages qu'un utilisateur peut envoyer par requête.LIMIT_CONCURRENT_MESSAGES=true
CONCURRENT_MESSAGE_MAXintegerLe 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)

KeyTypeDescriptionExample
LIMIT_MESSAGE_IPbooleanIndique s'il faut limiter le nombre de messages qu'une IP peut envoyer par `MESSAGE_IP_WINDOW`.LIMIT_MESSAGE_IP=true
MESSAGE_IP_MAXintegerLe nombre maximal de messages qu'une IP peut envoyer par `MESSAGE_IP_WINDOW`.MESSAGE_IP_MAX=40
MESSAGE_IP_WINDOWintegerEn 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)

KeyTypeDescriptionExample
LIMIT_MESSAGE_USERbooleanIndique s'il faut limiter le nombre de messages qu'un utilisateur peut envoyer par `MESSAGE_USER_WINDOW`.LIMIT_MESSAGE_USER=false
MESSAGE_USER_MAXintegerLe nombre maximal de messages qu'un utilisateur peut envoyer par `MESSAGE_USER_WINDOW`.MESSAGE_USER_MAX=40
MESSAGE_USER_WINDOWintegerEn 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)

KeyTypeDescriptionExample
LIMIT_IMPORT_IPbooleanIndique 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_MAXintegerLe nombre maximal d'importations de conversations qu'une adresse IP peut effectuer par `IMPORT_IP_WINDOW`.IMPORT_IP_MAX=100
IMPORT_IP_WINDOWintegerEn 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)

KeyTypeDescriptionExample
LIMIT_IMPORT_USERbooleanIndique 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_MAXintegerLe nombre maximal d'importations de conversations qu'un utilisateur peut effectuer par `IMPORT_USER_WINDOW`.IMPORT_USER_MAX=50
IMPORT_USER_WINDOWintegerEn 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)

KeyTypeDescriptionExample
LIMIT_FORK_IPbooleanIndique 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_MAXintegerLe nombre maximal de bifurcations de conversation qu'une IP peut créer par `FORK_IP_WINDOW`.FORK_IP_MAX=30
FORK_IP_WINDOWintegerEn 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)

KeyTypeDescriptionExample
LIMIT_FORK_USERbooleanDé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_MAXintegerLe nombre maximal de ramifications de conversation qu'un utilisateur peut créer par `FORK_USER_WINDOW`.FORK_USER_MAX=7
FORK_USER_WINDOWintegerEn 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.

KeyTypeDescriptionExample
ILLEGAL_MODEL_REQ_SCOREintegerScore pour les requêtes de modèle illégales.ILLEGAL_MODEL_REQ_SCORE=5

Modération de texte OpenAI

KeyTypeDescriptionExample
OPENAI_MODERATIONbooleanIndique s'il faut activer la modération OpenAI sur les endpoints **OpenAI** et **Plugins**.OPENAI_MODERATION=false
OPENAI_MODERATION_API_KEYstringVotre clé API OpenAI.OPENAI_MODERATION_API_KEY=

Notez que cela pourrait ne pas fonctionner avec tous les reverse proxies :

KeyTypeDescriptionExample
OPENAI_MODERATION_REVERSE_PROXYstringRemarque : Commenté par défaut, ceci ne fonctionne pas avec tous les reverse proxys.# OPENAI_MODERATION_REVERSE_PROXY=

Que pensez-vous de ce guide ?