# Môi Trường

## Biến chung

**CONSOLE\_API\_URL**

URL phụ trợ của bảng điều khiển API, dùng để nối lệnh gọi lại ủy quyền. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://api.console.chatx.ai`

**CONSOLE\_WEB\_URL**

URL giao diện người dùng của bảng điều khiển web, được sử dụng để nối một số địa chỉ giao diện người dùng và để sử dụng cấu hình CORS. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://console.chatx.ai`

**SERVICE\_API\_URL**

Service API Url, được sử dụng để hiển thị Url cơ sở API dịch vụ cho giao diện người dùng. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://api.chatx.ai`

**APP\_API\_URL**

Url phụ trợ API WebApp, được sử dụng để khai báo URL phụ trợ cho front-end API. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://app.chatx.ai`

**APP\_WEB\_URL**

Url WebApp, được sử dụng để hiển thị Url cơ sở API WebAPP cho giao diện người dùng. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://api.app.chatx.ai`

**FILES\_URL**

Tiền tố URL tải xuống hoặc xem trước tệp, được sử dụng để hiển thị bản xem trước tệp hoặc URL tải xuống ở giao diện người dùng hoặc dưới dạng đầu vào mô hình đa phương thức; Để ngăn người khác giả mạo, URL xem trước hình ảnh được ký và có thời gian hết hạn là 5 phút.

## Máy chủ <a href="#server" id="server"></a>

### MODE

Chế độ khởi động, chỉ khả dụng khi bắt đầu bằng docker, không hiệu quả khi bắt đầu từ mã nguồn.

* api

  Khởi động máy chủ API.
* worker

  Bắt đầu công việc xử lý hàng đợi bất đồng bộ.

### DEBUG

Chế độ gỡ lỗi, mặc định là sai. Bạn nên bật cấu hình này để phát triển cục bộ nhằm ngăn ngừa một số sự cố do monkey patch gây ra.

**FLASK\_DEBUG**

Chế độ Flask debug, nó có thể xuất thông tin theo dõi tại giao diện khi bật, thuận tiện cho việc gỡ lỗi.

**SECRET\_KEY**

Khóa được sử dụng để ký cookie phiên một cách an toàn và mã hóa thông tin nhạy cảm trong cơ sở dữ liệu.

Biến này cần được đặt khi bắt đầu lần đầu tiên.

Bạn có thể dùng `openssl rand -base64 42` để tạo ra một khóa mạnh.

**DEPLOY\_ENV**

Môi trường triển khai.

* PRODUCTION (mặc định)

  Môi trường sản xuất.
* TESTING

  Môi trường thử nghiệm. Sẽ có một nhãn màu riêng biệt trên trang giao diện người dùng, cho biết môi trường này là môi trường thử nghiệm.

**LOG\_LEVEL**

Mức đầu ra nhật ký, mặc định là INFO.

Bạn nên đặt nó thành ERROR để sản xuất.

**MIGRATION\_ENABLED**

Khi được đặt thành true, quá trình di chuyển cơ sở dữ liệu sẽ được thực hiện tự động khi vùng chứa khởi động, chỉ khả dụng khi bắt đầu bằng docker, không hiệu quả khi bắt đầu từ mã nguồn.

Bạn cần thực hiện `flask db upgrade` theo cách thủ công trong thư mục api khi bắt đầu từ mã nguồn.

**CHECK\_UPDATE\_URL**

Có nên kích hoạt chính sách kiểm tra phiên bản hay không. Nếu đặt thành false, `https://updates.dify.ai` sẽ không được gọi để kiểm tra phiên bản.

Do hiện tại không thể truy cập trực tiếp giao diện phiên bản dựa trên CloudFlare Worker ở Trung Quốc nên việc đặt biến này thành trống có thể bảo vệ lệnh gọi giao diện này.

**OPENAI\_API\_BASE**

Dùng để thay đổi địa chỉ cơ sở OpenAI, mặc định là <https://api.openai.com/v1>.

Khi OpenAI không thể truy cập được ở Trung Quốc, hãy thay thế nó bằng địa chỉ nhân bản trong nước hoặc khi một mô hình địa phương cung cấp API tương thích OpenAI, nó có thể được thay thế.

#### Cấu hình liên quan đến khởi động vùng chứa

Chỉ hiệu quả khi bắt đầu với hình ảnh docker hoặc docker-compose.

* DIFY\_BIND\_ADDRESS

  Địa chỉ liên kết dịch vụ API, mặc định: 0.0.0.0, tức là tất cả các địa chỉ đều có thể được truy cập.
* DIFY\_PORT

  Số cổng liên kết dịch vụ API, mặc định là 5001.
* SERVER\_WORKER\_AMOUNT

  Số lượng API server workers, tức là số lượng gevent workers. Công thức: `number of cpu cores x 2 + 1`

  Tham khảo: <https://docs.gunicorn.org/en/stable/design.html#how-many-workers>
* SERVER\_WORKER\_CLASS

  Mặc định là gevent. Nếu dùng windows có thể chuyển sang sync hoặc solo.
* GUNICORN\_TIMEOUT

  Yêu cầu hết thời gian xử lý. Mặc định là 200, nên đặt thành 360 để hỗ trợ thời gian kết nối lâu hơn.
* CELERY\_WORKER\_CLASS

  Tương tự như `SERVER_WORKER_CLASS`. Mặc định là gevent. Nếu dùng windows có thể chuyển sang sync hoặc solo.
* CELERY\_WORKER\_AMOUNT

  Số lượng Celery workers. Giá trị mặc định là 1 và có thể được đặt khi cần.

#### Cấu hình cơ sở dữ liệu

Cơ sở dữ liệu sử dụng PostgreSQL. Vui lòng sử dụng lược đồ công khai.

* DB\_USERNAME: tài khoản
* DB\_PASSWORD: mật khẩu
* DB\_HOST: máy chủ cơ sở dữ liệu
* DB\_PORT: số cổng cơ sở dữ liệu, mặc định là 5432
* DB\_DATABASE: tên cơ sở dữ liệu
* SQLALCHEMY\_POOL\_SIZE: Kích thước của nhóm kết nối cơ sở dữ liệu. Mặc định là 30 kết nối, có thể tăng lên một cách thích hợp.
* SQLALCHEMY\_POOL\_RECYCLE: Thời gian tái chế nhóm kết nối cơ sở dữ liệu, mặc định là 3600 giây.
* SQLALCHEMY\_ECHO: Có in SQL hay không, mặc định là false.

#### Cấu hình Redis

Cấu hình Redis này được sử dụng để lưu vào bộ nhớ đệm và cho pub/sub trong khi trò chuyện.

* REDIS\_HOST: Máy chủ Redis
* REDIS\_PORT: Cổng Redis, mặc định là 6379
* REDIS\_DB: Cơ sở dữ liệu Redis, mặc định là 0. Vui lòng sử dụng Cơ sở dữ liệu khác với Session Redis và Celery Broker.
* REDIS\_USERNAME: Tài khoản Redis, mặc định trống
* REDIS\_PASSWORD: Mật khẩu Redis, mặc định trống. Chúng tôi thực sự khuyên bạn nên đặt mật khẩu.
* REDIS\_USE\_SSL: Có sử dụng giao thức SSL để kết nối hay không, mặc định là false

**Cấu hình Celery**

* CELERY\_BROKER\_URL

  Định dạng như sau:

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

  Ví dụ: `redis://:difyai123456@redis:6379/1`
* BROKER\_USE\_SSL

  Nếu được đặt thành true, hãy sử dụng giao thức SSL để kết nối, mặc định là false

**Cấu hình CORS**

Được sử dụng để đặt chính sách truy cập front-end cross-domain.

* CONSOLE\_CORS\_ALLOW\_ORIGINS

  Chính sách đa miền của Console CORS, mặc định là `*`, tức là tất cả các miền đều có thể truy cập.
* WEB\_API\_CORS\_ALLOW\_ORIGINS

  Chính sách cross-domain WebAPP CORS, mặc định là `*`, tức là tất cả các miền đều có thể truy cập.

#### Cấu hình lưu trữ tệp

Được sử dụng để lưu trữ các tệp tập dữ liệu đã tải lên, khóa mã hóa nhóm/đối tượng thuê và các tệp khác.

* STORAGE\_TYPE

  Loại cơ sở lưu trữ

  * local (mặc định)

    Bộ nhớ tệp cục bộ, nếu tùy chọn này được chọn thì cần phải đặt cấu hình `STORAGE_LOCAL_PATH` sau.
  * s3

    Lưu trữ đối tượng S3, nếu tùy chọn này được chọn, các cấu hình có tiền tố S3\_ sau đây cần được thiết lập.
  * azure-blob

    Lưu trữ đối tượng Azure Blob, nếu tùy chọn này được chọn, các cấu hình có tiền tố AZURE\_BLOB\_ sau đây cần được thiết lập.
* STORAGE\_LOCAL\_PATH

  Mặc định là storage, tức là nó được lưu trữ trong thư mục storage của thư mục hiện tại. Nếu bạn đang triển khai bằng docker hoặc docker-compose, hãy đảm bảo gắn thư mục /app/api/storage trong cả hai vùng chứa vào cùng một thư mục cục bộ, nếu không, bạn có thể gặp phải lỗi không tìm thấy tệp.
* S3\_ENDPOINT: Địa chỉ điểm cuối S3
* S3\_BUCKET\_NAME: Tên nhóm S3
* S3\_ACCESS\_KEY: Khóa truy cập S3
* S3\_SECRET\_KEY: Khóa bí mật S3
* S3\_REGION: Thông tin khu vực S3, chẳng hạn như: us-east-1
* AZURE\_BLOB\_ACCOUNT\_NAME: tên tài khoản của bạn, ví dụ: 'chatxai'
* AZURE\_BLOB\_ACCOUNT\_KEY: khóa tài khoản của bạn, ví dụ: 'chatxai'
* AZURE\_BLOB\_CONTAINER\_NAME: tên-container của bạn, ví dụ: 'chatxai-container'
* AZURE\_BLOB\_ACCOUNT\_URL: 'https\://\<your\_account\_name>.blob.core.windows.net'

#### Cấu hình cơ sở dữ liệu vectơ

* VECTOR\_STORE
  * **Các kiểu liệt kê có sẵn bao gồm:**
    * `weaviate`
    * `qdrant`
    * `milvus`
    * `zilliz` (chia sẻ cấu hình tương tự như `milvus`)
    * `pinecone` (chưa mở)
* WEAVIATE\_ENDPOINT

  Địa chỉ điểm cuối weaviate, chẳng hạn như: `http://weaviate:8080`.
* WEAVIATE\_API\_KEY

  Thông tin xác thực khóa api được sử dụng để kết nối với Weaviate.
* WEAVIATE\_BATCH\_SIZE

  Số lượng Đối tượng chỉ mục được tạo theo đợt trong Weaviate, mặc định là 100. Tham khảo tài liệu này: <https://weaviate.io/developers/weaviate/manage-data/import#how-to-set-batch-parameters>
* WEAVIATE\_GRPC\_ENABLED

  Dù có sử dụng phương pháp gRPC để tương tác với Weaviate hay không, hiệu suất sẽ tăng lên rất nhiều khi được bật, có thể không sử dụng được cục bộ, mặc định là đúng.
* QDRANT\_URL

  Địa chỉ điểm cuối Qdrant, chẳng hạn như: `https://your-qdrant-cluster-url.qdrant.tech/`
* QDRANT\_API\_KEY

  Thông tin xác thực khóa api được sử dụng để kết nối với Qdrant.
* PINECONE\_API\_KEY

  Thông tin xác thực khóa api được sử dụng để kết nối với Pinecone.
* PINECONE\_ENVIRONMENT

  Môi trường nơi Pinecone được đặt, ví dụ: `us-east4-gcp`
* MILVUS\_HOST

  Cấu hình máy chủ Milvus.
* MILVUS\_PORT

  Cấu hình cổng Milvus.
* MILVUS\_USER

  Cấu hình người dùng Milvus, mặc định trống.
* MILVUS\_PASSWORD

  Cấu hình mật khẩu Milvus, mặc định trống.
* MILVUS\_SECURE

  Có phải Milvus sử dụng kết nối SSL không, mặc định là false.

**Cấu hình Knowledge**

* UPLOAD\_FILE\_SIZE\_LIMIT:

  Giới hạn kích thước tệp tải lên, mặc định là 15M.
* UPLOAD\_FILE\_BATCH\_LIMIT

  Số lượng tệp tối đa có thể được tải lên cùng một lúc, mặc định là 5.
* ETL\_TYPE

  **Các kiểu liệt kê có sẵn bao gồm:**

  * dify

    Sơ đồ trích xuất tệp độc quyền của ChatX
  * Unstructured

    Sơ đồ trích xuất tệp Unstructured.io
* UNSTRUCTURED\_API\_URL

  Đường dẫn Unstructured API, cần được định cấu hình khi ETL\_TYPE được kích hoạt là Unstructured. Cho ví dụ: `http://unstructured:8000/general/v0/general`

**Cấu hình Multi-modal**

* MULTIMODAL\_SEND\_IMAGE\_FORMAT

  Định dạng của hình ảnh được gửi khi nhập mô hình đa phương thức, mặc định là `base64`, tùy chọn `url`. Độ trễ của cuộc gọi ở chế độ `url` sẽ thấp hơn ở chế độ `base64`. Thông thường nên sử dụng chế độ `base64`tương thích hơn. Nếu được định cấu hình là `url`, bạn cần định cấu hình `FILES_URL` làm địa chỉ có thể truy cập từ bên ngoài để mô hình đa phương thức có thể truy cập hình ảnh.
* UPLOAD\_IMAGE\_FILE\_SIZE\_LIMIT

  Giới hạn kích thước tệp hình ảnh tải lên, mặc định là 10M.

**Cấu hình Sentry**

Được sử dụng để giám sát ứng dụng và theo dõi nhật ký lỗi.

* SENTRY\_DSN

  Địa chỉ Sentry DSN, mặc định trống, khi trống thì mọi thông tin giám sát đều không được báo cáo cho Sentry.
* SENTRY\_TRACES\_SAMPLE\_RATE

  Tỷ lệ báo cáo của các sự kiện Sentry, nếu là 0,01 thì là 1%.
* SENTRY\_PROFILES\_SAMPLE\_RATE

  Tỷ lệ báo cáo của hồ sơ Sentry, nếu là 0,01 thì là 1%.

**Cấu hình Notion Integration**

Các biến cấu hình Notion integration configuration variables có thể thu được bằng cách đăng ký Notion integration: <https://www.notion.so/my-integrations>

* NOTION\_INTEGRATION\_TYPE: Cấu hình là "public" hoặc "internal". Vì URL chuyển hướng OAuth của Notion chỉ hỗ trợ HTTPS, nếu triển khai cục bộ, vui lòng sử dụng tích hợp nội bộ của Notion.
* NOTION\_CLIENT\_SECRET: Khóa bí mật của khách hàng Notion OAuth (được sử dụng cho loại tích hợp công khai)
* NOTION\_CLIENT\_ID: ID ứng dụng khách OAuth (được sử dụng cho loại tích hợp công khai)
* NOTION\_INTERNAL\_SECRET: Khái niệm bí mật tích hợp nội bộ. Nếu giá trị của `NOTION_INTEGRATION_TYPE` là 'internal', bạn cần định cấu hình biến này.

**Cấu hình Mail related**

* MAIL\_TYPE
  * resend
    * MAIL\_DEFAULT\_SEND\_FROM Tên email của người gửi, chẳng hạn như: no-reply <no-reply@dify.ai>, không bắt buộc.
    * RESEND\_API\_KEY API-Key đối với nhà cung cấp Resend email, có thể được lấy từ API-Key.
  * smtp
    * SMTP\_SERVER SMTP địa chỉ máy chủ
    * SMTP\_PORT SMTP số cổng máy chủ
    * SMTP\_USERNAME SMTP tài khoản
    * SMTP\_PASSWORD SMTP mật khẩu
    * SMTP\_USE\_TLS Có sử dụng TLS hay không, mặc định là false
    * MAIL\_DEFAULT\_SEND\_FROM Tên email của người gửi, chẳng hạn như: no-reply <no-reply@dify.ai>, không bắt buộc.

**Khác**

* INVITE\_EXPIRY\_HOURS: Liên kết lời mời thành viên thời gian hợp lệ (giờ), Mặc định: 72.

***

## Web Frontend <a href="#web-frontend" id="web-frontend"></a>

**SENTRY\_DSN**

Địa chỉ Sentry DSN, mặc định trống, khi trống thì mọi thông tin giám sát đều không được báo cáo cho Sentry.

## Deprecated <a href="#deprecated" id="deprecated"></a>

**CONSOLE\_URL**

> ⚠️ Được sửa đổi trong 0.3.8, sẽ không được dùng nữa trong 0.4.9, được thay thế bằng: `CONSOLE_API_URL` và `CONSOLE_WEB_URL`.

Bảng điều khiển URL, được sử dụng để nối lệnh gọi lại ủy quyền, địa chỉ giao diện người dùng bảng điều khiển và sử dụng cấu hình CORS. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://console.dify.ai`.

**API\_URL**

> ⚠️ Được sửa đổi trong 0.3.8, sẽ không được dùng nữa trong 0.4.9, được thay thế bằng `SERVICE_API_URL`.

API URL, được sử dụng để hiển thị URL cơ sở API dịch vụ cho giao diện người dùng. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://api.dify.ai`

**APP\_URL**

> ⚠️ Được sửa đổi trong 0.3.8, sẽ không được dùng nữa trong 0.4.9, được thay thế bằng `APP_API_URL` và `APP_WEB_URL`.

WebApp Url, được sử dụng để hiển thị Url cơ sở API WebAPP cho giao diện người dùng. Nếu trống thì đó là cùng một tên miền. Ví dụ: `https://api.app.dify.ai`

**Cấu hình Session**

> ⚠️ Cấu hình này không còn hợp lệ kể từ v0.3.24.

Chỉ được dịch vụ API sử dụng để xác minh danh tính giao diện.

* SESSION\_TYPE：

  Loại thành phần Session

  * redis (mặc định)

    Nếu chọn tùy chọn này, bạn cần đặt các biến môi trường bắt đầu bằng SESSION\_REDIS\_ bên dưới.
  * sqlalchemy

    Nếu bạn chọn tùy chọn này, kết nối cơ sở dữ liệu hiện tại sẽ được sử dụng và bảng phiên sẽ được sử dụng để đọc và ghi các bản ghi phiên.
* SESSION\_REDIS\_HOST: Máy chủ Redis
* SESSION\_REDIS\_PORT: Cổng Redis, mặc định là 6379
* SESSION\_REDIS\_DB: Cơ sở dữ liệu Redis, mặc định là 0. Vui lòng sử dụng Cơ sở dữ liệu khác với Redis và Celery Broker.
* SESSION\_REDIS\_USERNAME: Tên người dùng Redis, mặc định trống
* SESSION\_REDIS\_PASSWORD: Mật khẩu Redis, mặc định trống. Chúng tôi thực sự khuyên bạn nên đặt mật khẩu.
* SESSION\_REDIS\_USE\_SSL: Có sử dụng giao thức SSL để kết nối hay không, mặc định là false

**Cấu hình Cookie Policy**

> ⚠️ Cấu hình này không còn hợp lệ kể từ v0.3.24.

Được sử dụng để đặt chính sách trình duyệt cho các cookie phiên được sử dụng để xác minh danh tính.

* COOKIE\_HTTPONLY

  Cấu hình cookie httpOnly, mặc định là true.
* COOKIE\_SAMESITE

  Cấu hình cookie SameSite, mặc định là Lax.
* COOKIE\_SECURE

  Cấu hình Cookie Secure, mặc định là false.
