Moderação Automatizada
Configuração do Sistema de Moderação Automatizado. Isso utiliza um mecanismo de pontuação para rastrear violações do usuário. À medida que os usuários cometem ações como logins, registros ou mensagens excessivas, eles acumulam pontuações de violação. Ao atingir um limite definido, o usuário e seu IP são banidos temporariamente. Este sistema garante a segurança da plataforma monitorando e penalizando atividades rápidas ou suspeitas.
O Automated Moderation System utiliza um mecanismo de pontuação para rastrear violações dos usuários. À medida que os usuários cometem ações como excesso de logins, registros ou envio de mensagens, eles acumulam pontos de violação. Ao atingir um limite definido, o usuário e seu IP são banidos temporariamente. Este sistema garante a segurança da plataforma ao monitorar e penalizar atividades rápidas ou suspeitas.
Em produção, você deve ter o Cloudflare ou alguma outra proteção contra DDoS implementada para realmente proteger o servidor contra solicitações excessivas, mas essas alterações protegerão você em grande parte contra um ou vários agentes mal-intencionados que visam sua instância implantada para proxy.
Para mais detalhes, consulte o guia do usuário fornecido aqui: Moderação Automatizada
Configuração
Abaixo estão todas as variáveis de ambiente relacionadas para utilizar e configurar o sistema de mods. Observe que isso também pode ser encontrado no arquivo /.env.example, para ser definido em seu próprio arquivo .env.
Nota: atualmente, a maioria desses valores é configurada através do arquivo .env, mas eles podem migrar em breve para serem configurados exclusivamente a partir do arquivo de configuração librechat.yaml.
Violação, Intervalo, Duração
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | Se deve ou não habilitar o banimento de usuários por violações (eles ainda serão registrados). | BAN_VIOLATIONS=true |
| BAN_DURATION | integer | Por quanto tempo o usuário e o IP associado serão banidos (em milissegundos). | BAN_DURATION=1000 * 60 * 60 * 2 |
| BAN_INTERVAL | integer | O usuário será banido toda vez que sua pontuação atingir/ultrapassar o limite do intervalo. | BAN_INTERVAL=20 |
A pontuação para cada violação
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | Pontuação para violações de login. | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | Pontuação para violações de registro. | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | Pontuação para violações simultâneas. | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | Pontuação para violações de mensagem. | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | Pontuação para violações fora do navegador. | NON_BROWSER_VIOLATION_SCORE=20 |
| IMPORT_VIOLATION_SCORE | integer | Pontuação para violações de importação de conversas. | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | Pontuação para violações de ramificação de conversa. | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | Pontuação para violações de conversão de texto em fala. | TTS_VIOLATION_SCORE=0 |
| STT_VIOLATION_SCORE | integer | Pontuação para violações de conversão de fala em texto. | STT_VIOLATION_SCORE=0 |
| FILE_UPLOAD_VIOLATION_SCORE | integer | Pontuação para violações de upload de arquivo. | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | Pontuação para violações de redefinição de senha. | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | Pontuação para violações de verificação de e-mail. | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | Pontuação para violações de chamada de ferramenta. | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | Pontuação para violações de acesso à conversa. | CONVO_ACCESS_VIOLATION_SCORE=0 |
Limitação de taxa de login e registro.
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | number | A quantidade máxima de logins permitida por IP por LOGIN_WINDOW. O padrão é `7`. | |
| LOGIN_WINDOW | number | Em minutos, determina a janela de tempo para LOGIN_MAX logins. O padrão é `5`. | |
| REGISTER_MAX | number | A quantidade máxima de registros permitida por IP por REGISTER_WINDOW. O padrão é `5`. | |
| REGISTER_WINDOW | number | Em minutos, determina a janela de tempo para REGISTER_MAX registros. O padrão é `60`. |
Limitação de taxa de mensagens
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | Se deve limitar a quantidade de mensagens que um usuário pode enviar por solicitação. | LIMIT_CONCURRENT_MESSAGES=true |
| CONCURRENT_MESSAGE_MAX | integer | A quantidade máxima de mensagens que um usuário pode enviar por solicitação. | CONCURRENT_MESSAGE_MAX=2 |
Nota: Você pode utilizar ambos os limitadores, mas o padrão é limitar apenas por IP.
Limitação de taxa de mensagens (por IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | Se deve limitar a quantidade de mensagens que um IP pode enviar por `MESSAGE_IP_WINDOW`. | LIMIT_MESSAGE_IP=true |
| MESSAGE_IP_MAX | integer | A quantidade máxima de mensagens que um IP pode enviar por `MESSAGE_IP_WINDOW`. | MESSAGE_IP_MAX=40 |
| MESSAGE_IP_WINDOW | integer | Em minutos, determina a janela de tempo para `MESSAGE_IP_MAX` mensagens. | MESSAGE_IP_WINDOW=1 |
Limitação de taxa de mensagens (por Usuário)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | Se deve limitar a quantidade de mensagens que um usuário pode enviar por `MESSAGE_USER_WINDOW`. | LIMIT_MESSAGE_USER=false |
| MESSAGE_USER_MAX | integer | A quantidade máxima de mensagens que um usuário pode enviar por `MESSAGE_USER_WINDOW`. | MESSAGE_USER_MAX=40 |
| MESSAGE_USER_WINDOW | integer | Em minutos, determina a janela de tempo para `MESSAGE_USER_MAX` mensagens. | MESSAGE_USER_WINDOW=1 |
Limitação de taxa de importação de conversas
Limita a frequência com que os usuários podem importar conversas para evitar abusos.
Nota: Você pode utilizar ambos os limitadores, mas o padrão é limitar apenas por IP.
Limitação de taxa de importação de conversas (por IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | Se deve limitar a quantidade de importações de conversas que um IP pode realizar por `IMPORT_IP_WINDOW`. | LIMIT_IMPORT_IP=true |
| IMPORT_IP_MAX | integer | A quantidade máxima de importações de conversas que um IP pode realizar por `IMPORT_IP_WINDOW`. | IMPORT_IP_MAX=100 |
| IMPORT_IP_WINDOW | integer | Em minutos, determina a janela de tempo para as importações de `IMPORT_IP_MAX`. | IMPORT_IP_WINDOW=1 |
Limite de taxa de importação de conversas (por Usuário)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | Se deve limitar a quantidade de importações de conversa que um usuário pode realizar por `IMPORT_USER_WINDOW`. | LIMIT_IMPORT_USER=false |
| IMPORT_USER_MAX | integer | A quantidade máxima de importações de conversas que um usuário pode realizar por `IMPORT_USER_WINDOW`. | IMPORT_USER_MAX=50 |
| IMPORT_USER_WINDOW | integer | Em minutos, determina a janela de tempo para as importações de `IMPORT_USER_MAX`. | IMPORT_USER_WINDOW=1 |
Limitação de taxa de bifurcação de conversas
Limita a frequência com que usuários podem realizar fork de conversas para evitar abusos.
Nota: Você pode utilizar ambos os limitadores, mas o padrão é limitar apenas por IP.
Limite de taxa de bifurcação de conversas (por IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | Se deve limitar a quantidade de ramificações de conversa que um IP pode criar por `FORK_IP_WINDOW`. | LIMIT_FORK_IP=true |
| FORK_IP_MAX | integer | A quantidade máxima de ramificações de conversa que um IP pode criar por `FORK_IP_WINDOW`. | FORK_IP_MAX=30 |
| FORK_IP_WINDOW | integer | Em minutos, determina a janela de tempo para `FORK_IP_MAX` forks. | FORK_IP_WINDOW=1 |
Limite de taxa de bifurcação de conversas (por Usuário)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | Se deve limitar a quantidade de ramificações de conversa que um usuário pode criar por `FORK_USER_WINDOW`. | LIMIT_FORK_USER=false |
| FORK_USER_MAX | integer | A quantidade máxima de ramificações de conversa que um usuário pode criar por `FORK_USER_WINDOW`. | FORK_USER_MAX=7 |
| FORK_USER_WINDOW | integer | Em minutos, determina a janela de tempo para `FORK_USER_MAX` forks. | FORK_USER_WINDOW=1 |
Solicitações de modelo inválidas
Nota: Solicitações de modelo ilegais são quase sempre nefastas, pois significam que terceiros estão tentando acessar o servidor por meio de um script automatizado. Para isso, recomendo uma pontuação relativamente alta, não inferior a 5.
| Key | Type | Description | Example |
|---|---|---|---|
| ILLEGAL_MODEL_REQ_SCORE | integer | Pontuação para solicitações de modelo ilegais. | ILLEGAL_MODEL_REQ_SCORE=5 |
Moderação de texto da OpenAI
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | Se deve ou não habilitar a moderação da OpenAI nos endpoints **OpenAI** e **Plugins**. | OPENAI_MODERATION=false |
| OPENAI_MODERATION_API_KEY | string | Sua chave de API da OpenAI. | OPENAI_MODERATION_API_KEY= |
Observe que isso pode não funcionar com todos os reverse proxies:
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION_REVERSE_PROXY | string | Nota: Comentado por padrão, isso não funciona com todos os reverse proxys. | # OPENAI_MODERATION_REVERSE_PROXY= |
Como está este guia?
Substituição do Docker
Use um arquivo docker-compose.override.yml para personalizar a configuração Docker do LibreChat sem editar o docker-compose.yml principal.
Rastreamento Langfuse
Este documento explica como integrar o rastreamento do Langfuse ao LibreChat para obter observabilidade completa em suas conversas com IA.