88API88API
使用指南AI 應用API 文件幫助支援

環境變數配置指南

本文件提供了88API支援的所有環境變數及其配置說明。您可以透過設定這些環境變數來自定義系統的行為。

提示

88API 支援從 .env 檔案中讀取環境變數,請參照 .env.example 檔案,使用時請將其重新命名為 .env

基本配置

環境變數說明預設值示例
PORT服務監聽埠3000PORT=8080
TZ時區設定Asia/ShanghaiTZ=America/New_York

資料庫配置

環境變數說明預設值示例
SQL_DSN資料庫連線字串SQLite (data/one-api.db)MySQL: SQL_DSN=root:123456@tcp(localhost:3306)/new-api | PostgreSQL: SQL_DSN=postgresql://root:123456@postgres:5432/new-api
SQL_MAX_IDLE_CONNS空閒連線池最大連線數100SQL_MAX_IDLE_CONNS=50
SQL_MAX_OPEN_CONNS連線池最大開啟連線數1000SQL_MAX_OPEN_CONNS=500
SQL_CONN_MAX_LIFETIME連線最大生命週期(分鐘)60SQL_CONN_MAX_LIFETIME=120
LOG_SQL_DSN日誌表獨立資料庫連線字串-LOG_SQL_DSN=root:123456@tcp(localhost:3306)/oneapi_logs
SQLITE_BUSY_TIMEOUTSQLite鎖等待超時(毫秒)3000SQLITE_BUSY_TIMEOUT=5000

快取配置

環境變數說明預設值示例
REDIS_CONN_STRINGRedis連線字串-REDIS_CONN_STRING=redis://default:redispw@localhost:6379
MEMORY_CACHE_ENABLED是否啟用記憶體快取falseMEMORY_CACHE_ENABLED=true
REDIS_CONN_POOL_SIZERedis連線池大小-REDIS_CONN_POOL_SIZE=10
REDIS_PASSWORDRedis叢集或哨兵模式密碼-REDIS_PASSWORD=your_password
REDIS_MASTER_NAMERedis哨兵模式主節點名稱-REDIS_MASTER_NAME=mymaster
BATCH_UPDATE_ENABLED啟用資料庫批次更新聚合falseBATCH_UPDATE_ENABLED=true
BATCH_UPDATE_INTERVAL批次更新聚合時間間隔(秒)5BATCH_UPDATE_INTERVAL=10

多節點與安全配置

環境變數說明預設值示例
SESSION_SECRET會話金鑰(多機部署必須)-SESSION_SECRET=random_string
CRYPTO_SECRET加密金鑰(加密資料庫內容)-CRYPTO_SECRET=your_crypto_secret
FRONTEND_BASE_URL前端基礎URL-FRONTEND_BASE_URL=https://your-domain.com
SYNC_FREQUENCY快取與資料庫同步頻率(秒)600SYNC_FREQUENCY=60
NODE_TYPE節點型別masterNODE_TYPE=slave
INITIAL_ROOT_TOKEN首次啟動時建立的root使用者令牌-INITIAL_ROOT_TOKEN=your_token
INITIAL_ROOT_ACCESS_TOKEN首次啟動時建立的系統管理令牌-INITIAL_ROOT_ACCESS_TOKEN=your_token

叢集部署

關於如何使用這些環境變數構建完整的叢集部署,請參考叢集部署指南

使用者及令牌配置

環境變數說明預設值示例
DEFAULT_QUOTA新使用者預設配額0DEFAULT_QUOTA=10
GLOBAL_USER_QUOTA全域性使用者配額限制-GLOBAL_USER_QUOTA=100
GENERATE_DEFAULT_TOKEN為新註冊使用者生成初始令牌falseGENERATE_DEFAULT_TOKEN=true
NOTIFICATION_LIMIT_DURATION_MINUTE通知限制的持續時間(分鐘)10NOTIFICATION_LIMIT_DURATION_MINUTE=15
NOTIFY_LIMIT_COUNT指定持續時間內的最大通知數量2NOTIFY_LIMIT_COUNT=3

請求限制配置

環境變數說明預設值示例
GLOBAL_API_RATE_LIMIT全域性API速率限制(單IP三分鐘)180GLOBAL_API_RATE_LIMIT=100
GLOBAL_WEB_RATE_LIMIT全域性Web速率限制(單IP三分鐘)60GLOBAL_WEB_RATE_LIMIT=30
RELAY_TIMEOUT中繼請求超時時間(秒)-RELAY_TIMEOUT=60
USER_CONTENT_REQUEST_TIMEOUT使用者內容下載超時時間(秒)-USER_CONTENT_REQUEST_TIMEOUT=30
STREAMING_TIMEOUT流式一次回覆的超時時間(秒)60STREAMING_TIMEOUT=120
MAX_FILE_DOWNLOAD_MB最大檔案下載大小(MB)20MAX_FILE_DOWNLOAD_MB=50

RELAY_TIMEOUT 設定警告

設定 RELAY_TIMEOUT 環境變數時請謹慎,如果設定過短可能導致以下問題:

  • 上游API已經完成請求並計費,但本地因超時而未完成計費

  • 造成計費不同步,可能導致系統虧損

  • 建議不設定,除非您知道自己在做什麼

渠道管理配置

環境變數說明預設值示例
CHANNEL_UPDATE_FREQUENCY定期更新渠道餘額(分鐘)-CHANNEL_UPDATE_FREQUENCY=1440
CHANNEL_TEST_FREQUENCY定期檢查渠道(分鐘)-CHANNEL_TEST_FREQUENCY=1440
POLLING_INTERVAL批次更新渠道時請求間隔(秒)0POLLING_INTERVAL=5
ENABLE_METRIC是否根據請求成功率禁用渠道falseENABLE_METRIC=true
METRIC_QUEUE_SIZE請求成功率統計佇列大小10METRIC_QUEUE_SIZE=20
METRIC_SUCCESS_RATE_THRESHOLD請求成功率閾值0.8METRIC_SUCCESS_RATE_THRESHOLD=0.7
TEST_PROMPT測試模型時的使用者promptPrint your model name exactly...TEST_PROMPT=Hello

代理配置

環境變數說明預設值示例
RELAY_PROXY中繼請求使用的代理-RELAY_PROXY=http://127.0.0.1:7890
USER_CONTENT_REQUEST_PROXY使用者內容請求使用的代理-USER_CONTENT_REQUEST_PROXY=http://127.0.0.1:7890

模型和請求處理配置

環境變數說明預設值示例
FORCE_STREAM_OPTION覆蓋客戶端stream_options引數trueFORCE_STREAM_OPTION=false
GET_MEDIA_TOKEN是否統計圖片tokentrueGET_MEDIA_TOKEN=false
GET_MEDIA_TOKEN_NOT_STREAM非流模式下是否統計圖片tokentrueGET_MEDIA_TOKEN_NOT_STREAM=false
UPDATE_TASK是否更新非同步任務(MJ、Suno)trueUPDATE_TASK=false
ENFORCE_INCLUDE_USAGE強制stream模式下返回usagefalseENFORCE_INCLUDE_USAGE=true
TIKTOKEN_CACHE_DIRTiktoken編碼器快取目錄,用於存放分詞檔案避免網路下載-TIKTOKEN_CACHE_DIR=/cache/tiktoken
DATA_GYM_CACHE_DIRDataGym快取目錄-DATA_GYM_CACHE_DIR=/cache/data_gym

Tiktoken檔案配置

下載tiktoken檔案後,請按照以下方式重新命名:

  • cl100k_base.tiktoken 重新命名為 9b5ad71b2ce5302211f9c61530b329a4922fc6a4
  • o200k_base.tiktoken 重新命名為 fb374d419588a4632f3f557e76b4b70aebbca790

這些檔案應放置在TIKTOKEN_CACHE_DIR指定的目錄中,以提高token計算效能並減少網路依賴。

Tiktoken配置示例

# Docker環境示例
TIKTOKEN_CACHE_DIR=/app/data/tiktoken

  # 然後將tiktoken檔案下載並重新命名後放入該目錄:

# /app/data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4

# /app/data/tiktoken/fb374d419588a4632f3f557e76b4b70aebbca790

Tiktoken是OpenAI使用的分詞器,用於計算文字的token數量。透過本地快取這些檔案,可以避免系統每次啟動時從網路下載,提高穩定性和效能,特別是在網路受限環境中。

特定模型配置

環境變數說明預設值示例
AZURE_DEFAULT_API_VERSIONAzure渠道預設API版本2024-12-01-previewAZURE_DEFAULT_API_VERSION=2023-05-15
COHERE_SAFETY_SETTINGCohere模型安全設定NONECOHERE_SAFETY_SETTING=CONTEXTUAL
GEMINI_VISION_MAX_IMAGE_NUMGemini模型最大圖片數量16GEMINI_VISION_MAX_IMAGE_NUM=8
GEMINI_VERSIONGemini版本v1GEMINI_VERSION=v1beta
DIFY_DEBUGDify渠道輸出工作流和節點資訊trueDIFY_DEBUG=false

其他配置

環境變數說明預設值示例
EMAIL_SERVER郵件伺服器配置-EMAIL_SERVER=smtp.example.com:25
EMAIL_FROM郵件傳送者地址-EMAIL_FROM=noreply@example.com
EMAIL_PASSWORD郵件伺服器密碼-EMAIL_PASSWORD=yourpassword
ERROR_LOG_ENABLED是否記錄並在前端顯示錯誤日誌falseERROR_LOG_ENABLED=true

已廢棄的環境變數

以下環境變數已被廢棄,請使用系統設定介面中的相應選項:

環境變數替代方式
GEMINI_MODEL_MAP請在系統設定-模型相關設定中設定
GEMINI_SAFETY_SETTING請在系統設定-模型相關設定中設定

多機部署示例

在多機部署場景中,必須設定以下環境變數:

主節點配置

# 資料庫配置 - 使用遠端資料庫
SQL_DSN=root:password@tcp(db-server:3306)/oneapi

# 安全配置
SESSION_SECRET=your_unique_session_secret
CRYPTO_SECRET=your_unique_crypto_secret

# Redis快取配置
REDIS_CONN_STRING=redis://default:password@redis-server:6379

從節點配置

# 資料庫配置 - 使用相同的遠端資料庫
SQL_DSN=root:password@tcp(db-server:3306)/oneapi

# 安全配置 - 與主節點使用相同的金鑰
SESSION_SECRET=your_unique_session_secret
CRYPTO_SECRET=your_unique_crypto_secret

# Redis快取配置 - 與主節點使用相同的Redis
REDIS_CONN_STRING=redis://default:password@redis-server:6379

# 節點型別設定
NODE_TYPE=slave

# 可選:前端基礎URL
FRONTEND_BASE_URL=https://your-domain.com

# 可選:同步頻率
SYNC_FREQUENCY=60

完整叢集配置

這只是基本的多節點配置示例。完整的叢集部署配置、架構說明和最佳實踐,請參考叢集部署指南

Docker Compose中的環境變數示例

下面是一個在Docker Compose配置檔案中設定環境變數的簡要示例:

services:
  new-api:
    image: calciumion/new-api:latest
    environment:
      - TZ=Asia/Shanghai
      - SQL_DSN=root:123456@tcp(mysql:3306)/oneapi
      - REDIS_CONN_STRING=redis://default:redispw@redis:6379
      - SESSION_SECRET=your_unique_session_secret
      - CRYPTO_SECRET=your_unique_crypto_secret
      - MEMORY_CACHE_ENABLED=true
      - GENERATE_DEFAULT_TOKEN=true
      - STREAMING_TIMEOUT=120
      - CHANNEL_UPDATE_FREQUENCY=1440

有關完整的Docker Compose配置,包括更多環境變數設定選項,請參考Docker Compose配置說明文件。