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

自动审核

自动化审核系统配置。该系统使用评分机制来追踪用户违规行为。当用户进行频繁登录、注册或发送消息等操作时,会累积违规分数。一旦达到设定的阈值,该用户及其 IP 将被暂时封禁。该系统通过监控并惩罚快速或可疑的活动来确保平台安全。

自动审核系统使用评分机制来跟踪用户违规行为。当用户进行诸如频繁登录、注册或发送消息等操作时,他们会积累违规分数。一旦达到设定的阈值,该用户及其 IP 地址将被暂时封禁。该系统通过监控并惩罚快速或可疑的活动,确保了平台的安全性。

在生产环境中,您应该部署 Cloudflare 或其他 DDoS 防护措施,以真正保护服务器免受过度请求的影响,但这些更改将在很大程度上保护您免受针对您已部署实例进行代理的个别或少数恶意行为者的攻击。

有关更多详细信息,请参阅此处提供的用户指南:Automated Moderation

设置

以下是用于使用和配置 mod 系统相关的所有环境变量。请注意,这些变量也可在 /.env.example 文件中找到,需在您自己的 .env 文件中进行设置。

注意: 目前,这些值大多通过 .env 文件进行配置,但它们可能很快会迁移为仅通过 librechat.yaml 配置文件进行配置。

违规、间隔、持续时间

KeyTypeDescriptionExample
BAN_VIOLATIONSboolean是否启用对违规用户的封禁(他们仍将被记录)。BAN_VIOLATIONS=true
BAN_DURATIONinteger用户及关联 IP 被封禁的时长(以毫秒为单位)。BAN_DURATION=1000 * 60 * 60 * 2
BAN_INTERVALinteger每当用户的分数达到或超过区间阈值时,该用户都将被封禁。BAN_INTERVAL=20

每次违规的评分

KeyTypeDescriptionExample
LOGIN_VIOLATION_SCOREinteger登录违规评分。LOGIN_VIOLATION_SCORE=1
REGISTRATION_VIOLATION_SCOREinteger注册违规评分。REGISTRATION_VIOLATION_SCORE=1
CONCURRENT_VIOLATION_SCOREinteger并发违规评分。CONCURRENT_VIOLATION_SCORE=1
MESSAGE_VIOLATION_SCOREinteger消息违规评分。MESSAGE_VIOLATION_SCORE=1
NON_BROWSER_VIOLATION_SCOREinteger非浏览器违规评分NON_BROWSER_VIOLATION_SCORE=20
IMPORT_VIOLATION_SCOREinteger导入对话违规的评分。IMPORT_VIOLATION_SCORE=1
FORK_VIOLATION_SCOREinteger对话分支违规评分。FORK_VIOLATION_SCORE=1
TTS_VIOLATION_SCOREinteger文本转语音违规评分。TTS_VIOLATION_SCORE=0
STT_VIOLATION_SCOREinteger语音转文字违规评分。STT_VIOLATION_SCORE=0
FILE_UPLOAD_VIOLATION_SCOREinteger文件上传违规评分。FILE_UPLOAD_VIOLATION_SCORE=0
RESET_PASSWORD_VIOLATION_SCOREinteger密码重置违规得分。RESET_PASSWORD_VIOLATION_SCORE=0
VERIFY_EMAIL_VIOLATION_SCOREinteger电子邮件验证违规的评分。VERIFY_EMAIL_VIOLATION_SCORE=0
TOOL_CALL_VIOLATION_SCOREinteger工具调用违规评分。TOOL_CALL_VIOLATION_SCORE=0
CONVO_ACCESS_VIOLATION_SCOREinteger会话访问违规的评分。CONVO_ACCESS_VIOLATION_SCORE=0

登录和注册速率限制。

KeyTypeDescriptionExample
LOGIN_MAXnumber每个 IP 在每个 LOGIN_WINDOW 内允许的最大登录次数。默认为 `7`。
LOGIN_WINDOWnumber以分钟为单位,确定 LOGIN_MAX 次登录的时间窗口。默认值为 `5`。
REGISTER_MAXnumber每个 IP 在每个 REGISTER_WINDOW 内允许的最大注册次数。默认为 `5`。
REGISTER_WINDOWnumber以分钟为单位,确定 REGISTER_MAX 注册的时间窗口。默认为 `60`。

消息速率限制

KeyTypeDescriptionExample
LIMIT_CONCURRENT_MESSAGESboolean是否限制用户每次请求可发送的消息数量。LIMIT_CONCURRENT_MESSAGES=true
CONCURRENT_MESSAGE_MAXinteger用户每次请求可发送的最大消息数量。CONCURRENT_MESSAGE_MAX=2

注意:您可以同时使用两种限制器,但默认仅按 IP 进行限制。

消息速率限制(按 IP)

KeyTypeDescriptionExample
LIMIT_MESSAGE_IPboolean是否限制每个 IP 在 `MESSAGE_IP_WINDOW` 内可以发送的消息数量。LIMIT_MESSAGE_IP=true
MESSAGE_IP_MAXinteger一个 IP 在 `MESSAGE_IP_WINDOW` 内可以发送的最大消息数量。MESSAGE_IP_MAX=40
MESSAGE_IP_WINDOWinteger以分钟为单位,确定 `MESSAGE_IP_MAX` 条消息的时间窗口。MESSAGE_IP_WINDOW=1

消息速率限制(按用户)

KeyTypeDescriptionExample
LIMIT_MESSAGE_USERboolean是否限制用户在 `MESSAGE_USER_WINDOW` 时间内可以发送的消息数量。LIMIT_MESSAGE_USER=false
MESSAGE_USER_MAXinteger用户在 `MESSAGE_USER_WINDOW` 时间窗口内可以发送的最大消息数量。MESSAGE_USER_MAX=40
MESSAGE_USER_WINDOWinteger以分钟为单位,确定 `MESSAGE_USER_MAX` 消息的时间窗口。MESSAGE_USER_WINDOW=1

导入对话速率限制

限制用户导入对话的频率,以防止滥用。

注意:您可以同时使用两种限制器,但默认仅按 IP 进行限制。

导入对话速率限制(按 IP)

KeyTypeDescriptionExample
LIMIT_IMPORT_IPboolean是否限制每个 IP 在 `IMPORT_IP_WINDOW` 时间窗口内可以执行的对话导入次数。LIMIT_IMPORT_IP=true
IMPORT_IP_MAXinteger每个 IP 在 `IMPORT_IP_WINDOW` 时间内可以执行的最大对话导入次数。IMPORT_IP_MAX=100
IMPORT_IP_WINDOWinteger以分钟为单位,确定 `IMPORT_IP_MAX` 导入的时间窗口。IMPORT_IP_WINDOW=1

导入对话速率限制(按用户)

KeyTypeDescriptionExample
LIMIT_IMPORT_USERboolean是否限制用户在每个 `IMPORT_USER_WINDOW` 内可以执行的对话导入次数。LIMIT_IMPORT_USER=false
IMPORT_USER_MAXinteger用户在每个 `IMPORT_USER_WINDOW` 期间可以执行的最大对话导入次数。IMPORT_USER_MAX=50
IMPORT_USER_WINDOWinteger以分钟为单位,确定 `IMPORT_USER_MAX` 导入的时间窗口。IMPORT_USER_WINDOW=1

对话分叉速率限制

限制用户分叉对话的频率,以防止滥用。

注意:您可以同时使用两种限制器,但默认仅按 IP 进行限制。

对话分叉速率限制(按 IP)

KeyTypeDescriptionExample
LIMIT_FORK_IPboolean是否限制每个 IP 在 `FORK_IP_WINDOW` 时间内可以创建的对话分支数量。LIMIT_FORK_IP=true
FORK_IP_MAXinteger一个 IP 在 `FORK_IP_WINDOW` 时间内可以创建的最大对话分支数量。FORK_IP_MAX=30
FORK_IP_WINDOWinteger以分钟为单位,确定 `FORK_IP_MAX` 分叉的时间窗口。FORK_IP_WINDOW=1

对话分叉速率限制(按用户)

KeyTypeDescriptionExample
LIMIT_FORK_USERboolean是否限制用户在 `FORK_USER_WINDOW` 时间内可以创建的对话分支数量。LIMIT_FORK_USER=false
FORK_USER_MAXinteger用户在每个 `FORK_USER_WINDOW` 内可以创建的最大对话分支数量。FORK_USER_MAX=7
FORK_USER_WINDOWinteger以分钟为单位,确定 `FORK_USER_MAX` 分叉的时间窗口。FORK_USER_WINDOW=1

非法模型请求

注意:非法的模型请求几乎总是恶意的,这意味着第三方正试图通过自动化脚本访问服务器。为此,我建议设置一个相对较高的分数,不低于 5。

KeyTypeDescriptionExample
ILLEGAL_MODEL_REQ_SCOREinteger非法模型请求的评分。ILLEGAL_MODEL_REQ_SCORE=5

OpenAI 文本审核

KeyTypeDescriptionExample
OPENAI_MODERATIONboolean是否在 **OpenAI** 和 **Plugins** endpoint 上启用 OpenAI 审核功能。OPENAI_MODERATION=false
OPENAI_MODERATION_API_KEYstring您的 OpenAI API key。OPENAI_MODERATION_API_KEY=

请注意,这可能无法在所有反向代理中正常工作:

KeyTypeDescriptionExample
OPENAI_MODERATION_REVERSE_PROXYstring注意:默认情况下已注释,此功能并非适用于所有反向代理。# OPENAI_MODERATION_REVERSE_PROXY=

这篇指南怎么样?