(一)简介
欢迎使用 Dify
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。
为什么使用 Dify?
你或许可以把 LangChain 这类的开发库(Library)想象为有着锤子、钉子的工具箱。与之相比,Dify 提供了更接近生产需要的完整方案,Dify 好比是一套脚手架,并且经过了精良的工程设计和软件测试。
重要的是,Dify 是开源的,它由一个专业的全职团队和社区共同打造。你可以基于任何模型自部署类似 Assistants API 和 GPTs 的能力,在灵活和安全的基础上,同时保持对数据的完全控制。
我们的社区用户对 Dify 的产品评价可以归结为简单、克制、迭代迅速。\ ——路宇,Dify.AI CEO
希望以上信息和这份指南可以帮助你了解这款产品,我们相信 Dify 是为你而做的(Do It For You)。
Dify 能做什么?
Dify 一词源自 Define + Modify,意指定义并且持续的改进你的 AI 应用,它是为你而做的(Do it for you)。
创业,快速的将你的 AI 应用创意变成现实,无论成功和失败都需要加速。在真实世界,已经有几十个团队通过 Dify 构建 MVP(最小可用产品)获得投资,或通过 POC(概念验证)赢得了客户的订单。
将 LLM 集成至已有业务,通过引入 LLM 增强现有应用的能力,接入 Dify 的 RESTful API 从而实现 Prompt 与业务代码的解耦,在 Dify 的管理界面是跟踪数据、成本和用量,持续改进应用效果。
作为企业级 LLM 基础设施,一些银行和大型互联网公司正在将 Dify 部署为企业内的 LLM 网关,加速 GenAI 技术在企业内的推广,并实现中心化的监管。
探索 LLM 的能力边界,即使你是一个技术爱好者,通过 Dify 也可以轻松的实践 Prompt 工程和 Agent 技术,在 GPTs 推出以前就已经有超过 60,000 开发者在 Dify 上创建了自己的第一个应用。
(二)部署
部署社区版
Dify 社区版即开源版本,你可以通过以下两种方式之一部署 Dify 社区版:
在 GitHub 上查看 Dify 社区版。
贡献代码
为了确保正确审查,所有代码贡献 - 包括来自具有直接提交更改权限的贡献者 - 都必须提交 PR 请求并在合并分支之前得到核心开发人员的批准。
我们欢迎所有人提交 PR!如果你愿意提供帮助,可以在 贡献指南 中了解有关如何为项目做出贡献的更多信息。
宝塔面板部署
前提条件
安装 Dify 之前, 请确保你的机器已满足最低安装要求:
CPU >= 2 Core
RAM >= 4 GiB
部署 Dify
登录宝塔面板,在菜单栏中点击 Docker,根据提示安装 Docker 和 Docker Compose 服务。
在
Docker-应用商店
中找到Dify
,点击安装
设置域名等基本信息,点击
确定
名称:应用名称,默认
Dify-随机字符
版本选择:默认
latest
域名:如需通过域名直接访问,请在此配置域名并将域名解析到服务器
允许外部访问:如你需通过
IP+Port
直接访问,请勾选,如你已经设置了域名,请不要勾选此处端口:默认
8088
,可自行修改
提交后面板会自动进行应用初始化,大概需要
1-3
分钟,初始化完成后即可访问。
访问 Dify
你可以先前往管理员初始化页面设置设置管理员账户:
# 使用域名
http://yourdomain/install
# 使用IP+端口
http://your_server_ip:8088/install
Dify 主页面:
# 使用域名
http://yourdomain/
# 使用IP+端口
http://your_server_ip:8088/
Docker Compose 部署
前提条件
安装 Dify 之前, 请确保你的机器已满足最低安装要求:
CPU >= 2 Core
RAM >= 4 GiB
克隆 Dify 代码仓库
克隆 Dify 源代码至本地环境。
git clone https://github.com/langgenius/dify.git
启动 Dify
进入 Dify 源代码的 Docker 目录
cd dify/docker
复制环境配置文件
cp .env.example .env
启动 Docker 容器
根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过
$ docker compose version
命令检查版本,详细说明请参考 Docker 官方文档:如果版本是 Docker Compose V2,使用以下命令:
docker compose up -d
如果版本是 Docker Compose V1,使用以下命令:
docker-compose up -d
运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:
[+] Running 11/11
✔ Network docker_ssrf_proxy_network Created 0.1s
✔ Network docker_default Created 0.0s
✔ Container docker-redis-1 Started 2.4s
✔ Container docker-ssrf_proxy-1 Started 2.8s
✔ Container docker-sandbox-1 Started 2.7s
✔ Container docker-web-1 Started 2.7s
✔ Container docker-weaviate-1 Started 2.4s
✔ Container docker-db-1 Started 2.7s
✔ Container docker-api-1 Started 6.5s
✔ Container docker-worker-1 Started 6.4s
✔ Container docker-nginx-1 Started 7.1s
最后检查是否所有容器都正常运行:
docker compose ps
在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web
,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox
。
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-api-1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" api About a minute ago Up About a minute 5001/tcp
docker-db-1 postgres:15-alpine "docker-entrypoint.s…" db About a minute ago Up About a minute (healthy) 5432/tcp
docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis About a minute ago Up About a minute (healthy) 6379/tcp
docker-sandbox-1 langgenius/dify-sandbox:0.2.1 "/main" sandbox About a minute ago Up About a minute
docker-ssrf_proxy-1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy About a minute ago Up About a minute 3128/tcp
docker-weaviate-1 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" weaviate About a minute ago Up About a minute
docker-web-1 langgenius/dify-web:0.6.13 "/bin/sh ./entrypoin…" web About a minute ago Up About a minute 3000/tcp
docker-worker-1 langgenius/dify-api:0.6.13 "/bin/bash /entrypoi…" worker About a minute ago Up About a minute 5001/tcp
通过这些步骤,你应该可以成功在本地安装 Dify。
更新 Dify
进入 dify 源代码的 docker 目录,按顺序执行以下命令:
cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d
同步环境变量配置 (重要!)
如果
.env.example
文件有更新,请务必同步修改你本地的.env
文件。检查
.env
文件中的所有配置项,确保它们与你的实际运行环境相匹配。你可能需要将.env.example
中的新变量添加到.env
文件中,并更新已更改的任何值。
访问 Dify
你可以先前往管理员初始化页面设置设置管理员账户:
# 本地环境
http://localhost/install
# 服务器环境
http://your_server_ip/install
Dify 主页面:
# 本地环境
http://localhost
# 服务器环境
http://your_server_ip
自定义配置
编辑 .env
文件中的环境变量值。然后重新启动 Dify:
docker compose down
docker compose up -d
完整的环境变量集合可以在 docker/.env.example
中找到。
环境变量说明
公共变量
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 分钟过期时间。
服务端
MODE
启动模式,仅使用 Docker 启动时可用,源码启动无效。
api
启动 API Server。
worker
启动异步队列 worker。
DEBUG
调试模式,默认 false,建议本地开发打开该配置,可防止 monkey patch 导致的一些问题出现。
FLASK_DEBUG
Flask 调试模式,开启可在接口输出 trace 信息,方便调试。
SECRET_KEY
一个用于安全地签名会话 cookie 并在数据库上加密敏感信息的密钥。初次启动需要设置改变量。可以运行 openssl rand -base64 42
生成一个强密钥。
DEPLOY_ENV
部署环境。
PRODUCTION(默认)
生产环境。
TESTING
测试环境,前端页面会有明显颜色标识,该环境为测试环境。
LOG_LEVEL
日志输出等级,默认为 INFO。生产建议设置为 ERROR。
MIGRATION_ENABLED
当设置为 true 时,会在容器启动时自动执行数据库迁移,仅使用 Docker 启动时可用,源码启动无效。源码启动需要在 api 目录手动执行 flask db upgrade
。
CHECK_UPDATE_URL
是否开启检查版本策略,若设置为 false,则不调用 https://updates.dify.ai
进行版本检查。由于目前国内无法直接访问基于 CloudFlare Worker 的版本接口,设置该变量为空,可以屏蔽该接口调用。
TEXT_GENERATION_TIMEOUT_MS
默认 60000,单位为 ms,用于指定文本生成和工作流的超时时间,防止因某些进程运行超时而导致整体服务不可用。
CSP_WHITELIST
内容安全策略(CSP)白名单,默认不开启。在此变量中填写被放行的域名列表后即视为开启,有助于减少潜在的 XSS 攻击。开启后,白名单将自动包含以下域名:
*.sentry.io http://localhost:* http://127.0.0.1:* https://analytics.google.com https://googletagmanager.com https://api.github.com
容器启动相关配置
仅在使用 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-workersSERVER_WORKER_CLASS
默认为 gevent,若为 windows,可以切换为 sync 或 solo。
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。
DB_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,单位:秒
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 跨域策略,默认为
*
,即所有域名均可访问。
详细配置可参考:跨域 / 身份相关指南
文件存储配置
用于存储数据集上传的文件、团队 / 租户的加密密钥等等文件。
STORAGE_TYPE
存储设施类型
local(默认)
本地文件存储,若选择此项则需要设置下方
STORAGE_LOCAL_PATH
配置。s3
S3 对象存储,若选择此项则需要设置下方 S3_ 开头的配置。
azure-blob
Azure Blob 存储,若选择此项则需要设置下方 AZURE_BLOB_ 开头的配置。
huawei-obs
Huawei OBS 存储,若选择此项则需要设置下方 HUAWEI_OBS_ 开头的配置。
volcengine-tos
Volcengine TOS 存储,若选择此项则需要设置下方 VOLCENGINE_TOS_ 开头的配置。
STORAGE_LOCAL_PATH
默认为 storage,即存储在当前目录的 storage 目录下。若使用 Docker 或 Docker-compose 进行部署,请务必将两个容器中
/app/api/storage
目录挂载到同一个本机目录,否则可能会出现文件找不到的报错。S3_ENDPOINT:S3 端点地址
S3_BUCKET_NAME:S3 桶名称
S3_ACCESS_KEY:S3 Access Key
S3_SECRET_KEY:S3 Secret Key
S3_REGION:S3 地域信息,如:us-east-1
AZURE_BLOB_ACCOUNT_NAME: your-account-name 如 ‘difyai’
AZURE_BLOB_ACCOUNT_KEY: your-account-key 如 ‘difyai’
AZURE_BLOB_CONTAINER_NAME: your-container-name 如 ‘difyai-container’
AZURE_BLOB_ACCOUNT_URL: ‘https://\.blob.core.windows.net’
ALIYUN_OSS_BUCKET_NAME: your-bucket-name 如 ‘difyai’
ALIYUN_OSS_ACCESS_KEY: your-access-key 如 ‘difyai’
ALIYUN_OSS_SECRET_KEY: your-secret-key 如 ‘difyai’
ALIYUN_OSS_ENDPOINT: https://oss-ap-southeast-1-internal.aliyuncs.com # 参考文档: https://help.aliyun.com/zh/oss/user-guide/regions-and-endpoints
ALIYUN_OSS_REGION: ap-southeast-1 # 参考文档: https://help.aliyun.com/zh/oss/user-guide/regions-and-endpoints
ALIYUN_OSS_AUTH_VERSION: v4
ALIYUN_OSS_PATH: your-path # 路径不要使用斜线 “/“ 开头,阿里云 OSS 不支持。参考文档: https://api.aliyun.com/troubleshoot?q=0016-00000005
HUAWEI_OBS_BUCKET_NAME: your-bucket-name 如 ‘difyai’
HUAWEI_OBS_SECRET_KEY: your-secret-key 如 ‘difyai’
HUAWEI_OBS_ACCESS_KEY: your-access-key 如 ‘difyai’
HUAWEI_OBS_SERVER: your-server-url # 参考文档: https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0500.html
VOLCENGINE_TOS_BUCKET_NAME: your-bucket-name 如 ‘difyai’
VOLCENGINE_TOS_SECRET_KEY: your-secret-key 如 ‘difyai’
VOLCENGINE_TOS_ACCESS_KEY: your-access-key 如 ‘difyai’
VOLCENGINE_TOS_REGION: your-region 如 ‘cn-guangzhou’ # 参考文档: https://www.volcengine.com/docs/6349/107356
VOLCENGINE_TOS_ENDPOINT: your-endpoint 如 ‘tos-cn-guangzhou.volces.com’ # 参考文档: https://www.volcengine.com/docs/6349/107356
向量数据库配置
VECTOR_STORE
可使用的枚举类型包括:
weaviate
qdrant
milvus
zilliz
与milvus
一致myscale
pinecone
(暂未开放)tidb_vector
analyticdb
couchbase
WEAVIATE_ENDPOINT
Weaviate 端点地址,如:
http://weaviate:8080
。WEAVIATE_API_KEY
连接 Weaviate 使用的 api-key 凭据。
WEAVIATE_BATCH_SIZE
Weaviate 批量创建索引 Object 的数量,默认 100。可参考此文档:https://weaviate.io/developers/weaviate/manage-data/import#how-to-set-batch-parameters
WEAVIATE_GRPC_ENABLED
是否使用 gRPC 方式与 Weaviate 进行交互,开启后性能会大大增加,本地可能无法使用,默认为 true。
QDRANT_URL
Qdrant 端点地址,如:
https://your-qdrant-cluster-url.qdrant.tech/
QDRANT_API_KEY
连接 Qdrant 使用的 api-key 凭据。
PINECONE_API_KEY
连接 Pinecone 使用的 api-key 凭据。
PINECONE_ENVIRONMENT
Pinecone 所在的额环境,如:
us-east4-gcp
MILVUS_URI
Milvus 的 URI 配置。例如:http://localhost:19530。对于 Zilliz Cloud,请将 URI 和令牌调整为 Public Endpoint and Api key 。
MILVUS_TOKEN
Milvus token 配置,默认为空。
MILVUS_USER
Milvus user 配置,默认为空。
MILVUS_PASSWORD
Milvus 密码配置,默认为空。
MYSCALE_HOST
MyScale host 配置。
MYSCALE_PORT
MyScale port 配置。
MYSCALE_USER
MyScale 用户名配置,默认为
default
。MYSCALE_PASSWORD
MyScale 密码配置,默认为空。
MYSCALE_DATABASE
MyScale 数据库配置,默认为
default
。MYSCALE_FTS_PARAMS
MyScale 全文搜索配置,如需多语言支持,请参考 MyScale 文档,默认为空(仅支持英语)。
TIDB_VECTOR_HOST
TiDB Vector host 配置,如:
xxx.eu-central-1.xxx.tidbcloud.com
TIDB_VECTOR_PORT
TiDB Vector 端口号配置,如:
4000
TIDB_VECTOR_USER
TiDB Vector 用户配置,如:
xxxxxx.root
TIDB_VECTOR_PASSWORD
TiDB Vector 密码配置
TIDB_VECTOR_DATABASE
TiDB Vector 数据库配置,如:
dify
ANALYTICDB_KEY_ID
用于阿里云 OpenAPI 认证的访问密钥 ID。请阅读 Analyticdb 文档 来创建你的 AccessKey。
ANALYTICDB_KEY_SECRET
用于阿里云 OpenAPI 认证的访问密钥秘密。
ANALYTICDB_INSTANCE_ID
你的 AnalyticDB 实例的唯一标识符,例如
gp-xxxxxx
。请阅读 Analyticdb 文档 来创建你的实例。ANALYTICDB_REGION_ID
AnalyticDB 实例所在区域的标识符,例如
cn-hangzhou
。ANALYTICDB_ACCOUNT
用于连接 AnalyticDB 实例的账户名称。请阅读 Analyticdb 文档 来创建账户。
ANALYTICDB_PASSWORD
用于连接 AnalyticDB 实例的账户密码。
ANALYTICDB_NAMESPACE
在 AnalyticDB 实例内要操作的命名空间 (schema),例如
dify
。如果此命名空间不存在,将自动创建。ANALYTICDB_NAMESPACE_PASSWORD
命名空间 (schema) 的密码。如果命名空间不存在,将使用此密码进行创建。
COUCHBASE_CONNECTION_STRING
Couchbase 集群的连接 string 字符串
COUCHBASE_USER
数据库用户名
COUCHBASE_PASSWORD
数据库密码
COUCHBASE_BUCKET_NAME
Bucket 名称
COUCHBASE_SCOPE_NAME
Scope 名称
知识库配置
UPLOAD_FILE_SIZE_LIMIT
上传文件大小限制,默认 15M。
UPLOAD_FILE_BATCH_LIMIT
每次上传文件数上限,默认 5 个。
ETL_TYPE
可使用的枚举类型包括:
dify
Dify 自研文件 Extract 方案
Unstructured
Unstructured.io 文件 Extract 方案
UNSTRUCTURED_API_URL
Unstructured API 路径,当 ETL_TYPE 为 Unstructured 需要配置。
如:
http://unstructured:8000/general/v0/general
多模态模型配置
MULTIMODAL_SEND_IMAGE_FORMAT
多模态模型输入时,发送图片的格式,默认为
base64
,可选url
。url
模式下,调用的延迟会比base64
模式下低,一般建议使用兼容更好的base64
模式。 若配置为url
,则需要将FILES_URL
配置为外部可访问的地址,以便多模态模型可以访问到图片。UPLOAD_IMAGE_FILE_SIZE_LIMIT
上传图片文件大小限制,默认 10M。
Sentry 配置
用于应用监控和错误日志跟踪。
SENTRY_DSN
Sentry DSN 地址,默认为空,为空时则所有监控信息均不上报 Sentry。
SENTRY_TRACES_SAMPLE_RATE
Sentry events 的上报比例,若为 0.01,则为 1%。
SENTRY_PROFILES_SAMPLE_RATE
Sentry profiles 的上报比例,若为 0.01,则为 1%。
Notion 集成配置
Notion 集成配置,变量可通过申请 Notion integration 获取:https://www.notion.so/my-integrations
NOTION_CLIENT_ID
NOTION_CLIENT_SECRET
邮件相关配置
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
其他
INVITE_EXPIRY_HOURS:成员邀请链接有效时间(小时),默认:72。
HTTP_REQUEST_NODE_MAX_TEXT_SIZE:workflow 工作流中 HTTP 请求节点的最大文本大小,默认 1MB。
HTTP_REQUEST_NODE_MAX_BINARY_SIZE:workflow 工作流中 HTTP 请求节点的最大二进制大小,默认 10MB。
Web 前端
SENTRY_DSN
Sentry DSN 地址,默认为空,为空时则所有监控信息均不上报 Sentry。
已废弃
CONSOLE_URL
⚠️ 修改于 0.3.8,于 0.4.9 废弃,替代为:
CONSOLE_API_URL
和CONSOLE_WEB_URL
。
控制台 URL,用于拼接授权回调、控制台前端地址,以及 CORS 配置使用,传空则为同域。范例:https://console.dify.ai
。
API_URL
⚠️ 修改于 0.3.8,于 0.4.9 废弃,替代为
SERVICE_API_URL
。
API Url,用于给前端展示 Service API Base Url,传空则为同域。范例:https://api.dify.ai
APP_URL
⚠️ 修改于 0.3.8,于 0.4.9 废弃,替代为
APP_API_URL
和APP_WEB_URL
。
WebApp Url,用于显示文件预览或下载 URL 到前端作为多模型输入,传空则为同域。范例:https://udify.app/
Session 配置
⚠️ 该配置从 0.3.24 版本起废弃。
仅 API 服务使用,用于验证接口身份。
SESSION_TYPE: Session 组件类型
redis(默认)
选择此项,则需要设置下方 SESSION_REDIS_ 开头的环境变量。
sqlalchemy
选择此项,则使用当前数据库连接,并使用 sessions 表进行读写 session 记录。
SESSION_REDIS_HOST:Redis host
SESSION_REDIS_PORT:Redis port,默认 6379
SESSION_REDIS_DB:Redis Database,默认为 0,请和 Redis、Celery Broker 分开用不同 Database。
SESSION_REDIS_USERNAME:Redis 用户名,默认为空
SESSION_REDIS_PASSWORD:Redis 密码,默认为空,强烈建议设置密码。
SESSION_REDIS_USE_SSL:是否使用 SSL 协议进行连接,默认 false
Cookie 策略配置
⚠️ 该配置从 0.3.24 版本起废弃。
用于设置身份校验的 Session Cookie 浏览器策略。
COOKIE_HTTPONLY
Cookie HttpOnly 配置,默认为 true。
COOKIE_SAMESITE
Cookie SameSite 配置,默认为 Lax。
COOKIE_SECURE
Cookie Secure 配置,默认为 false。