Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 3 additions & 26 deletions deploy/templates/docker-compose.prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ ${{vec.db}}
condition: service_healthy
restart: always
environment:
# 完整变量请参考: https://github.com/labring/FastGPT/blob/main/projects/app/.env.template
<<: [*x-share-db-config, *x-vec-config, *x-log-config]
HOSTNAME: 0.0.0.0
# ==================== 基础配置 ====================
Expand All @@ -168,8 +169,8 @@ ${{vec.db}}
DEFAULT_ROOT_PSW: *x-default-root-psw
# 数据库最大连接数
DB_MAX_LINK: 5
# 自动同步索引(0 表示不同步)
SYNC_INDEX: 1
# 自动同步索引
SYNC_INDEX: true
TOKEN_KEY: fastgpt
# 文件阅读时的密钥
FILE_TOKEN_KEY: filetokenkey
Expand Down Expand Up @@ -207,30 +208,6 @@ ${{vec.db}}
# ==================== 日志与监控 ====================
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client

# ==================== 安全与运行限制 ====================
# 启动 IP 限流(true);部分接口启用 IP 限流策略以防止异常请求
USE_IP_LIMIT: false
# 工作流最大运行次数,避免极端死循环
WORKFLOW_MAX_RUN_TIMES: 1000
# 循环最大运行次数,避免极端死循环
WORKFLOW_MAX_LOOP_TIMES: 100
# 服务器接收请求的最大大小(MB)
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 启用内网 IP 检查
CHECK_INTERNAL_IP: false
# ==================== 上传与账号策略 ====================
# 最大上传文件大小(MB)
UPLOAD_FILE_MAX_SIZE: 1000
# 最大上传文件数量
UPLOAD_FILE_MAX_AMOUNT: 1000
# LLM 请求追踪保留时长(小时)
LLM_REQUEST_TRACKING_RETENTION_HOURS: 6
# ==================== 功能开关与特殊配置 ====================
# 自定义跨域;不配置时默认允许所有跨域(逗号分割)
ALLOWED_ORIGINS:
# HTML 转 Markdown 最大字符数(超过后不执行转换)
MAX_HTML_TRANSFORM_CHARS: 1000000
volumes:
- ./config.json:/app/data/config.json
fastgpt-code-sandbox:
Expand Down
17 changes: 16 additions & 1 deletion document/content/self-host/upgrading/4-15/4150.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,27 @@ title: 'V4.15.0(进行中)'
description: 'FastGPT V4.15.0 更新说明'
---

## 升级指南

### 环境变量变更

```bash
# fastgpt-app, fastgpt-pro 可增加文件解析并发线程数
# 线程最大数量
PARSE_FILE_WORKERS=10
# 文件解析单任务超时时间(秒)
PARSE_FILE_TIMEOUT_SECONDS=300
# 自动同步 mongo 数据库索引, 改成 boolean 字符串值,而不是 0 和 1
SYNC_INDEX=true
```

## 🚀 新增内容

1. 新增循环节点,弃用旧的批量执行。
2. 全局变量输入框支持输入 object 类型数据。
3. 工具调用模式下,如果开启了虚拟机功能,用户对话框上传的文件会直接注入到虚拟机中。
4. 第三方知识库接入钉钉知识库。
5. 增加文件解析/HTML转Markdown/文本切块 worker pool,避免并发太高导致资源耗尽,可通过环境变量调整其 pool 数量。

## ⚙️ 优化

Expand All @@ -27,4 +42,4 @@ description: 'FastGPT V4.15.0 更新说明'

1. 重新调整代码结构,升级 nextjs 最新版,切换至 turbopack 构建,提高构建速度;升级容器默认 node 至 24。
2. 优化 Agent tool 声明和运行,统一所有 tool 的声明和运行方式。
3. 文件上传内容从 system prompt 中放到 user message 中,提高 cache 命中率
3. 文件上传内容从 system prompt 中放到 user message 中,提高 cache 命中率
8 changes: 5 additions & 3 deletions document/data/doc-last-modified.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@
"content/introduction/guide/knowledge_base/collection_tags.mdx": "2026-04-26T21:08:47+08:00",
"content/introduction/guide/knowledge_base/dataset_engine.en.mdx": "2026-04-26T21:08:47+08:00",
"content/introduction/guide/knowledge_base/dataset_engine.mdx": "2026-04-26T21:08:47+08:00",
"content/introduction/guide/knowledge_base/dingtalk_dataset.en.mdx": "2026-04-29T20:39:24+08:00",
"content/introduction/guide/knowledge_base/dingtalk_dataset.mdx": "2026-04-29T20:39:24+08:00",
"content/introduction/guide/knowledge_base/lark_dataset.en.mdx": "2026-04-26T21:08:47+08:00",
"content/introduction/guide/knowledge_base/lark_dataset.mdx": "2026-04-26T21:08:47+08:00",
"content/introduction/guide/knowledge_base/rag.en.mdx": "2026-04-26T21:08:47+08:00",
Expand Down Expand Up @@ -252,7 +254,7 @@
"content/self-host/upgrading/4-14/41481.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/4-14/4149.en.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/4-14/4149.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/4-15/4150.mdx": "2026-04-29T14:53:45+08:00",
"content/self-host/upgrading/4-15/4150.mdx": "2026-04-29T21:00:20+08:00",
"content/self-host/upgrading/outdated/40.en.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/outdated/40.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/outdated/41.en.mdx": "2026-04-26T21:08:47+08:00",
Expand Down Expand Up @@ -393,8 +395,8 @@
"content/self-host/upgrading/outdated/499.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/upgrade-intruction.en.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/upgrade-intruction.mdx": "2026-04-26T21:08:47+08:00",
"content/toc.en.mdx": "2026-04-26T21:28:27+08:00",
"content/toc.mdx": "2026-04-28T18:03:38+08:00",
"content/toc.en.mdx": "2026-04-29T20:39:24+08:00",
"content/toc.mdx": "2026-04-29T20:39:24+08:00",
"content/use-cases/app-cases/dalle3.en.mdx": "2026-04-26T21:08:47+08:00",
"content/use-cases/app-cases/dalle3.mdx": "2026-04-26T21:08:47+08:00",
"content/use-cases/app-cases/english_essay_correction_bot.en.mdx": "2026-04-26T21:08:47+08:00",
Expand Down
1 change: 1 addition & 0 deletions packages/global/common/system/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ export const DEFAULT_USER_AVATAR = '/imgs/avatar/BlueAvatar.svg';
export const isDevEnv = process.env.NODE_ENV === 'development';
export const isProduction = process.env.NODE_ENV === 'production';
export const isTestEnv = process.env.NODE_ENV === 'test';
export const isPhaseProductionBuild = process.env.NEXT_PHASE === 'phase-production-build';
4 changes: 1 addition & 3 deletions packages/global/common/system/types/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import type { SubPlanType } from '../../../support/wallet/sub/type';
import { StandSubPlanLevelMapType } from '../../../support/wallet/sub/type';
import type {
LLMModelItemType,
EmbeddingModelItemType,
TTSModelType,
STTModelType,
RerankModelItemType
} from '../../../core/ai/model.schema';
import { SubTypeEnum } from '../../../support/wallet/sub/constants';

export type NavbarItemType = {
id: string;
Expand Down Expand Up @@ -153,7 +151,7 @@ export type FastGPTFeConfigsType = {

export type SystemEnvType = {
openapiPrefix?: string;
tokenWorkers: number; // token count max worker
tokenWorkers: number; // token count max worker (min 10, max 1000)

datasetParseMaxProcess: number;
vectorMaxProcess: number;
Expand Down
7 changes: 4 additions & 3 deletions packages/service/common/mongo/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import type {
PipelineStage
} from 'mongoose';
import mongoose, { Mongoose } from 'mongoose';
import { env } from '../../env';

const logger = getLogger(LogCategories.INFRA.MONGO);

Expand All @@ -21,8 +22,8 @@ export type {
PipelineStage
};

export const MONGO_URL = process.env.MONGODB_URI as string;
export const MONGO_LOG_URL = (process.env.MONGODB_LOG_URI ?? process.env.MONGODB_URI) as string;
export const MONGO_URL = env.MONGODB_URI;
export const MONGO_LOG_URL = env.MONGODB_LOG_URI ?? env.MONGODB_URI;

export const connectionMongo = (() => {
if (!global.mongodb) {
Expand Down Expand Up @@ -156,8 +157,8 @@ export const getMongoLogModel = <T>(name: string, schema: mongoose.Schema): Mode
const syncMongoIndex = async (model: Model<any>) => {
if (
process.env.NODE_ENV === 'test' ||
process.env.SYNC_INDEX === '0' ||
process.env.NEXT_PHASE === 'phase-production-build' ||
!env.SYNC_INDEX ||
!MONGO_URL
) {
return;
Expand Down
3 changes: 2 additions & 1 deletion packages/service/common/secret/aes256gcm.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import crypto from 'crypto';
import { AES256_SECRET_KEY } from './constants';
import { env } from '../../env';

const AES256_SECRET_KEY = env.AES256_SECRET_KEY;
export const encryptSecret = (text: string) => {
const iv = crypto.randomBytes(16);
const key = crypto.scryptSync(AES256_SECRET_KEY, 'salt', 32);
Expand Down
1 change: 0 additions & 1 deletion packages/service/common/secret/constants.ts

This file was deleted.

21 changes: 16 additions & 5 deletions packages/service/common/string/utils.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,22 @@
import { WorkerNameEnum, runWorker } from '../../worker/utils';
import { env } from '../../env';
import { WorkerNameEnum, getWorkerController } from '../../worker/utils';
import { type ImageType } from '../../worker/readFile/type';

export const htmlToMarkdown = async (html?: string | null) => {
const md = await runWorker<{
rawText: string;
imageList: ImageType[];
}>(WorkerNameEnum.htmlStr2Md, { html: html || '' });
const workerController = getWorkerController<
{ html: string },
{
rawText: string;
imageList: ImageType[];
}
>({
name: WorkerNameEnum.htmlStr2Md,
maxReservedThreads: env.HTML_TO_MARKDOWN_WORKERS,
taskTimeoutMs: 300000,
maxTasksPerWorker: 100
});

const md = await workerController.run({ html: html || '' });

return md.rawText;
};
Loading
Loading