github labring/FastGPT v4.15.0-beta6

pre-release4 hours ago

📦 升级指南

1. 修改默认模型配置

对话标题生成模型不再通过环境变量 CHAT_TITLE_MODEL 配置,升级后可在「模型配置」的「默认模型配置」中选择「对话标题模型」。该配置可以不设置,不设置时不会调用模型生成标题,仅使用用户问题截断作为标题。

如此前配置过 CHAT_TITLE_MODEL,升级后可从 fastgptfastgpt-pro 的环境变量中移除,并在页面中重新选择对应模型。

2. 清理旧 Skill Debug 对话数据

本版本将 Skill Edit 对话迁移到标准 Chat 存储模型。历史 Skill Debug 数据曾把 skillId 写入 Chat 三表的物理 appId 字段,且没有 sourceType;历史 sandbox 实例也需要补齐 sourceType/sourceId。升级后旧 Skill Debug 对话不会被新 Skill Edit 对话读取,但建议执行一次 root-only 初始化接口完成 sandbox 实例字段迁移并清理旧 Skill Debug 对话。该接口仅用于本次升级迁移,不作为 OpenAPI 对外接口。

执行前请先确认新的 Chat source 索引已经创建完成。该初始化接口默认 dry-run,只统计不删除:

curl -X POST 'https://你的域名/api/admin/4150/init4150-beta6' \
  -H 'Content-Type: application/json' \
  -H 'rootkey: 你的ROOT_KEY' \
  -d '{"dryRun":true}'

返回结果确认无误后,将 dryRun 改为 false 执行迁移和删除:

curl -X POST 'https://你的域名/api/admin/4150/init4150-beta6' \
  -H 'Content-Type: application/json' \
  -H 'rootkey: 你的ROOT_KEY' \
  -d '{"dryRun":false}'

接口参数:

参数 类型 默认值 说明
dryRun boolean true 是否只统计不执行。

该接口会全量读取 skills 表,不支持只传部分 Skill ID。原因是 sandbox 实例迁移需要先识别所有 Skill,再把剩余未命中 Skill 且带 appId 的实例统一视为 App sandbox;如果只扫描部分 Skill,会把未扫描到的 Skill sandbox 误标成 App。

迁移逻辑:

  1. 查询 skills 表拿到全部 _id
  2. 对缺少 sourceTypesourceIdagent_sandbox_instances,如果匹配 appId=skillIdmetadata.skillId=skillId,写入 sourceType=skillEditsourceId=skillId,并清理旧 appId / metadata.skillId 字段。
  3. 对剩余缺少 sourceTypesourceId、未命中 Skill 且存在非空 appId 的 sandbox 实例,写入 sourceType=appsourceId=appId,并清理旧 appId / metadata.skillId 字段。
  4. 对已经具备 sourceType/sourceId 但残留旧 appIdmetadata.skillId 的 sandbox 实例,只清理旧字段,不覆盖现有标准归属。
  5. 没有 appIdappId=nullappId="" 且无法通过 metadata.skillId 归属到 Skill 的 orphan sandbox,会在非 dry-run 模式下删除远端 sandbox、OpenSandbox volume、S3 归档和 Mongo 记录;dry-run 只通过 orphanMatchedCount 统计。
  6. 清理旧 Skill Debug chat:先用 apps 表去掉与 App _id 重复的 Skill ID,再删除剩余 Skill ID 下匹配到的旧 chatschatitemschat_item_responses 和旧格式 Chat S3 文件前缀。

该接口不会回填几亿条历史 App Chat 的 sourceType

3. 更新环境变量(可选)

Agent Sandbox 新增包管理镜像源配置。配置后,Agent Sandbox 初始化时会在 sandbox HOME 下写入 npm、yarn、bun、pip 和 uv 的镜像配置文件,提升在私有网络或跨境网络环境中安装依赖的稳定性。

# Agent Sandbox 内 npm/yarn/pnpm/bun 使用的 npm registry
AGENT_SANDBOX_NPM_REGISTRY=
# Agent Sandbox 内 pip/python -m pip/uv 使用的 PyPI index URL
AGENT_SANDBOX_PYPI_INDEX_URL=

该配置会按内容 hash 缓存在 sandbox runtime state 中,同一个 sandbox 仅在配置变化时重新写入。

4. 更新镜像

  • 更新 fastgpt-app(fastgpt 主服务) 镜像 tag: v4.15.0-beta6
  • 更新 fastgpt-pro(fastgpt 商业版) 镜像 tag: v4.15.0-beta6
  • 更新 fastgpt-plugin 镜像 tag: v1.0.0-beta6
  • 更新 aiproxy 镜像 tag: v0.6.2

如果启用 Agent Sandbox,需同步更新下面镜像:

  • 更新 fastgpt-agent-sandbox-proxy 镜像 tag: v0.2.0-beta3
  • 更新 fastgpt-agent-sandbox 镜像 tag: v0.2.0-beta3

风险点

1. LLM 请求追踪记录增加团队隔离

LLM 请求追踪记录(llm_request_records)新增 teamId 字段,GET /api/core/ai/record/getRecord 会按当前登录团队查询 { requestId, teamId },避免仅凭 requestId 读取其他团队的请求体、知识库召回片段和模型响应。

同时,llm_request_records 的唯一索引从单字段 requestId 调整为复合唯一索引 { teamId: 1, requestId: 1 }。如自托管环境关闭了 SYNC_INDEX,升级后需要执行一次索引同步,确保旧的 requestId_1 唯一索引被移除。

风险点:升级前已写入的旧追踪记录没有 teamId,升级后将无法再通过 requestId 查询,页面会按追踪记录已过期处理。该记录本身有 TTL,仅用于临时排查模型调用详情;如需排查历史问题,请在升级前导出相关日志或保留原始请求信息。

🚀 新增内容

  1. 商业版支持本地直连 FastGPT 调试插件。
  2. 沙盒支持自定义 npm 和 pip 源,主动探测版本升级。

⚙️ 优化

  1. 对话标题生成模型改为使用系统默认模型配置管理,便于运行时切换和统一维护。
  2. LLM 请求追踪记录按团队隔离查询,唯一索引调整为 { teamId, requestId },避免 requestId 被其他团队复用读取敏感 trace。
  3. Skill Edit 对话统一使用标准 Chat 存储和清理链路,历史 Skill Debug 对话可通过初始化接口清理。
  4. Agent Sandbox 支持配置 npm 和 PyPI 镜像源,初始化时自动写入常见包管理器配置,减少 sandbox 内依赖安装失败。
  5. PDF 解析兼容 linux/arm64 + Alpine/musl 架构,回退到 pdfjs 解析方案。

🐛 修复

  1. chat/completions 接口,返回 nodeResponse 时候,过滤掉了 q/a/index,该版本恢复返回。

代码优化

  1. chat 接管接口抽象,不再绑定 app, 改成平台级别通用。

What's Changed

Full Changelog: v4.15.0-beta5...v4.15.0-beta6

Don't miss a new FastGPT release

NewReleases is sending notifications on new releases.