Zautomatyzowana moderacja
Konfiguracja zautomatyzowanego systemu moderacji. Wykorzystuje on mechanizm punktacji do śledzenia naruszeń użytkowników. Gdy użytkownicy wykonują działania takie jak nadmierna liczba logowań, rejestracji lub wysyłania wiadomości, gromadzą punkty naruszeń. Po osiągnięciu określonego progu użytkownik oraz jego adres IP są tymczasowo blokowani. System ten zapewnia bezpieczeństwo platformy poprzez monitorowanie i karanie gwałtownych lub podejrzanych aktywności.
Zautomatyzowany system moderacji wykorzystuje mechanizm punktacji do śledzenia naruszeń użytkowników. Gdy użytkownicy wykonują działania takie jak nadmierna liczba logowań, rejestracji lub wysyłanie wiadomości, gromadzą punkty naruszeń. Po osiągnięciu określonego progu użytkownik oraz jego adres IP są tymczasowo blokowani. System ten zapewnia bezpieczeństwo platformy poprzez monitorowanie i karanie gwałtownych lub podejrzanych aktywności.
W środowisku produkcyjnym powinieneś korzystać z Cloudflare lub innego zabezpieczenia przed atakami DDoS, aby skutecznie chronić serwer przed nadmierną liczbą zapytań, jednak te zmiany w dużej mierze ochronią Cię przed pojedynczymi lub kilkoma nieuczciwymi użytkownikami, którzy obierają za cel Twoją wdrożoną instancję w celu wykorzystania jej jako proxy.
Aby uzyskać więcej szczegółów, zapoznaj się z przewodnikiem użytkownika dostępnym tutaj: Automated Moderation
Konfiguracja
Poniżej znajdują się wszystkie powiązane zmienne środowiskowe, których można użyć do skonfigurowania systemu modów. Zauważ, że znajdują się one również w pliku /.env.example i należy je ustawić we własnym pliku .env.
Uwaga: obecnie większość tych wartości jest konfigurowana za pomocą pliku .env, ale wkrótce mogą one zostać przeniesione do wyłącznej konfiguracji z poziomu librechat.yaml pliku konfiguracyjnego.
Naruszenie, Interwał, Czas trwania
| Key | Type | Description | Example |
|---|---|---|---|
| BAN_VIOLATIONS | boolean | Czy włączyć możliwość banowania użytkowników za naruszenia (nadal będą oni rejestrowani). | BAN_VIOLATIONS=true |
| BAN_DURATION | integer | Czas trwania blokady użytkownika i powiązanego adresu IP (w milisekundach). | BAN_DURATION=1000 * 60 * 60 * 2 |
| BAN_INTERVAL | integer | Użytkownik będzie blokowany za każdym razem, gdy jego wynik osiągnie/przekroczy próg interwału. | BAN_INTERVAL=20 |
Wynik dla każdego naruszenia
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_VIOLATION_SCORE | integer | Wynik dla naruszeń logowania. | LOGIN_VIOLATION_SCORE=1 |
| REGISTRATION_VIOLATION_SCORE | integer | Wynik za naruszenia rejestracji. | REGISTRATION_VIOLATION_SCORE=1 |
| CONCURRENT_VIOLATION_SCORE | integer | Wynik dla naruszeń współbieżnych. | CONCURRENT_VIOLATION_SCORE=1 |
| MESSAGE_VIOLATION_SCORE | integer | Wynik dla naruszeń wiadomości. | MESSAGE_VIOLATION_SCORE=1 |
| NON_BROWSER_VIOLATION_SCORE | integer | Wynik dla naruszeń spoza przeglądarki. | NON_BROWSER_VIOLATION_SCORE=20 |
| IMPORT_VIOLATION_SCORE | integer | Wynik dla naruszeń importu konwersacji. | IMPORT_VIOLATION_SCORE=1 |
| FORK_VIOLATION_SCORE | integer | Wynik dla naruszeń rozwidlenia konwersacji. | FORK_VIOLATION_SCORE=1 |
| TTS_VIOLATION_SCORE | integer | Wynik dla naruszeń zamiany tekstu na mowę (text-to-speech). | TTS_VIOLATION_SCORE=0 |
| STT_VIOLATION_SCORE | integer | Wynik dla naruszeń zamiany mowy na tekst. | STT_VIOLATION_SCORE=0 |
| FILE_UPLOAD_VIOLATION_SCORE | integer | Wynik dla naruszeń przesyłania plików. | FILE_UPLOAD_VIOLATION_SCORE=0 |
| RESET_PASSWORD_VIOLATION_SCORE | integer | Wynik dla naruszeń resetowania hasła. | RESET_PASSWORD_VIOLATION_SCORE=0 |
| VERIFY_EMAIL_VIOLATION_SCORE | integer | Wynik dla naruszeń weryfikacji adresu e-mail. | VERIFY_EMAIL_VIOLATION_SCORE=0 |
| TOOL_CALL_VIOLATION_SCORE | integer | Wynik dla naruszeń wywołań narzędzi. | TOOL_CALL_VIOLATION_SCORE=0 |
| CONVO_ACCESS_VIOLATION_SCORE | integer | Wynik dla naruszeń dostępu do konwersacji. | CONVO_ACCESS_VIOLATION_SCORE=0 |
Ograniczanie częstotliwości logowania i rejestracji.
| Key | Type | Description | Example |
|---|---|---|---|
| LOGIN_MAX | number | Maksymalna liczba logowań dozwolona na adres IP w ramach LOGIN_WINDOW. Domyślnie `7`. | |
| LOGIN_WINDOW | number | W minutach, określa przedział czasowy dla LOGIN_MAX logowań. Domyślnie `5`. | |
| REGISTER_MAX | number | Maksymalna liczba rejestracji dozwolona na adres IP w ramach REGISTER_WINDOW. Domyślnie `5`. | |
| REGISTER_WINDOW | number | W minutach, określa przedział czasowy dla REGISTER_MAX rejestracji. Domyślnie `60`. |
Ograniczanie częstotliwości wysyłania wiadomości
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_CONCURRENT_MESSAGES | boolean | Czy ograniczyć liczbę wiadomości, które użytkownik może wysłać w ramach jednego żądania. | LIMIT_CONCURRENT_MESSAGES=true |
| CONCURRENT_MESSAGE_MAX | integer | Maksymalna liczba wiadomości, które użytkownik może wysłać w ramach jednego żądania. | CONCURRENT_MESSAGE_MAX=2 |
Uwaga: Możesz korzystać z obu ograniczników, ale domyślnie ograniczenie odbywa się tylko według IP.
Ograniczanie częstotliwości wiadomości (na adres IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_IP | boolean | Czy ograniczyć liczbę wiadomości, które dany adres IP może wysłać w ramach `MESSAGE_IP_WINDOW`. | LIMIT_MESSAGE_IP=true |
| MESSAGE_IP_MAX | integer | Maksymalna liczba wiadomości, które adres IP może wysłać w ramach `MESSAGE_IP_WINDOW`. | MESSAGE_IP_MAX=40 |
| MESSAGE_IP_WINDOW | integer | W minutach, określa przedział czasowy dla `MESSAGE_IP_MAX` wiadomości. | MESSAGE_IP_WINDOW=1 |
Ograniczanie częstotliwości wysyłania wiadomości (na użytkownika)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_MESSAGE_USER | boolean | Czy ograniczyć liczbę wiadomości, które użytkownik może wysłać w ramach `MESSAGE_USER_WINDOW`. | LIMIT_MESSAGE_USER=false |
| MESSAGE_USER_MAX | integer | Maksymalna liczba wiadomości, które użytkownik może wysłać w ramach `MESSAGE_USER_WINDOW`. | MESSAGE_USER_MAX=40 |
| MESSAGE_USER_WINDOW | integer | W minutach określa przedział czasowy dla wiadomości `MESSAGE_USER_MAX`. | MESSAGE_USER_WINDOW=1 |
Limitowanie częstotliwości importowania konwersacji
Ogranicza częstotliwość importowania konwersacji przez użytkowników, aby zapobiec nadużyciom.
Uwaga: Możesz korzystać z obu ograniczników, ale domyślnie ograniczenie odbywa się tylko według IP.
Limitowanie szybkości importu konwersacji (na adres IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_IP | boolean | Czy ograniczyć liczbę importów konwersacji, które adres IP może wykonać w ramach `IMPORT_IP_WINDOW`. | LIMIT_IMPORT_IP=true |
| IMPORT_IP_MAX | integer | Maksymalna liczba importów konwersacji, które adres IP może wykonać w ramach `IMPORT_IP_WINDOW`. | IMPORT_IP_MAX=100 |
| IMPORT_IP_WINDOW | integer | W minutach określa przedział czasowy dla importów `IMPORT_IP_MAX`. | IMPORT_IP_WINDOW=1 |
Limitowanie szybkości importu konwersacji (na użytkownika)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_IMPORT_USER | boolean | Czy ograniczyć liczbę importów konwersacji, które użytkownik może wykonać w ramach `IMPORT_USER_WINDOW`. | LIMIT_IMPORT_USER=false |
| IMPORT_USER_MAX | integer | Maksymalna liczba importów konwersacji, które użytkownik może wykonać w ramach `IMPORT_USER_WINDOW`. | IMPORT_USER_MAX=50 |
| IMPORT_USER_WINDOW | integer | W minutach określa przedział czasowy dla importów `IMPORT_USER_MAX`. | IMPORT_USER_WINDOW=1 |
Ograniczanie częstotliwości forkowania konwersacji
Ogranicza częstotliwość, z jaką użytkownicy mogą forkować konwersacje, aby zapobiec nadużyciom.
Uwaga: Możesz korzystać z obu ograniczników, ale domyślnie ograniczenie odbywa się tylko według IP.
Limitowanie częstotliwości forkowania konwersacji (na adres IP)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_IP | boolean | Czy ograniczyć liczbę rozgałęzień konwersacji, które adres IP może utworzyć w ramach `FORK_IP_WINDOW`. | LIMIT_FORK_IP=true |
| FORK_IP_MAX | integer | Maksymalna liczba rozgałęzień konwersacji, które adres IP może utworzyć w ramach `FORK_IP_WINDOW`. | FORK_IP_MAX=30 |
| FORK_IP_WINDOW | integer | W minutach określa przedział czasowy dla `FORK_IP_MAX` forków. | FORK_IP_WINDOW=1 |
Limitowanie częstotliwości forkowania konwersacji (na użytkownika)
| Key | Type | Description | Example |
|---|---|---|---|
| LIMIT_FORK_USER | boolean | Czy ograniczyć liczbę rozgałęzień konwersacji, które użytkownik może utworzyć w ramach `FORK_USER_WINDOW`. | LIMIT_FORK_USER=false |
| FORK_USER_MAX | integer | Maksymalna liczba rozgałęzień konwersacji, które użytkownik może utworzyć w ramach `FORK_USER_WINDOW`. | FORK_USER_MAX=7 |
| FORK_USER_WINDOW | integer | W minutach, określa przedział czasowy dla forków `FORK_USER_MAX`. | FORK_USER_WINDOW=1 |
Niedozwolone żądania modelu
Uwaga: Nielegalne żądania modeli są prawie zawsze szkodliwe, ponieważ oznaczają, że podmiot zewnętrzny próbuje uzyskać dostęp do serwera za pomocą zautomatyzowanego skryptu. W tym przypadku zalecam stosunkowo wysoki wynik, nie mniejszy niż 5.
| Key | Type | Description | Example |
|---|---|---|---|
| ILLEGAL_MODEL_REQ_SCORE | integer | Wynik dla niedozwolonych żądań modelu. | ILLEGAL_MODEL_REQ_SCORE=5 |
Moderacja tekstu OpenAI
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION | boolean | Czy włączyć moderację OpenAI w endpointach **OpenAI** oraz **Plugins**. | OPENAI_MODERATION=false |
| OPENAI_MODERATION_API_KEY | string | Twój klucz API OpenAI. | OPENAI_MODERATION_API_KEY= |
Pamiętaj, że może to nie działać ze wszystkimi odwrotnymi serwerami proxy (reverse proxies):
| Key | Type | Description | Example |
|---|---|---|---|
| OPENAI_MODERATION_REVERSE_PROXY | string | Uwaga: Domyślnie zakomentowane, nie działa ze wszystkimi reverse proxys. | # OPENAI_MODERATION_REVERSE_PROXY= |
Jaka jest ta instrukcja?