之前写创建知识库的时候,在文章内写了上传文件限制在15MB内,我也在文章着重提到了会在后面讲如何调整,但是写知识库的时候写到最后我把这事儿忘了,然后写工具的时候准备带上这块内容,也是因为有事耽误了,导致没有把这部分提上去。
其实这块很简单,修改配置文件即可,只是Dify的配置文件还是很多参数的,具体调整哪儿可能不仔细研究还不一定知道,我就想着那就讲一讲配置文件吧,这样除了解除15MB上传文件的限制,其余的一些配置项大家也能够了解了,遇到需要调整的时候,也知道怎么去操作了!
我先讲一下如何解除15MB限制的,需要调整的配置项:
# 知识库文件上传大小限制
UPLOAD_FILE_SIZE_LIMIT=1024
UPLOAD_FILE_BATCH_LIMIT=50
# 多模态 上传图片、视频、音频大小限制
UPLOAD_IMAGE_FILE_SIZE_LIMIT=1000
UPLOAD_VIDEO_FILE_SIZE_LIMIT=10000
UPLOAD_AUDIO_FILE_SIZE_LIMIT=50
# 调整总容量大小
NGINX_CLIENT_MAX_BODY_SIZE=150000M
设置完成后,需要重新启动一下Dify才能够实现效果,之前Docker启动的,需要执行下列命令:
docker compose down
docker compose up -d
在讲之前提一句,我的Dify目前是最新版本Version 0.15.3,经过迭代有很多配置项做了调整,如果是低版本建议更新到最新版本来看,如果你看到这篇文章的时候已经有高版本了,并且你需要调整配置项已经废弃,可以尝试留言,我会帮你解答!
Dify的配置文件就是我们在安装部署Dify这一篇文章中命令行操作的.env文件,其具体路径在dify/docker/.env。所有的配置项更改都需要重启Dify后才会生效!!!
要重启!!!要重启!!!要重启!!!
一、公共变量
CONSOLE_API_URL
控制台 API 后端 URL,用于拼接授权回调,传空则为同域。范例:https://api.console.dify.ai
CONSOLE_WEB_URL
控制台 web 前端 URL,用于拼接部分前端地址,以及 CORS 配置使用,传空则为同域。范例:https://console.dify.ai
SERVICE_API_URL
Service API URL,用于前端展示 Service API Base URL,传空则为同域。范例:https://api.dify.ai
APP_API_URL
WebApp API 后端 URL,用于声明前端 API 后端地址,传空则为同域。范例:https://app.dify.ai
APP_WEB_URL
WebApp URL,用于预览文件、前端展示下载用的 URL,以及作为多模型输入接口,传空则为同域。范例:https://udify.app/
FILES_URL
文件预览或下载 URL 前缀,用于将文件预览或下载 URL 给前端展示或作为多模态模型输入; 为了防止他人伪造,图片预览 URL 是带有签名的,并且有 5 分钟过期时间。
以上在部署服务器时,基于不同的功能给予不同的域名来区分,对于我们本地本机部署的,则全部为空,默认同域即可。
二、服务端
LOG_LEVEL | 日志输出等级,默认为 INFO。可设置`DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`生产建议设置为 ERROR。 |
---|---|
LOG_FILE | 日志文件路径,修改后可以调整日志文件。 |
LOG_FILE_MAX_SIZE | 日志文件最大大小,单位为MB。 |
LOG_FILE_BACKUP_COUNT | 日志文件最大备份数量。 |
LOG_DATEFORMAT | 日志日期格式。 |
LOG_TZ | 日志时区。 |
DEBUG | 调试模式,默认 false,建议本地开发打开该配置,可防止 monkey patch导致的一些问题出现。 |
---|---|
FLASK_DEBUG | Flask 调试模式,开启可在接口输出 trace 信息,方便调试。 |
SECRET_KEY | 一个用于安全地签名会话 cookie 并在数据库上加密敏感信息的密钥。初次启动需要设置改变量。可以运行 openssl rand -base64 42 生成一个强密钥。 |
DEPLOY_ENV
部署环境。
PRODUCTION(默认) 生产环境。
TESTING 测试环境,前端页面会有明显颜色标识,该环境为测试环境。
CHECK_UPDATE_URL
是否开启检查版本策略,默认设置https://updates.dify.ai进行版本检查。由于目前国内无法直接访问基于 CloudFlare Worker 的版本接口,设置该变量为空,可以屏蔽该接口调用。
MIGRATION_ENABLED
当设置为 true 时,会在容器启动时自动执行数据库迁移,仅使用 Docker 启动时可用,源码启动无效。源码启动需要在 api 目录手动执行
flask db upgrade
三、容器启动相关配置
这部分配置仅在Docker镜像或者Docker-Compose启动时有效。
DIFY_BIND_ADDRESS
API 服务绑定地址,默认:0.0.0.0,即所有地址均可访问。
DIFY_PORT
API 服务绑定端口号,默认 5001。
SERVER_WORKER_AMOUNT
API 服务 Server worker 数量,即 gevent worker 数量,公式:cpu 核心数 x 2 + 1 可参考:
https://docs.gunicorn.org/en/stable/design.html#how-many-workers
SERVER_WORKER_CLASS
默认为 gevent,若为 windows,可以切换为 sync 或 solo。
SERVER_WORKER_CONNECTIONS
默认工作连接数,默认为10。
GUNICORN_TIMEOUT
请求处理超时时间,默认 200,建议 360,以支持更长的 sse 连接时间。
CELERY_WORKER_CLASS
和 SERVER_WORKER_CLASS 类似,默认 gevent,若为 windows,可以切换为 sync 或 solo。
CELERY_WORKER_AMOUNT
Celery worker 数量,默认为 1,按需设置。
HTTP_PROXY
HTTP 代理地址,用于解决国内无法访问 OpenAI、HuggingFace 的问题。注意,若代理部署在宿主机 (例如 http://127.0.0.1:7890),此处代理地址应当和接入本地模型时一样,使用 Docker 容器内部的宿主机地址(例如 http://192.168.1.100:7890 或 http://172.17.0.1:7890)。
HTTPS_PROXY
HTTPS 代理地址,用于解决国内无法访问 OpenAI、HuggingFace 的问题。同上。
四、数据库配置
数据库使用 PostgreSQL,请使用 public schema。
B_USERNAME | 用户名 |
---|---|
DB_PASSWORD | 密码 |
DB_HOST | 数据库 host |
DB_PORT | 数据库端口号,默认 5432 |
DB_DATABASE | 数据库 database |
SQLALCHEMY_POOL_SIZE | 数据库连接池大小,默认 30 个连接数,可适当增加。 |
SQLALCHEMY_POOL_RECYCLE | 数据库连接池回收时间,默认 3600 秒。 |
SQLALCHEMY_ECHO | 是否打印 SQL,默认 false。 |
五、Redis配置
该 Redis 配置用于缓存以及对话时的 pub/sub。
REDIS_HOST | Redis host |
---|---|
REDIS_PORT | Redis port,默认 6379。 |
REDIS_DB | Redis Database,默认为 0,请和 Session Redis、Celery Broker 分开用不同 Database。 |
REDIS_USERNAME | Redis 用户名,默认为空。 |
REDIS_PASSWORD | Redis 密码,默认为空,强烈建议设置密码。 |
REDIS_USE_SSL | 是否使用 SSL 协议进行连接,默认 false。 |
REDIS_USE_SENTINEL | 使用 Redis Sentinel 连接 Redis 服务器。 |
REDIS_SENTINELS | 哨兵节点,格式:<sentinel1_ip>:<sentinel1_port>,<sentinel2_ip>:<sentinel2_port>,<sentinel3_ip>:<sentinel3_port> |
REDIS_SENTINEL_SERVICE_NAME | 哨兵服务名,同 Master Name |
REDIS_SENTINEL_USERNAME | 哨兵的用户名 |
REDIS_SENTINEL_PASSWORD | 哨兵的密码 |
REDIS_SENTINEL_SOCKET_TIMEOUT | 哨兵超时时间,默认值:0.1,单位:秒 |
Redis集群节点列表。如果启用集群模式,请至少提供一个集群IP和端口。
REDIS_USE_CLUSTERS | 是否开启,默认为false。 |
---|---|
REDIS_CLUSTERS | 提供集至少一个集群IP和端口 |
REDIS_CLUSTERS_PASSWORD | 提供集群密码 |
六、Celery 配置
CELERY_BROKER_URL
格式如下(直连模式):
redis://<redis_username>:<redis_password>@<redis_host>:<redis_port>/<redis_database>
范例:`redis://:difyai123456@redis:6379/1`
哨兵模式:
``` sentinel://<sentinel_username>:<sentinel_password>@<sentinel_host>:<sentinel_port>/<redis_database>
范例:`sentinel://localhost:26379/1;sentinel://localhost:26380/1;sentinel://localhost:26381/1`
BROKER_USE_SSL | 若设置为 true,则使用 SSL 协议进行连接,默认 false。 |
---|---|
CELERY_USE_SENTINEL | 若设置为 true,则启用哨兵模式,默认 false。 |
CELERY_SENTINEL_MASTER_NAME | 哨兵的服务名,即 Master Name。 |
CELERY_SENTINEL_SOCKET_TIMEOUT | 哨兵连接超时时间,默认值:0.1,单位:秒。 |
七、CORS 配置
用于设置前端跨域访问策略。
CONSOLE_CORS_ALLOW_ORIGINS | 控制台 CORS 跨域策略,默认为 *,即所有域名均可访问。 |
---|---|
WEB_API_CORS_ALLOW_ORIGINS | WebAPP CORS 跨域策略,默认为 *,即所有域名均可访问。 |
八、文件存储配置
用于存储知识库上传的文件、团队/租户的加密秘钥等等文件。
这块目前看支持S3、AZURE_BLOB、GOOGLE_STORAGE、ALIYUN_OSS、TENCENT_COS、Oracle Storage、HUAWEI_OBS、VOLCENGINE_TOS、BAIDU_OBS、SUPABASE这些存储服务,选择哪个就需要在STORAGE_TYPE配置中填写哪个前缀,然后对应的配置信息需要填写。
九、向量数据库配置
VECTOR_STORE | 可使用的枚举类型包括: `weaviate`, `qdrant`, `milvus`, `myscale`, `relyt`, `pgvector`, `pgvecto-rs`, `chroma`, `opensearch`,`tidb_vector`, `oracle`, `tencent`, `elasticsearch`, `elasticsearch-ja`, `analyticdb`, `couchbase`, `vikingdb`, `oceanbase` |
---|
选择哪种枚举,就在下方配置项中填写相关信息。
十、知识库配置
这部分的配置就是解决前面一篇介绍创建知识库的文章中遗留的问题,请关注的小伙伴们着重查看!
UPLOAD_FILE_SIZE_LIMIT
上传文件大小限制,默认 15M。
UPLOAD_FILE_BATCH_LIMIT
每次上传文件数上限,默认 5 个。
ETL_TYPE
UNSTRUCTURED_API_URL
Unstructured API 路径,当 ETL_TYPE 为 Unstructured 需要配置。如:
http://unstructured:8000/general/v0/general
UNSTRUCTURED_API_KEY
对应的key
十一、多模态模型配置
MULTIMODAL_SEND_IMAGE_FORMAT | 多模态模型输入时,发送图片的格式,默认为base64可选url。url模式下调用的延迟会比 base64 模式下低一般建议使用兼容更好的 base64 模式。若配置为url,则需要将 FILES_URL 配置为外部可访问的地址,以便多模态模型可以访问到图片。 |
---|---|
UPLOAD_IMAGE_FILE_SIZE_LIMIT | 上传图片文件大小限制,默认 10M。 |
UPLOAD_VIDEO_FILE_SIZE_LIMIT | 上传视频文件大小限制,默认 100M。 |
UPLOAD_AUDIO_FILE_SIZE_LIMIT | 上传音频文件大小限制,默认 50M。 |
十二、Sentry 配置
用于应用监控和错误日志跟踪。
SENTRY_DSN | Sentry DSN 地址,默认为空,为空时则所有监控信息均不上报 Sentry。 |
---|---|
API_SENTRY_DSN | API Sentry DSN 地址,默认为空,当为空时所有监控信息不上报给哨兵。如果没有设置,哨兵错误报告将被禁用。 |
API_SENTRY_TRACES_SAMPLE_RATE | Sentry events 的上报比例,若为 0.01,则为 1%。 |
API_SENTRY_PROFILES_SAMPLE_RATE | Sentry profiles 的上报比例,若为 0.01,则为 1%。 |
WEB_SENTRY_DSN | Web服务哨兵DSN地址,默认为空,当为空时,所有监控信息不上报给哨兵。如果没有设置,哨兵错误报告将被禁用。 |
十三、邮件相关配置
MAIL_TYPE
resend
- MAIL_DEFAULT_SEND_FROM
发件人的电子邮件名称,例如:no-reply no-reply@dify.ai,非必需。
- RESEND_API_KEY
用于 Resend 邮件提供程序的 API 密钥,可以从 API 密钥获取。
smtp
- SMTP_SERVER
SMTP 服务器地址
- SMTP_PORT
SMTP 服务器端口号
- SMTP_USERNAME
SMTP 用户名
- SMTP_PASSWORD
SMTP 密码
- SMTP_USE_TLS
是否使用 TLS,默认为 false
- MAIL_DEFAULT_SEND_FROM
发件人的电子邮件名称,例如:no-reply no-reply@dify.ai,非必需。
十四、模型供应商 & 工具位置配置
用于指定应用中可以使用的模型供应商和工具。你可以自定义哪些工具和模型供应商可用,以及它们在应用界面中的顺序和包含 / 排除情况。
POSITION_TOOL_PINS | 将列出的工具固定在列表顶部,确保它们在界面中置顶出现。(使用逗号分隔的值,中间不留空格。) 示例:POSITION_TOOL_PINS=bing,google |
---|---|
POSITION_TOOL_INCLUDES | 指定要在应用中包含的工具。只有此处列出的工具才可用。如果未设置,则除非在 POSITION_TOOL_EXCLUDES 中指定,否则所有工具都会包含在内。(使用逗号分隔的值,中间不留空格。) 示例: POSITION_TOOL_INCLUDES=bing,google |
POSITION_TOOL_EXCLUDES | 排除在应用中显示或使用的特定工具。此处列出的工具将从可用选项中省略,除非它们被固定。(使用逗号分隔的值,中间不留空格。) 示例: POSITION_TOOL_EXCLUDES=yahoo,wolframalpha |
POSITION_PROVIDER_PINS | 将列出的模型供应商固定在列表顶部,确保它们在界面中置顶出现。(使用逗号分隔的值,中间不留空格。) 示例: POSITION_PROVIDER_PINS=openai,openllm |
POSITION_PROVIDER_INCLUDES | 指定要在应用中包含的模型供应商。只有此处列出的供应商才可用。如果未设置,则除非在 POSITION_PROVIDER_EXCLUDES 中指定,否则所有供应商都会包含在内。(使用逗号分隔的值,中间不留空格。) 示例: POSITION_PROVIDER_INCLUDES=cohere,upstage |
POSITION_PROVIDER_EXCLUDES | 排除在应用中显示特定模型供应商。此处列出的供应商将从可用选项中移除,除非它们被置顶。(使用逗号分隔的值,中间不留空格。) 示例: POSITION_PROVIDER_EXCLUDES=openrouter,ollama |
十五、其他的一些配置
HTTP_REQUEST_NODE_MAX_TEXT_SIZE:workflow 工作流中 HTTP 请求节点的最大文本大小,默认 1MB。
HTTP_REQUEST_NODE_MAX_BINARY_SIZE:workflow 工作流中 HTTP 请求节点的最大二进制大小,默认 10MB。
INVITE_EXPIRY_HOURS:成员邀请链接有效时间(小时),默认:72。
好了,基本常用的配置都讲完了,还有几个是不常用的,而且我也没搞明白的,就不拿出来了,有兴趣的小伙伴可以自行去研究了解,研究明白了记得回来留个言告诉我一声哦!
喜欢的小伙伴们可以点点关注,后面我会坚持更新,分享内容给大家!