Dify学习笔记-入门学习(二)

1、官方文档链接

https://docs.dify.ai/v/zh-hans/getting-started/readme

2、 Dify基础介绍

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。
由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎以及灵活的 Agent 框架,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

3、为什么使用 Dify?

你或许可以把 LangChain 这类的开发库(Library)想象为有着锤子、钉子的工具箱。与之相比,Dify 提供了更接近生产需要的完整方案,Dify 好比是一套脚手架,并且经过了精良的工程设计和软件测试。
重要的是,Dify 是开源的,它由一个专业的全职团队和社区共同打造。你可以基于任何模型自部署类似 Assistants API 和 GPTs 的能力,在灵活的安全的基础上,同时保持对数据的完全控制。

4、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 上创建了自己的第一个应用。

5、特性与技术规格

对于已经熟悉 LLM 应用技术栈的技术人士来说,这份文档将是您了解 Dify 独特优势的捷径。让您能够明智地比较和选择,甚至向同事和朋友推荐。
在 Dify,我们采用透明化的产品特性和技术规格政策,确保您在全面了解我们产品的基础上做出决策。这种透明度不仅有利于您的技术选型,也促进了社区成员对产品的深入理解和积极贡献。

5.1、项目基础信息

在这里插入图片描述

5.2、技术特性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6、使用云服务(直接使用Dify官方提供的在线网站)

提示: Dify 目前正在 Beta 测试阶段,如文档与产品存在不一致,请以产品实际体验为准。
Dify 为所有人提供了云服务,你无需自己部署即可使用 Dify 的完整功能。要使用 Dify 云服务,你需要有一个 GitHub 或 Google 账号。

  • 1.登录 Dify 云服务,创建一个或加入已有的 Workspace
  • 2.配置你的模型供应商,或使用我们提供的托管模型供应商
  • 3.可以创建应用了!
    目前我们没有收费计划,如果你喜欢请将这款 LLMOps 产品介绍给身边的朋友😄。

7、部署社区版

Dify 社区版即开源版本,你可以通过以下两种方式之一部署 Dify 社区版:

  • Docker Compose 部署
  • 本地源码启动
    在 GitHub 上查看 Dify 社区版。
    贡献代码
    为了确保正确审查,所有代码贡献 - 包括来自具有直接提交更改权限的贡献者 - 都必须提交 PR 请求并在合并分支之前得到核心开发人员的批准。
    我们欢迎所有人提交 PR!如果您愿意提供帮助,可以在 贡献指南 中了解有关如何为项目做出贡献的更多信息。

7.1、Docker Compose 部署

https://docs.dify.ai/v/zh-hans/getting-started/install-self-hosted/docker-compose

7.1.1、前置条件

在这里插入图片描述

7.1.2、Clone Dify

Clone Dify 源代码至本地

git clone https://github.com/langgenius/dify.git

7.1.3、Start Dify

进入 dify 源代码的 docker 目录,执行一键启动命令:

cd dify/docker
docker compose up -d

如果您的系统安装了 Docker Compose V2 而不是 V1,请使用 docker compose 而不是 docker-compose。通过$ docker compose version检查这是否为情况。在这里信息。
部署结果:

[+] Running 7/7✔ Container docker-web-1       Started                                                                                                                                                                                       1.0s ✔ Container docker-redis-1     Started                                                                                                                                                                                       1.1s ✔ Container docker-weaviate-1  Started                                                                                                                                                                                       0.9s ✔ Container docker-db-1        Started                                                                                                                                                                                       0.0s ✔ Container docker-worker-1    Started                                                                                                                                                                                       0.7s ✔ Container docker-api-1       Started                                                                                                                                                                                       0.8s ✔ Container docker-nginx-1     Started

最后检查是否所有容器都正常运行:

docker compose ps

包括 3 个业务服务 api / worker / web,以及 4 个基础组件 weaviate / db / redis / nginx。

NAME                IMAGE                              COMMAND                  SERVICE             CREATED             STATUS              PORTS
docker-api-1        langgenius/dify-api:0.3.2          "/entrypoint.sh"         api                 4 seconds ago       Up 2 seconds        80/tcp, 5001/tcp
docker-db-1         postgres:15-alpine                 "docker-entrypoint.s…"   db                  4 seconds ago       Up 2 seconds        0.0.0.0:5432->5432/tcp
docker-nginx-1      nginx:latest                       "/docker-entrypoint.…"   nginx               4 seconds ago       Up 2 seconds        0.0.0.0:80->80/tcp
docker-redis-1      redis:6-alpine                     "docker-entrypoint.s…"   redis               4 seconds ago       Up 3 seconds        6379/tcp
docker-weaviate-1   semitechnologies/weaviate:1.18.4   "/bin/weaviate --hos…"   weaviate            4 seconds ago       Up 3 seconds        
docker-web-1        langgenius/dify-web:0.3.2          "/entrypoint.sh"         web                 4 seconds ago       Up 3 seconds        80/tcp, 3000/tcp
docker-worker-1     langgenius/dify-api:0.3.2          "/entrypoint.sh"         worker              4 seconds ago       Up 2 seconds        80/tcp, 5001/tcp

7.1.4、Upgrade Dify

进入 dify 源代码的 docker 目录,按顺序执行以下命令:

cd dify/docker
git pull origin main
docker compose down
docker compose pull
docker compose up -d

7.2、本地源码启动

https://docs.dify.ai/v/zh-hans/getting-started/install-self-hosted/local-source-code

7.2.1、前置条件

在这里插入图片描述
Clone Dify 代码:

git clone https://github.com/langgenius/dify.git

在启用业务服务之前,我们需要先部署 PostgresSQL / Redis / Weaviate(如果本地没有的话),可以通过以下命令启动:

cd docker
docker compose -f docker-compose.middleware.yaml up -d

7.2.2、服务端部署

API 接口服务
Worker 异步队列消费服务

7.2.2.1、安装基础环境

服务端启动需要使用到 Python 3.10.x,推荐使用 Anaconda 来快速安装 Python 环境,内部已包含 pip 包管理工具。

# 创建名为 dify 的 Python 3.10 环境
conda create --name dify python=3.10
# 切换至 dify Python 环境
conda activate dify
7.2.2.2、启动步骤
1、进入 api 目录

cd api

2、复制环境变量配置文件

cp .env.example .env

3、生成随机密钥,并替换 .env 中 SECRET_KEY 的值

openssl rand -base64 42
sed -i ‘s/SECRET_KEY=.*/SECRET_KEY=<your_value>/’ .env

4、安装依赖包

pip install -r requirements.txt

5、执行数据库迁移

将数据库结构迁移至最新版本。
flask db upgrade

6、启动 API 服务

flask run --host 0.0.0.0 --port=5001 --debug
正确输出:

* Debug mode: on
INFO:werkzeug:WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.* Running on all addresses (0.0.0.0)* Running on http://127.0.0.1:5001
INFO:werkzeug:Press CTRL+C to quit
INFO:werkzeug: * Restarting with stat
WARNING:werkzeug: * Debugger is active!
INFO:werkzeug: * Debugger PIN: 695-801-919
7.启动 Worker 服务

用于消费一步队列任务,如数据集文件导入、更新数据集文档等异步操作。 Linux / MacOS 启动:

celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail --loglevel INFO

如果使用 Windows 系统启动,请替换为该命令:

celery -A app.celery worker -P solo --without-gossip --without-mingle -Q dataset,generation,mail --loglevel INFO

正确输出:

 -------------- celery@TAKATOST.lan v5.2.7 (dawn-chorus)
--- ***** ----- 
-- ******* ---- macOS-10.16-x86_64-i386-64bit 2023-07-31 12:58:08
- *** --- * --- 
- ** ---------- [config]
- ** ---------- .> app:         app:0x7fb568572a10
- ** ---------- .> transport:   redis://:**@localhost:6379/1
- ** ---------- .> results:     postgresql://postgres:**@localhost:5432/dify
- *** --- * --- .> concurrency: 1 (gevent)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- -------------- [queues].> dataset          exchange=dataset(direct) key=dataset.> generation       exchange=generation(direct) key=generation.> mail             exchange=mail(direct) key=mail[tasks]. tasks.add_document_to_index_task.add_document_to_index_task. tasks.clean_dataset_task.clean_dataset_task. tasks.clean_document_task.clean_document_task. tasks.clean_notion_document_task.clean_notion_document_task. tasks.create_segment_to_index_task.create_segment_to_index_task. tasks.deal_dataset_vector_index_task.deal_dataset_vector_index_task. tasks.document_indexing_sync_task.document_indexing_sync_task. tasks.document_indexing_task.document_indexing_task. tasks.document_indexing_update_task.document_indexing_update_task. tasks.enable_segment_to_index_task.enable_segment_to_index_task. tasks.generate_conversation_summary_task.generate_conversation_summary_task. tasks.mail_invite_member_task.send_invite_member_mail_task. tasks.remove_document_from_index_task.remove_document_from_index_task. tasks.remove_segment_from_index_task.remove_segment_from_index_task. tasks.update_segment_index_task.update_segment_index_task. tasks.update_segment_keyword_index_task.update_segment_keyword_index_task[2023-07-31 12:58:08,831: INFO/MainProcess] Connected to redis://:**@localhost:6379/1
[2023-07-31 12:58:08,840: INFO/MainProcess] mingle: searching for neighbors
[2023-07-31 12:58:09,873: INFO/MainProcess] mingle: all alone
[2023-07-31 12:58:09,886: INFO/MainProcess] pidbox: Connected to redis://:**@localhost:6379/1.
[2023-07-31 12:58:09,890: INFO/MainProcess] celery@TAKATOST.lan ready.

7.2.3、前端页面部署

Web 前端客户端页面服务

7.2.3.1、安装基础环境

Web 前端服务启动需要用到 Node.js v18.x (LTS) 、NPM 版本 8.x.x 或 Yarn。

  • 安装 NodeJS + NPM
    进入 https://nodejs.org/en/download,选择对应操作系统的 v18.x 以上的安装包下载并安装,建议 stable 版本,已自带 NPM。
7.2.3.2、启动步骤
1、进入 web 目录

cd web

2、安装依赖包

npm install

3、配置环境变量。在当前目录下创建文件 .env.local,并复制.env.example中的内容。根据需求修改这些环境变量的值:
# For production release, change this to PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# The deployment edition, SELF_HOSTED or CLOUD
NEXT_PUBLIC_EDITION=SELF_HOSTED
# The base URL of console application, refers to the Console base URL of WEB service if console domain is
# different from api or web app domain.
# example: http://cloud.dify.ai/console/api
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
# The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from
# console or api domain.
# example: http://udify.app/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_SENTRY_ORG=
NEXT_PUBLIC_SENTRY_PROJECT=
4、构建代码
npm run build
5 、启动 web 服务
npm run start
# or
yarn start
# or
pnpm start

正常启动后,终端会输出如下信息:

ready - started server on 0.0.0.0:3000, url: http://localhost:3000
warn  - You have enabled experimental feature (appDir) in next.config.js.
warn  - Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use at your own risk.
info  - Thank you for testing `appDir` please leave your feedback at https://nextjs.link/app-feedback

7.2.4、访问 Dify

最后,访问 http://127.0.0.1:3000 即可使用本地部署的 Dify。

7.3、单独启动前端 Docker 容器

当单独开发后端时,可能只需要源码启动后端服务,而不需要本地构建前端代码并启动,因此可以直接通过拉取 docker 镜像并启动容器的方式来启动前端服务,以下为具体步骤:

7.3.1、直接使用 DockerHub 镜像

docker run -it -p 3000:3000 -e EDITION=SELF_HOSTED -e CONSOLE_URL=http://127.0.0.1:5001 -e APP_URL=http://127.0.0.1:5001 langgenius/dify-web:latest

7.3.2源码构建 Docker 镜像

1、构建前端镜像
cd web && docker build . -t dify-web
2、启动前端镜像
docker run -it -p 3000:3000 -e EDITION=SELF_HOSTED -e CONSOLE_URL=http://127.0.0.1:5001 -e APP_URL=http://127.0.0.1:5001 dify-web
3、当控制台域名和 Web APP 域名不一致时,可单独设置 CONSOLE_URL 和 APP_URL
4、本地访问 http://127.0.0.1:3000

7.4、环境变量说明

公共变量
EDITION

部署的版本类型:
SELF_HOSTED:自部署版本
仅支持单团队/租户模式
只能使用邮箱和密码方式登录
无试用托管 OpenAI API-Key 功能
CLOUD:云端版本
支持多团队/租户模式
无法使用邮箱和密码方式登录,仅支持 GitHub、Google 授权登录。
有 200 次试用托管 OpenAI API-Key 功能
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,用于给前端展示 WebAPP API Base URL,传空则为同域。范例:https://api.app.dify.ai
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 的版本接口,设置该变量为空,可以屏蔽该接口调用。

OPENAI_API_BASE

用于更改 OpenAI 基础地址,默认为 https://api.openai.com/v1。 在国内无法访问 OpenAI,替换国内镜像地址,或者本地模型提供 OpenAI 兼容 API 时,可替换使用。

容器启动相关配置

仅在使用 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。
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 的问题。
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

Celery 配置

CELERY_BROKER_URL
格式如下

redis://<redis_username>:<redis_password>@<redis_host>:<redis_port>/<redis_database>

范例:redis://:difyai123456@redis:6379/1
BROKER_USE_SSL
若设置为 true,则使用 SSL 协议进行连接,默认 false

CORS 配置

用于设置前端跨域访问策略。
CONSOLE_CORS_ALLOW_ORIGINS
控制台 CORS 跨域策略,默认为 *,即所有域名均可访问。
WEB_API_CORS_ALLOW_ORIGINS
WebAPP CORS 跨域策略,默认为 *,即所有域名均可访问。
详细配置可参考:跨域/身份相关指南

文件存储配置

用于存储数据集上传的文件、团队/租户的加密密钥等等文件。
STORAGE_TYPE
存储设施类型
local(默认)
本地文件存储,若选择此项则需要设置下方 STORAGE_LOCAL_PATH 配置。
s3
S3 对象存储,若选择此项则需要设置下方 S3_ 开头的配置。
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

向量数据库配置

VECTOR_STORE
可使用的枚举类型包括:
weaviate
qdrant
milvus
zilliz 与 milvus 一致
pinecone (暂未开放)
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_HOST
Milvus host 配置。
MILVUS_PORT
Milvus post 配置。
MILVUS_USER
Milvus user 配置,默认为空。
MILVUS_PASSWORD
Milvus 密码配置,默认为空。
MILVUS_USE_SECURE
Milvus 是否使用 SSL 连接,默认 false。

知识库配置

UPLOAD_FILE_SIZE_LIMIT
上传文件大小限制,默认 15M。
UPLOAD_FILE_BATCH_LIMIT
每次上传文件数上限,默认 5 个。
TENANT_DOCUMENT_COUNT
团队可上传文件数限制,默认 100。
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(https://resend.com),留空则不发送邮件。
MAIL_DEFAULT_SEND_FROM
发件人邮箱名称,如:no-reply no-reply@dify.ai,非必填。
RESEND_API_KEY
Resend 邮件提供商 API-Key,可前往 API-Key 获取。
RESEND_API_URL
Resend 邮件提供商提供的 API endpoint,不配置此 Key 时默认值为 ‘https://api.resend.com’, 配置上此 Key 请不要设置为空字符串值。

第三方授权设置

仅云端版可用。
GITHUB_CLIENT_ID:GitHub 授权登录 Client ID
GITHUB_CLIENT_SECRET:GitHub 授权登录 Client Secret
GOOGLE_CLIENT_ID:Google 授权登录 Client ID
GOOGLE_CLIENT_SECRET:Google 授权登录 Client Secret

平台托管模型相关配置

仅云端版可用,用于模型托管配置。
HOSTED_OPENAI_API_KEY:OpenAI 托管服务的 API 密钥
HOSTED_OPENAI_API_BASE:OpenAI 托管服务的 API 基础地址,默认为空,即使用:https://api.openai.com/v1
HOSTED_OPENAI_API_ORGANIZATION:OpenAI 托管服务的组织 ID,默认为空
HOSTED_OPENAI_TRIAL_ENABLED:启用 OpenAI 托管试用服务,默认 False
HOSTED_OPENAI_QUOTA_LIMIT:OpenAI 托管服务的默认试用配额(单位:调用次数),默认 200 次调用
HOSTED_OPENAI_PAID_ENABLED:启用 OpenAI 托管付费服务,默认 False
HOSTED_OPENAI_PAID_STRIPE_PRICE_ID:OpenAI 托管付费服务的 Stripe 价格 ID
HOSTED_OPENAI_PAID_INCREASE_QUOTA:OpenAI 托管付费服务的支付后,增加配额数量
HOSTED_AZURE_OPENAI_ENABLED:启用 Azure OpenAI 托管服务,默认 False
HOSTED_AZURE_OPENAI_API_KEY:Azure OpenAI 托管服务的 API 密钥
HOSTED_AZURE_OPENAI_API_BASE:Azure OpenAI 托管服务的 API 基础地址
HOSTED_AZURE_OPENAI_QUOTA_LIMIT:Azure OpenAI 托管服务的默认试用配额(单位:调用次数)
HOSTED_ANTHROPIC_API_BASE:Anthropic 托管服务的 API 基础地址,默认为空
HOSTED_ANTHROPIC_API_KEY:Anthropic 托管服务的 API 密钥
HOSTED_ANTHROPIC_TRIAL_ENABLED:启用 Anthropic 托管试用服务,默认 False
HOSTED_ANTHROPIC_QUOTA_LIMIT:Anthropic 托管服务的默认试用配额(单位:tokens)
HOSTED_ANTHROPIC_PAID_ENABLED:启用 Anthropic 托管付费服务,默认 False
HOSTED_ANTHROPIC_PAID_STRIPE_PRICE_ID:Anthropic 托管付费服务的 Stripe 价格 ID
HOSTED_ANTHROPIC_PAID_INCREASE_QUOTA:Anthropic 托管付费服务的配额增加数量
HOSTED_ANTHROPIC_PAID_MIN_QUANTITY:Anthropic 托管付费服务的最小购买份数
HOSTED_ANTHROPIC_PAID_MAX_QUANTITY:Anthropic 托管付费服务的最大购买份数

其他

INVITE_EXPIRY_HOURS:成员邀请链接有效时间(小时),默认:72。

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,用于声明前端 API 后端地址,传空则为同域。范例:https://app.dify.ai
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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/643318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习:Collaborative filtering 协同过滤】深入了解协同过滤:技术、应用与示例

此图显示了使用协作筛选预测用户评分的示例。起初&#xff0c;人们会对不同的项目&#xff08;如视频、图像、游戏&#xff09;进行评分。之后&#xff0c;系统将对用户对项目进行评分的预测&#xff0c;而用户尚未评分。这些预测基于其他用户的现有评级&#xff0c;这些用户与…

在Vite5.x中使用monaco-editor

Uncaught (in promise) Error: Unexpected usage at _EditorSimpleWorker.loadForeignModule 如果你像我这样报错,那一般是getWorker部分出问题了. 首先推个帖子: https://github.com/vitejs/vite/discussions/1791 然后是代码 不需要在vite.config.ts中做任何设置,也不用…

硬件基础:数字电路概述与基础门电路

什么是数字逻辑电路 数字电路是一种利用离散信号进行信息处理的电子电路系统。 它的核心特点是使用数字信号来执行算术运算和逻辑运算。数字电路的工作信号是离散的&#xff0c;通常只取两个值&#xff1a;高电平和低电平&#xff0c;分别代表数值“1”和“0”。 这种电路的基础…

CSS基本知识总结

目录 一、CSS语法 二、CSS选择器 三、CSS样式表 1.外部样式表 2.内部样式表 3.内联样式 四、CSS背景 1.背景颜色&#xff1a;background-color 2.背景图片&#xff1a;background-image 3.背景大小&#xff1a;background-size 4.背景图片是否重复&#xff1a;backg…

活动回顾丨云原生技术实践营上海站「云原生 AI 大数据」专场(附 PPT)

AI 势不可挡&#xff0c;“智算”赋能未来。2024 年 1 月 5 日&#xff0c;云原生技术实践营「云原生 AI &大数据」专场在上海落幕。活动聚焦容器、可观测、微服务产品技术领域&#xff0c;以云原生 AI 工程化落地为主要方向&#xff0c;希望帮助企业和开发者更快、更高效地…

大数据学习之Flink算子、了解(Transformation)转换算子(基础篇三)

Transformation转换算子&#xff08;基础篇三&#xff09; 目录 Transformation转换算子&#xff08;基础篇三&#xff09; 三、转换算子&#xff08;Transformation&#xff09; 1.基本转换算子 1.1 映射&#xff08;Map&#xff09; 1.2 过滤&#xff08;filter&#xf…

Redis应用(1)缓存(1.2)------Redis三种缓存问题

三者出现的根本原因是&#xff1a;Redis缓存命中率下降&#xff0c;请求直接打到DB上了。 一、 缓存穿透&#xff1a; 1、定义&#xff1a; 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库。…

C++PythonC# 三语言OpenCV从零开发(4):视频流读取

文章目录 相关链接视频流读取CCSharpPython 总结 相关链接 C&Python&Csharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程&#xff08;附带课程课件资料课件笔记&#xff09; OpenCV 教程中文文档|OpenCV中文 OpenCV教程中文文档|W3Csc…

RabbitMQ 入门到精通

RabbitMQ入门到精通 一、了解RabbitMQ1.基础知识2.多种交换机模型详解 二、服务端搭建1.简单搭建2.信息持久化到容器外部 三、消息生产者和消费者1.消息生产者2.消息消费者3.RabbitTemplate 详解4.RabbitListener详解5.其他注解 四、如何保证消息可靠性1.发送方进行消息发送成功…

Go 虚拟环境管理工具 gvm 原理介绍与使用指南

本文谈下我对 Go 版本管理的一些想法。让后&#xff0c;我将介绍一个小工具&#xff0c;gvm。这个话题说起来也很简单&#xff0c;但如果想用的爽&#xff0c;还是要稍微梳理下。 背景介绍 Go 的版本管理&#xff0c;并非包的依赖管理&#xff0c;而且关于如何在不同的 Go 版…

期待已久!阿里云容器服务 ACK AI 助手正式上线

作者&#xff1a;行疾 大模型技术的蓬勃发展持续引领 AI 出圈潮流&#xff0c;各行各业都在尝试采用 AI 工具实现智能增效。 2023 年云栖大会上&#xff0c;阿里云容器服务团队正式发布 ACK AI 助手&#xff0c;带来大模型增强智能诊断&#xff0c;帮助企业和开发者降低 K8s …

Spark运行架构以及容错机制

Spark运行架构以及容错机制 1. Spark的角色区分1.1 Driver1.2 Excuter 2. Spark-Cluster模式的任务提交流程2.1 Spark On Yarn的任务提交流程2.1.1 yarn相关概念2.1.2 任务提交流程 2.2 Spark On K8S的任务提交流程2.2.1 k8s相关概念2.2.2 任务提交流程 3. Spark-Cluster模式的…

BACnet网关BA100实现Modbus转BACnet,专为Modbus协议设备与BA系统的高效对接设计

随着物联网技术的迅猛发展&#xff0c;人们深刻认识到在智能化生产和生活中&#xff0c;实时、可靠、安全的数据传输至关重要。在此背景下&#xff0c;高性能的物联网数据传输解决方案——协议转换网关应运而生&#xff0c;广泛应用于工业自动化和数字化工厂应用环境中。 钡铼…

搜维尔科技:【简报】元宇宙数字人赛道,《莉思菱娜》

个性有些古灵精怪时儿安静时而吵闹&#xff0c;虽然以人类寿命来算已经200多岁但在 吸血鬼中还只是个小毛头&#xff0c;从中学开始喜欢打扮偏爱黑白灰色系的服装喜欢时 尚圈&#xff0c;立志想成为美妆或时尚网红不过目前还是学生&#xff0c;脸上的浅色血迹是纹身 贴纸&#…

深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本

序列模型(Sequence Model) 基于文本内容及其前后信息进行预测 基于目标不同时刻状态进行预测 基于数据历史信息进行预测 序列模型:输入或者输出中包含有序列数据的模型 突出数据的前后序列关系 两大特点: 输入(输出)元素之间是具有顺序关系。不同的顺序,得到的结果应…

安全基础~通用漏洞1

文章目录 知识补充Acess数据库注入MySQL数据库PostgreSQL-高权限读写注入MSSQL-sa高权限读写执行注入Oracle 注入Mongodb 注入sqlmap基础命令 知识补充 order by的意义&#xff1a; union 操作符用于合并两个或多个 select语句的结果集。 union 内部的每个 select 语句必须拥有…

哈希--73. 矩阵置零/medium 理解度A

73. 矩阵置零 1、题目2、题目分析3、复杂度最优解代码示例4、适用场景 1、题目 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,…

$.ajax与同源策略

1.jQuery中的ajax请求 学习Jquery中的ajax,我们借助官方文档 $.ajax(url,[settings]) | jQuery API 3.2 中文文档 | jQuery API 在线手册 使用$.ajax()方法完成图书案例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&quo…

mc我的世界服务器多少钱一个月?

我的世界服务器多少钱一个月&#xff1f;低至7元一个月&#xff0c;阿里云和腾讯云均可以选择mc服务器&#xff0c;阿里云2核2G3M轻量服务器87元一年、腾讯云轻量2核2G3M服务器88元一年&#xff0c;阿里云ECS云服务器2核2G3M带宽99元一年&#xff0c;腾讯云2核4G5M带宽轻量应用…

RabbitMQ中交换机的应用 ,原理 ,案例的实现

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是平顶山大师&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《RabbitMQ中交换机的应用及原理&#xff0c;案…