Moderación automatizada
Configuración del Sistema de Moderación Automatizado. Este utiliza un mecanismo de puntuación para rastrear las infracciones de los usuarios. A medida que los usuarios realizan acciones como inicios de sesión, registros o envío de mensajes excesivos, acumulan puntuaciones de infracción. Al alcanzar un umbral establecido, el usuario y su IP son bloqueados temporalmente. Este sistema garantiza la seguridad de la plataforma mediante la supervisión y penalización de actividades rápidas o sospechosas.
El Sistema de Moderación Automatizado utiliza un mecanismo de puntuación para realizar un seguimiento de las infracciones de los usuarios. A medida que los usuarios realizan acciones como inicios de sesión, registros o envío de mensajes excesivos, acumulan puntuaciones de infracción. Al alcanzar un umbral establecido, el usuario y su IP son bloqueados temporalmente. Este sistema garantiza la seguridad de la plataforma al monitorear y penalizar actividades rápidas o sospechosas.
En producción, debería contar con Cloudflare u otra protección DDoS implementada para proteger realmente el servidor contra solicitudes excesivas, pero estos cambios le protegerán en gran medida de uno o varios actores malintencionados que intenten utilizar su instancia desplegada como proxy.
Para más detalles, consulte la guía del usuario proporcionada aquí: Moderación automatizada
Configuración
Las siguientes son todas las variables de entorno relacionadas para utilizar y configurar el sistema de mods. Ten en cuenta que esto también se encuentra en el archivo /.env.example, para ser configurado en tu propio archivo .env.
Nota: actualmente, la mayoría de estos valores se configuran a través del archivo .env, pero pronto podrían migrar para configurarse exclusivamente desde el archivo de configuración librechat.yaml.
Infracción, Intervalo, Duración
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | Si se debe habilitar o no la prohibición de usuarios por infracciones (seguirán siendo registrados). | BAN_VIOLATIONS=true |
| BAN_DURATION | integer | Cuánto tiempo se bloquea al usuario y a la IP asociada (en milisegundos). | BAN_DURATION=1000 * 60 * 60 * 2 |
| BAN_INTERVAL | integer | El usuario será baneado cada vez que su puntuación alcance o supere el umbral del intervalo. | BAN_INTERVAL=20 |
La puntuación para cada infracción
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | Puntuación para infracciones de inicio de sesión. | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | Puntuación por infracciones de registro. | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | Puntuación para infracciones simultáneas. | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | Puntuación para infracciones de mensajes. | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | Puntuación para infracciones que no son del navegador. | NON_BROWSER_VIOLATION_SCORE=20 |
| IMPORT_VIOLATION_SCORE | integer | Puntuación para infracciones de importación de conversaciones. | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | Puntuación para infracciones de bifurcación de conversación. | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | Puntuación para infracciones de texto a voz. | TTS_VIOLATION_SCORE=0 |
| STT_VIOLATION_SCORE | integer | Puntuación para infracciones de conversión de voz a texto. | STT_VIOLATION_SCORE=0 |
| FILE_UPLOAD_VIOLATION_SCORE | integer | Puntuación para violaciones de carga de archivos. | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | Puntuación para infracciones de restablecimiento de contraseña. | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | Puntuación para infracciones de verificación de correo electrónico. | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | Puntuación para infracciones de llamadas a herramientas. | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | Puntuación para violaciones de acceso a la conversación. | CONVO_ACCESS_VIOLATION_SCORE=0 |
Limitación de tasa de inicio de sesión y registro.
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | number | La cantidad máxima de inicios de sesión permitidos por IP por LOGIN_WINDOW. El valor predeterminado es `7`. | |
| LOGIN_WINDOW | number | En minutos, determina la ventana de tiempo para LOGIN_MAX inicios de sesión. El valor predeterminado es `5`. | |
| REGISTER_MAX | number | La cantidad máxima de registros permitidos por IP por REGISTER_WINDOW. El valor predeterminado es `5`. | |
| REGISTER_WINDOW | number | En minutos, determina la ventana de tiempo para los registros de REGISTER_MAX. El valor predeterminado es `60`. |
Limitación de tasa de mensajes
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | Si se debe limitar la cantidad de mensajes que un usuario puede enviar por solicitud. | LIMIT_CONCURRENT_MESSAGES=true |
| CONCURRENT_MESSAGE_MAX | integer | La cantidad máxima de mensajes que un usuario puede enviar por solicitud. | CONCURRENT_MESSAGE_MAX=2 |
Nota: Puede utilizar ambos limitadores, pero el valor predeterminado es limitar solo por IP.
Limitación de tasa de mensajes (por IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | Si se debe limitar la cantidad de mensajes que una IP puede enviar por `MESSAGE_IP_WINDOW`. | LIMIT_MESSAGE_IP=true |
| MESSAGE_IP_MAX | integer | La cantidad máxima de mensajes que una IP puede enviar por `MESSAGE_IP_WINDOW`. | MESSAGE_IP_MAX=40 |
| MESSAGE_IP_WINDOW | integer | En minutos, determina la ventana de tiempo para `MESSAGE_IP_MAX` mensajes. | MESSAGE_IP_WINDOW=1 |
Limitación de tasa de mensajes (por Usuario)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | Si se debe limitar la cantidad de mensajes que un usuario puede enviar por `MESSAGE_USER_WINDOW`. | LIMIT_MESSAGE_USER=false |
| MESSAGE_USER_MAX | integer | La cantidad máxima de mensajes que un usuario puede enviar por `MESSAGE_USER_WINDOW`. | MESSAGE_USER_MAX=40 |
| MESSAGE_USER_WINDOW | integer | En minutos, determina la ventana de tiempo para `MESSAGE_USER_MAX` mensajes. | MESSAGE_USER_WINDOW=1 |
Límite de tasa de importación de conversaciones
Limita la frecuencia con la que los usuarios pueden importar conversaciones para prevenir abusos.
Nota: Puede utilizar ambos limitadores, pero el valor predeterminado es limitar solo por IP.
Límite de tasa de importación de conversaciones (por IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | Si se debe limitar la cantidad de importaciones de conversaciones que una IP puede realizar por `IMPORT_IP_WINDOW`. | LIMIT_IMPORT_IP=true |
| IMPORT_IP_MAX | integer | La cantidad máxima de importaciones de conversación que una IP puede realizar por `IMPORT_IP_WINDOW`. | IMPORT_IP_MAX=100 |
| IMPORT_IP_WINDOW | integer | En minutos, determina la ventana de tiempo para las importaciones de `IMPORT_IP_MAX`. | IMPORT_IP_WINDOW=1 |
Límite de tasa de importación de conversaciones (por Usuario)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | Determina si se debe limitar la cantidad de importaciones de conversaciones que un usuario puede realizar por `IMPORT_USER_WINDOW`. | LIMIT_IMPORT_USER=false |
| IMPORT_USER_MAX | integer | La cantidad máxima de importaciones de conversaciones que un usuario puede realizar por `IMPORT_USER_WINDOW`. | IMPORT_USER_MAX=50 |
| IMPORT_USER_WINDOW | integer | En minutos, determina la ventana de tiempo para las importaciones de `IMPORT_USER_MAX`. | IMPORT_USER_WINDOW=1 |
Limitación de tasa de bifurcación de conversaciones
Limita la frecuencia con la que los usuarios pueden bifurcar (fork) conversaciones para prevenir abusos.
Nota: Puede utilizar ambos limitadores, pero el valor predeterminado es limitar solo por IP.
Limitación de tasa de bifurcación de conversaciones (por IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | Si se debe limitar la cantidad de bifurcaciones de conversación que una IP puede crear por `FORK_IP_WINDOW`. | LIMIT_FORK_IP=true |
| FORK_IP_MAX | integer | La cantidad máxima de bifurcaciones de conversación que una IP puede crear por `FORK_IP_WINDOW`. | FORK_IP_MAX=30 |
| FORK_IP_WINDOW | integer | En minutos, determina la ventana de tiempo para las bifurcaciones de `FORK_IP_MAX`. | FORK_IP_WINDOW=1 |
Limitación de tasa de bifurcación de conversaciones (por Usuario)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | Si se debe limitar la cantidad de bifurcaciones de conversación que un usuario puede crear por `FORK_USER_WINDOW`. | LIMIT_FORK_USER=false |
| FORK_USER_MAX | integer | La cantidad máxima de bifurcaciones de conversación que un usuario puede crear por `FORK_USER_WINDOW`. | FORK_USER_MAX=7 |
| FORK_USER_WINDOW | integer | En minutos, determina la ventana de tiempo para las bifurcaciones de `FORK_USER_MAX`. | FORK_USER_WINDOW=1 |
Solicitudes de modelos no permitidas
Nota: Las solicitudes de modelos ilegales casi siempre son nefastas, ya que significan que un tercero está intentando acceder al servidor a través de un script automatizado. Para esto, recomiendo una puntuación relativamente alta, no menor a 5.
| Key | Type | Description | Example |
|---|---|---|---|
| ILLEGAL_MODEL_REQ_SCORE | integer | Puntuación para solicitudes de modelos ilegales. | ILLEGAL_MODEL_REQ_SCORE=5 |
Moderación de texto de OpenAI
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | Si habilitar o no la moderación de OpenAI en los endpoints **OpenAI** y **Plugins**. | OPENAI_MODERATION=false |
| OPENAI_MODERATION_API_KEY | string | Tu clave de API de OpenAI. | OPENAI_MODERATION_API_KEY= |
Ten en cuenta que esto podría no funcionar con todos los proxies inversos:
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION_REVERSE_PROXY | string | Nota: Comentado por defecto, esto no funciona con todos los proxies inversos. | # OPENAI_MODERATION_REVERSE_PROXY= |
¿Qué te parece esta guía?