This commit is contained in:
Archer
2026-02-12 18:02:02 +08:00
committed by GitHub
parent 76d6234de6
commit 0ac8bca17c
44 changed files with 871 additions and 456 deletions

View File

@@ -71,4 +71,8 @@ import FastGPTLink from '@/components/docs/linkFastGPT'; #FastGPT跳转链接组
### 增加顶层导航栏
1. 在 `FastGPT/document/app/[lang]/docs/layout.tsx` 文件中新增导航。
1.`FastGPT/document/app/[lang]/docs/layout.tsx` 文件中新增导航。
### 重定向
`FastGPT/document/components/docs/not-found.tsx`文件中新增重定向规则。

View File

@@ -63,9 +63,9 @@
pre,
code {
border-radius: 16px;
background: #F5F6F7;
background: #f5f6f7;
font-family: Alef;
font-size: 1.0rem;
font-size: 1rem;
font-weight: 400;
line-height: 16px;
letter-spacing: 0.48px;
@@ -87,7 +87,7 @@ div[role='tabpanel'] figure:has(+ p) pre code {
}
pre {
padding: 24px 0 24px 24px ;
padding: 24px 30px 24px 24px;
}
pre code {
@@ -118,33 +118,33 @@ code span {
margin: 0 0.2em;
color: #272727;
background: #f5f6f7;
font-family: "PingFang SC";
font-family: 'PingFang SC';
font-size: 14px;
font-style: normal;
font-weight: 500;
line-height: 180%;
line-height: 180%;
letter-spacing: 0.056px;
border: none;
border-radius: 8px;
}
.dark :not(pre) > code {
color: #E6E6E6 !important;
color: #e6e6e6 !important;
background: #282828 !important;
}
div[role="tablist"] ~ div:has(figure, p, ul) {
div[role='tablist'] ~ div:has(figure, p, ul) {
border-radius: 0 !important;
border: solid 1.5px #e5e5e5;
border-radius: 0.75rem !important;
}
.dark div[role="tablist"] ~ div:has(figure, p, ul) {
.dark div[role='tablist'] ~ div:has(figure, p, ul) {
border: solid 1.5px #535353;
}
.dark div[role="tablist"] {
background-color: #1E1E1E;
.dark div[role='tablist'] {
background-color: #1e1e1e;
}
/* 代码块下方的滚动条样式 */
@@ -153,31 +153,31 @@ div.bg-fd-secondary:has(pre) {
}
.dark div.bg-fd-secondary:has(pre) {
background-color: #1E1E1E;
background-color: #1e1e1e;
}
div.bg-fd-secondary:has(pre)::-webkit-scrollbar-track {
background: #e8e8e8;
background: #e8e8e8;
}
div.bg-fd-secondary:has(pre)::-webkit-scrollbar-thumb {
background: #b0b0b0;
background: #b0b0b0;
}
div.bg-fd-secondary:has(pre)::-webkit-scrollbar-thumb:hover {
background: #909090;
background: #909090;
}
.dark div.bg-fd-secondary:has(pre)::-webkit-scrollbar-track {
background: #1a1a1a;
background: #1a1a1a;
}
.dark div.bg-fd-secondary:has(pre)::-webkit-scrollbar-thumb {
background: #404040;
background: #404040;
}
.dark div.bg-fd-secondary:has(pre)::-webkit-scrollbar-thumb:hover {
background: #606060;
background: #606060;
}
/* 代码块中的滚动条样式优化 */
@@ -265,8 +265,8 @@ div[data-state='open'].fixed.inset-0.z-50 {
}
/* 复制按钮容器和按钮样式 */
div[class*="bg-fd-card"]:has(button[aria-label='Copy Text']),
div[class*="bg-fd-card"]:has(button[aria-label='Copied Text']) {
div[class*='bg-fd-card']:has(button[aria-label='Copy Text']),
div[class*='bg-fd-card']:has(button[aria-label='Copied Text']) {
right: 26px;
top: 24px;
display: flex;
@@ -305,7 +305,7 @@ button[aria-label='Copy Text']::before {
background-image: url('../public/icons/copy.svg');
width: 26px;
height: 26px;
transition: filter 0.2s ease;
transition: filter 0.2s ease;
}
/* 鼠标悬停时使复制图标颜色变深 */
@@ -419,13 +419,13 @@ div[data-rmiz-modal-overlay='visible'] {
--color-fd-background: #000000;
--color-fd-foreground: hsl(220, 60%, 94.5%);
--color-fd-muted: hsl(220, 50%, 10%);
--color-fd-muted-foreground: #B0B0B0;
--color-fd-muted-foreground: #b0b0b0;
--color-fd-popover: hsl(220, 50%, 10%);
--color-fd-popover-foreground: hsl(220, 60%, 94.5%);
--color-fd-card: hsla(220, 56%, 15%, 0.4);
--color-fd-card-foreground: hsl(220, 60%, 94.5%);
--color-fd-border: hsla(220, 50%, 50%, 0.2);
--color-fd-primary: #C2D3FF; /* 文本高亮色 */
--color-fd-primary: #c2d3ff; /* 文本高亮色 */
--color-fd-primary-foreground: hsl(0, 0%, 9%);
--color-fd-secondary: hsl(220, 50%, 20%);
--color-fd-secondary-foreground: hsl(220, 80%, 90%);
@@ -443,36 +443,35 @@ button[data-search-full] {
}
.dark\:text-blue-400:where(.dark, .dark *) {
color: #C2D3FF;
color: #c2d3ff;
background-color: #434548;
}
.dark div[role="tabpanel"].bg-fd-background {
background-color: #1E1E1E;
.dark div[role='tabpanel'].bg-fd-background {
background-color: #1e1e1e;
}
div[role="tabpanel"].bg-fd-background {
background-color: #F7F7F8;
div[role='tabpanel'].bg-fd-background {
background-color: #f7f7f8;
}
div[role="tabpanel"].bg-fd-background > div > ul {
div[role='tabpanel'].bg-fd-background > div > ul {
margin: 0;
display: flex;
flex-direction: column;
gap: 10px;
}
.dark div[role="tabpanel"].bg-fd-background > div > ul {
.dark div[role='tabpanel'].bg-fd-background > div > ul {
margin: 0;
background-color: #1E1E1E;
background-color: #1e1e1e;
}
div[role="tabpanel"].bg-fd-background > div > ul > li {
div[role='tabpanel'].bg-fd-background > div > ul > li {
margin: 0;
}
button[role="tab"] {
button[role='tab'] {
padding-top: 16px;
padding-bottom: 16px;
}
}

View File

@@ -20,7 +20,8 @@ const prefixMap: Record<string, string> = {
'/docs/FAQ': '/docs/faq',
'/docs/guide': '/docs/introduction/guide',
'/docs/shopping_cart': '/docs/introduction/shopping_cart',
'/docs/agreement': '/docs/protocol'
'/docs/agreement': '/docs/protocol',
'/docs/introduction/development/openapi': '/docs/introduction/openapi'
};
const fallbackRedirect = '/docs/introduction';

View File

@@ -1,5 +1,5 @@
---
title: Docker Compose 快速部署
title: Docker 快速部署
description: 使用 Docker Compose 快速部署 FastGPT
---
@@ -9,8 +9,6 @@ import { Alert } from '@/components/docs/Alert';
1. 基础的网络知识:端口,防火墙……
2. Docker 和 Docker Compose 基础知识
3. 大模型相关接口和参数
4. RAG 相关知识:向量模型,向量数据库,向量检索
## 部署架构图
@@ -119,149 +117,68 @@ brew install orbstack
## 开始部署
### 1. 获取 `docker-compose.yml` 和 `config.json` 配置文件
### 1. 获取配置文件
#### 方法一:使用脚本部署
#### 方法一:使用交互式脚本部署
<Tabs items={['PgVector版本','Oceanbase版本','Milvus版本','Zilliz版本','SeekDB版本']}>
<Tab value="PgVector版本">
国内镜像(阿里云)
需要在 Linux/MacOS/Windows WSL 环境下执行引导用户选择部署环境、向量库版本IP地址等。
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=cn --vector=pg
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh)
```
非国内镜像(dockhub, ghcr)
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=global --vector=pg
```
需要在 Linux/MacOS/Windows WSL 环境下执行
</Tab>
<Tab value="Oceanbase版本">
国内镜像(阿里云)
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=cn --vector=oceanbase
```
非国内镜像(dockhub, ghcr)
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=global --vector=oceanbase
```
需要在 Linux/MacOS/Windows WSL 环境下执行
</Tab>
<Tab value="Milvus版本">
国内镜像(阿里云)
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=cn --vector=milvus
```
非国内镜像(dockhub, ghcr)
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=global --vector=milvus
```
需要在 Linux/MacOS/Windows WSL 环境下执行
</Tab>
<Tab value="Zilliz版本">
国内镜像(阿里云)
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=cn --vector=zilliz
```
非国内镜像(dockhub, ghcr)
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=global --vector=zilliz
```
需要在 Linux/MacOS/Windows WSL 环境下执行
zilliz 还需要获取密钥,参考 [部署 Zilliz 版本获取账号和密钥](#部署-zilliz-版本获取账号和密钥)
</Tab>
<Tab value="SeekDB版本">
国内镜像(阿里云)
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=cn --vector=seekdb
```
非国内镜像(dockhub, ghcr)
```bash
bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=global --vector=seekdb
```
需要在 Linux/MacOS/Windows WSL 环境下执行
<Alert icon="🤖" context="success">
SeekDB 使用 MySQL 协议,兼容 OceanBase 的所有特性:
- 端口3306默认
- 连接字符串格式:`mysql://root%40tenantname:password@host:3306/database`
- 环境变量:`SEEKDB_URL`
</Alert>
</Tab>
</Tabs>
#### 方法二:手动下载部署
如果部署环境为非 *nix 环境或无法访问外网,需要手动下载 `docker-compose.yml` 进行部署
选择并下载您的 `docker-compose.yml` 文件
- Pgvector
1. 下载 `docker-compose.yml` 文件
<details>
<summary>点击展开查看不同数据库的 docker-compose 配置文件下载地址</summary>
- **Pgvector**
- 中国大陆地区镜像源(阿里云)[docker-compose.pg.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.pg.yml)
- 全球镜像源(dockerhub, ghcr)[docker-compose.pg.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.pg.yml)
- Oceanbase
- **Oceanbase**
- 中国大陆地区镜像源(阿里云)[docker-compose.ob.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.ob.yml)
- 全球镜像源(dockerhub, ghcr)[docker-compose.ob.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.ob.yml)
- Milvus
- **Milvus**
- 中国大陆地区镜像源(阿里云)[docker-compose.milvus.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.milvus.yml)
- 全球镜像源(dockerhub, ghcr)[docker-compose.milvus.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.milvus.yml)
- Zilliz
- **Zilliz**
- 中国大陆地区镜像源(阿里云)[docker-compose.zilliz.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.zilliz.yml)
- 全球镜像源(dockerhub, ghcr)[docker-compose.zilliz.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.zilliz.yml)
- SeekDB
- **SeekDB**
- 中国大陆地区镜像源(阿里云)[docker-compose.seekdb.yml](https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.seekdb.yml)
- 全球镜像源(dockerhub, ghcr)[docker-compose.seekdb.yml](https://doc.fastgpt.cn/deploy/docker/global/docker-compose.seekdb.yml)
2. 下载 `config.json` 文件:
- [config.json](https://doc.fastgpt.cn/deploy/config/config.json)
</details>
下载 config.json 文件
- [config.json](https://doc.fastgpt.cn/deploy/config/config.json)
<Alert icon="🤖" context="success">
### 2. 修改环境变量
所有 `docker-compose.yml` 配置文件中 `MongoDB` 为 5.x需要用到AVX指令集部分 CPU 不支持,需手动更改其镜像版本为 4.4.24\*\*需要自己在docker hub下载阿里云镜像没做备份
1. 按照您的需求自行修改环境变量,建议在生产环境修改账号密码等。
2. 对于 Zilliz 版本 还需要获取密钥,参考 [部署 Zilliz 版本获取账号和密钥](#部署-zilliz-版本获取账号和密钥)
</Alert>
### 2. 开放外网端口/配置域名
以下两个端口必须被访问到:
1. 指向 3000 端口FastGPT 主服务)
2. 指向 9000 端口S3 服务)
### 3. 修改环境变量
1. 修改`STORAGE_EXTERNAL_ENDPOINT`变量改成客户端和FastGPT 服务均可访问的地址。
**重要:**
> 填入的地址不可为`127.0.0.1`或者`localhost`等本地回环地址,可填 Docker 部署时的宿主机本地IP但是需要把宿主机固定为静态 IP或者统一为一个固定域名目的是为了避免对象存储签名 URL 时,签发与上传的 URL 不一致导致的 403 错误。
>
> 具体查看 [对象存储配置及常见问题](/docs/introduction/development/object-storage)
2. 按照您的需求自行修改环境变量,建议在生产环境修改账号密码等。
3. 对于 Zilliz 版本 还需要获取密钥,参考 [部署 Zilliz 版本获取账号和密钥](#部署-zilliz-版本获取账号和密钥)
### 4. 修改 config.json 配置文件
### 3. 修改 config.json 配置文件
修改`config.json`文件中的`mcpServerProxyEndpoint`值,设置成`mcp server`的公网可访问地址yml 文件中默认给出了映射到 3005 端口,如通过 IP 访问,则可能是:`120.172.2.10:3005`。
### 5. 启动容器
### 3. 开放外网端口/配置域名
以下端口必须被访问到:
1. 3000 端口FastGPT 主服务)
2. 9000 端口S3 服务)
1. 3005 端口FastGPT SSE MCP server 服务)
### 6. 启动容器
在 docker-compose.yml 同级目录下执行。请确保`docker-compose`版本最好在2.17以上,否则可能无法执行自动化命令。
@@ -270,19 +187,19 @@ bash <(curl -fsSL https://doc.fastgpt.cn/deploy/install.sh) --region=global --ve
docker-compose up -d
```
### 6. 访问 FastGPT
### 7. 访问 FastGPT
可通过第二步开放的端口/域名访问 FastGPT。
登录用户名为 `root`,密码为`docker-compose.yml`环境变量里设置的 `DEFAULT_ROOT_PSW`。
每次重启容器,都会自动初始化 root 用户,密码为 `1234`(与环境变量中的`DEFAULT_ROOT_PSW`一致)。
### 7. 配置模型
### 8. 配置模型
- 首次登录FastGPT后系统会提示未配置`语言模型`和`索引模型`,并自动跳转模型配置页面。系统必须至少有这两类模型才能正常使用。
- 如果系统未正常跳转,可以在`账号-模型提供商`页面,进行模型配置。[点击查看相关教程](/docs/introduction/development/modelConfig/ai-proxy)
- 目前已知可能问题:首次进入系统后,整个浏览器 tab 无法响应。此时需要删除该tab重新打开一次即可。
### 8. 安装系统插件
### 9. 安装系统插件
从 V4.14.0 版本开始fastgpt-plugin 镜像仅提供运行环境,不再预装系统插件,所有 FastGPT 系统需手动安装系统插件。
@@ -302,6 +219,16 @@ docker-compose up -d
| 0.5.x | >= 4.14.6 |
| < 0.5.0 | < 4.14.5 |
### S3 无法正常连接
检查`STORAGE_EXTERNAL_ENDPOINT`变量,需设置成客户端和 FastGPT 服务均可访问的地址。
**重要:**
> 填入的地址不可为`127.0.0.1`或者`localhost`等本地回环地址,可填 Docker 部署时的宿主机本地IP但是需要把宿主机固定为静态 IP或者统一为一个固定域名目的是为了避免对象存储签名 URL 时,签发与上传的 URL 不一致导致的 403 错误。
>
> 具体查看 [对象存储配置及常见问题](/docs/introduction/development/object-storage)
### 登录系统后,浏览器无法响应

View File

@@ -1,5 +1,5 @@
---
title: 快速开始本地开发
title: 开始本地开发
description: 对 FastGPT 进行开发调试
---

View File

@@ -5,11 +5,11 @@
"pages": [
"quick-start",
"sealos",
"intro",
"docker",
"faq",
"intro",
"configuration",
"object-storage",
"faq",
"signoz",
"modelConfig",
"custom-models",

View File

@@ -1,68 +0,0 @@
---
title: 快速了解 FastGPT
description: FastGPT 的能力与优势
---
import { Alert } from '@/components/docs/Alert';
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,将智能对话与可视化编排完美结合,让 AI 应用开发变得简单自然。无论您是开发者还是业务人员,都能轻松打造专属的 AI 应用。
<Alert icon="🤖" context="success">
快速开始体验
- 海外版:[https://fastgpt.io](https://fastgpt.io)
- 国内版:[https://fastgpt.cn](https://fastgpt.cn)
</Alert>
| | |
| --------------------- | --------------------------------- |
| ![](/imgs/intro/image1.png) | ![](/imgs/intro/image2.png) |
# FastGPT 的优势
## 1. 简单灵活,像搭积木一样简单 🧱
像搭乐高一样简单有趣FastGPT 提供丰富的功能模块,通过简单拖拽就能搭建出个性化的 AI 应用,零代码也能实现复杂的业务流程。
## 2. 让数据更智能 🧠
FastGPT 提供完整的数据智能化解决方案,从数据导入、预处理到知识匹配,再到智能问答,全流程自动化。配合可视化的工作流设计,轻松打造专业级 AI 应用。
## 3. 开源开放,易于集成 🔗
FastGPT 基于 Apache 2.0 协议开源,支持二次开发。通过标准 API 即可快速接入,无需修改源码。支持 ChatGPT、Claude、DeepSeek 和文心一言等主流模型,持续迭代优化,始终保持产品活力。
---
# FastGPT 能做什么
## 1. 全能知识库
可轻松导入各式各样的文档及数据,能自动对其开展知识结构化处理工作。同时,具备支持多轮上下文理解的智能问答功能,还可为用户带来持续优化的知识库管理体验。
![](/imgs/intro/image3.png)
## 2. 可视化工作流
FastGPT直观的拖拽式界面设计可零代码搭建复杂业务流程。还拥有丰富的功能节点组件能应对多种业务需求有着灵活的流程编排能力按需定制业务流程。
![](/imgs/intro/image4.png)
## 3. 数据智能解析
FastGPT知识库系统对导入数据的处理极为灵活可以智能处理PDF文档的复杂结构保留图片、表格和LaTeX公式自动识别扫描文件并将内容结构化为清晰的Markdown格式。同时支持图片自动标注和索引让视觉内容可被理解和检索确保知识在AI问答中能被完整、准确地呈现和应用。
![](/imgs/intro/image5.png)
## 4. 工作流编排
基于 Flow 模块的工作流编排,可以帮助你设计更加复杂的问答流程。例如查询数据库、查询库存、预约实验室等。
![](/imgs/intro/image6.png)
## 5. 强大的 API 集成
FastGPT 完全对齐 OpenAI 官方接口,支持一键接入企业微信、公众号、飞书、钉钉等平台,让 AI 能力轻松融入您的业务场景。
![](/imgs/intro/image7.png)
---
# 核心特性
- 开箱即用的知识库系统
- 可视化的低代码工作流编排
- 支持主流大模型
- 简单易用的 API 接口
- 灵活的数据处理能力
---
# 知识库核心流程图
![](/imgs/intro/image8.png)

View File

@@ -7,9 +7,9 @@
"cloud",
"commercial",
"development",
"openapi",
"---功能介绍---",
"...guide"
"...guide",
"openapi"
],
"order": 1
}

View File

@@ -148,7 +148,7 @@ curl --location --request POST '{{host}}/shareAuth/start' \
该接口无规定返回值。
响应值与[chat 接口格式相同](/docs/introduction/development/openapi/intro/#响应),仅多了一个`token`。
响应值与[chat 接口格式相同](/docs/introduction/openapi/intro/#响应),仅多了一个`token`。
重点关注:`totalPoints`(总消耗AI积分)`token`(Token消耗总数)

View File

@@ -3,7 +3,6 @@ title: FastGPT Toc
description: FastGPT Toc
---
- [/en/docs/introduction/index](/en/docs/introduction/index)
- [/en/docs/protocol/open-source](/en/docs/protocol/open-source)
- [/en/docs/protocol/privacy](/en/docs/protocol/privacy)
- [/en/docs/protocol/terms](/en/docs/protocol/terms)

View File

@@ -30,7 +30,7 @@ SIGNOZ_STORE_LEVEL=
# 新增以下 6 个变量
LOG_ENABLE_CONSOLE=true # 是否开启控制台打印
LOG_CONSOLE_LEVEL=debug # 控制台打印最低日志等级
LOG_ENABLE_OTEL=true # 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL=false # 是否开启 OTEL 日志收集
LOG_OTEL_LEVEL=info # OTEL 日志收集的最低日志等级
LOG_OTEL_SERVICE_NAME=fastgpt-client # 传递给 OTLP 收集器的服务名称
LOG_OTEL_URL=http://localhost:4318/v1/logs # 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了

View File

@@ -23,7 +23,7 @@ curl --location --request POST 'https://{{host}}/api/admin/initv464' \
## V4.6.4 功能介绍
1. 重写 - 分享链接身份逻辑,采用 localID 记录用户的ID。
2. 商业版新增 - 分享链接 SSO 方案,通过`身份鉴权`地址,仅需`3个接口`即可完全接入已有用户系统。具体参考[分享链接身份鉴权](/docs/introduction/development/openapi/share/)
2. 商业版新增 - 分享链接 SSO 方案,通过`身份鉴权`地址,仅需`3个接口`即可完全接入已有用户系统。具体参考[分享链接身份鉴权](/docs/introduction/openapi/share/)
3. 新增 - 分享链接更多嵌入方式提示更多DIY方式。
4. 优化 - 历史记录模块。弃用旧的历史记录模块,直接在对应地方填写数值即可。
5. 调整 - 知识库搜索模块 topk 逻辑,采用 MaxToken 计算,兼容不同长度的文本块

View File

@@ -24,7 +24,7 @@ curl --location --request POST 'https://{{host}}/api/admin/initv467' \
1. 修改了知识库UI及新的导入交互方式。
2. 优化知识库和对话的数据索引。
3. 知识库 openAPI支持通过 [API 操作知识库](/docs/introduction/development/openapi/dataset)。
3. 知识库 openAPI支持通过 [API 操作知识库](/docs/introduction/openapi/dataset)。
4. 新增 - 输入框变量提示。输入 `{` 号后将会获得可用变量提示。根据社区针对高级编排的反馈,我们计划于 2 月份的版本中,优化变量内容,支持模块的局部变量以及更多全局变量写入。
5. 优化 - 切换团队后会保存记录,下次登录时优先登录该团队。
6. 修复 - API 对话时chatId 冲突问题。

View File

@@ -27,7 +27,7 @@ curl --location --request POST 'https://{{host}}/api/admin/initv469' \
## 外部接口更新
1. 由于计费系统变更,[分享链接对话上报接口](/docs/introduction/development/openapi/share/#5-编写对话结果上报接口可选)需要做一些调整price字段被totalPoints字段取代。inputToken和outputToken不再提供只提供`token`字段总token数量
1. 由于计费系统变更,[分享链接对话上报接口](/docs/introduction/openapi/share/#5-编写对话结果上报接口可选)需要做一些调整price字段被totalPoints字段取代。inputToken和outputToken不再提供只提供`token`字段总token数量
## V4.6.9 更新说明

View File

@@ -163,7 +163,7 @@ curl --location --request POST 'https://{{host}}/api/admin/initv490' \
1. 弃用 - 之前私有化部署的自定义文件解析方案,请同步更新到最新的配置方案。[点击查看 PDF 增强解析配置](/docs/introduction/development/configuration/#使用-doc2x-解析-pdf-文件)
2. 弃用 - 弃用旧版本地文件上传 API/api/core/dataset/collection/create/file以前仅商业版可用的 API该接口已放切换成/api/core/dataset/collection/create/localFile
3. 停止维护,即将弃用 - 外部文件库相关 API可通过 API 文件库替代。
4. API更新 - 上传文件至知识库、创建连接集合、API 文件库、推送分块数据等带有 `trainingType` 字段的接口,`trainingType`字段未来仅支持`chunk`和`QA`两种模式。增强索引模式将设置单独字段:`autoIndexes`,目前仍有适配旧版`trainingType=auto`代码,但请尽快变更成新接口类型。具体可见:[知识库 OpenAPI 文档](/docs/introduction/development/openapi/dataset.md)
4. API更新 - 上传文件至知识库、创建连接集合、API 文件库、推送分块数据等带有 `trainingType` 字段的接口,`trainingType`字段未来仅支持`chunk`和`QA`两种模式。增强索引模式将设置单独字段:`autoIndexes`,目前仍有适配旧版`trainingType=auto`代码,但请尽快变更成新接口类型。具体可见:[知识库 OpenAPI 文档](/docs/introduction/openapi/dataset.md)
## 🚀 新增内容

View File

@@ -33,7 +33,7 @@ description: FastGPT V4.9.2 更新说明
## 重要更新
- 知识库导入数据 API 变更,增加`chunkSettingMode`,`chunkSplitMode`,`indexSize`可选参数,具体可参考 [知识库导入数据 API](/docs/introduction/development/openapi/dataset) 文档。
- 知识库导入数据 API 变更,增加`chunkSettingMode`,`chunkSplitMode`,`indexSize`可选参数,具体可参考 [知识库导入数据 API](/docs/introduction/openapi/dataset) 文档。
## 🚀 新增内容

View File

@@ -5,7 +5,7 @@ description: 通过 API 访问 FastGPT 应用
import { Alert } from '@/components/docs/Alert';
在 FastGPT 中,你可以为每一个应用创建多个 API 密钥,用于访问应用的 API 接口。每个密钥仅能访问一个应用。完整的接口可以[查看应用对话接口](/docs/introduction/development/openapi/intro)。
在 FastGPT 中,你可以为每一个应用创建多个 API 密钥,用于访问应用的 API 接口。每个密钥仅能访问一个应用。完整的接口可以[查看应用对话接口](/docs/introduction/openapi/intro)。
## 获取 API 密钥

View File

@@ -20,7 +20,7 @@
"document/content/docs/introduction/development/custom-models/xinference.mdx": "2025-08-05T23:20:39+08:00",
"document/content/docs/introduction/development/design/dataset.mdx": "2025-07-23T21:35:03+08:00",
"document/content/docs/introduction/development/design/design_plugin.mdx": "2025-11-06T14:47:55+08:00",
"document/content/docs/introduction/development/docker.mdx": "2026-02-11T13:31:15+08:00",
"document/content/docs/introduction/development/docker.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/introduction/development/faq.mdx": "2025-08-12T22:22:18+08:00",
"document/content/docs/introduction/development/intro.mdx": "2025-09-29T11:34:11+08:00",
"document/content/docs/introduction/development/migration/docker_db.mdx": "2025-07-23T21:35:03+08:00",
@@ -36,7 +36,7 @@
"document/content/docs/introduction/development/proxy/nginx.mdx": "2025-07-23T21:35:03+08:00",
"document/content/docs/introduction/development/quick-start.mdx": "2025-10-21T11:58:25+08:00",
"document/content/docs/introduction/development/sealos.mdx": "2025-11-11T14:05:02+08:00",
"document/content/docs/introduction/development/signoz.mdx": "2026-02-12T11:32:33+08:00",
"document/content/docs/introduction/development/signoz.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx": "2025-07-23T21:35:03+08:00",
"document/content/docs/introduction/guide/DialogBoxes/quoteList.mdx": "2025-07-23T21:35:03+08:00",
"document/content/docs/introduction/guide/admin/sso.mdx": "2026-01-05T20:53:39+08:00",
@@ -88,14 +88,13 @@
"document/content/docs/introduction/guide/team_permissions/customDomain.mdx": "2025-12-10T20:07:05+08:00",
"document/content/docs/introduction/guide/team_permissions/invitation_link.mdx": "2025-07-23T21:35:03+08:00",
"document/content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx": "2025-07-23T21:35:03+08:00",
"document/content/docs/introduction/index.en.mdx": "2025-07-23T21:35:03+08:00",
"document/content/docs/introduction/index.mdx": "2025-09-29T11:34:11+08:00",
"document/content/docs/introduction/openapi/app.mdx": "2026-02-11T13:31:15+08:00",
"document/content/docs/introduction/openapi/chat.mdx": "2026-02-11T13:31:15+08:00",
"document/content/docs/introduction/openapi/dataset.mdx": "2026-02-11T13:31:15+08:00",
"document/content/docs/introduction/openapi/intro.mdx": "2026-02-11T13:31:15+08:00",
"document/content/docs/introduction/openapi/share.mdx": "2026-02-11T13:31:15+08:00",
"document/content/docs/introduction/openapi/swagger.mdx": "2026-02-11T13:31:15+08:00",
"document/content/docs/introduction/openapi/app.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/introduction/openapi/chat.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/introduction/openapi/dataset.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/introduction/openapi/intro.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/introduction/openapi/share.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/introduction/openapi/swagger.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/protocol/index.mdx": "2025-07-30T15:38:30+08:00",
"document/content/docs/protocol/open-source.en.mdx": "2025-08-05T23:20:39+08:00",
"document/content/docs/protocol/open-source.mdx": "2025-08-05T23:20:39+08:00",
@@ -103,8 +102,7 @@
"document/content/docs/protocol/privacy.mdx": "2025-12-15T23:36:54+08:00",
"document/content/docs/protocol/terms.en.mdx": "2025-12-15T23:36:54+08:00",
"document/content/docs/protocol/terms.mdx": "2025-12-15T23:36:54+08:00",
"document/content/docs/toc.en.mdx": "2025-08-04T13:42:36+08:00",
"document/content/docs/toc.mdx": "2026-02-11T13:31:15+08:00",
"document/content/docs/toc.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/upgrading/4-10/4100.mdx": "2025-08-02T19:38:37+08:00",
"document/content/docs/upgrading/4-10/4101.mdx": "2025-09-08T20:07:20+08:00",
"document/content/docs/upgrading/4-11/4110.mdx": "2025-08-05T23:20:39+08:00",
@@ -124,8 +122,8 @@
"document/content/docs/upgrading/4-14/4144.mdx": "2026-02-04T14:27:58+08:00",
"document/content/docs/upgrading/4-14/4145.mdx": "2026-01-18T23:59:15+08:00",
"document/content/docs/upgrading/4-14/41451.mdx": "2026-01-20T11:53:27+08:00",
"document/content/docs/upgrading/4-14/4146.mdx": "2026-02-09T10:22:42+08:00",
"document/content/docs/upgrading/4-14/4147.mdx": "2026-02-12T11:32:33+08:00",
"document/content/docs/upgrading/4-14/4146.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/upgrading/4-14/4147.mdx": "2026-02-12T16:37:50+08:00",
"document/content/docs/upgrading/4-8/40.mdx": "2025-08-02T19:38:37+08:00",
"document/content/docs/upgrading/4-8/41.mdx": "2025-08-02T19:38:37+08:00",
"document/content/docs/upgrading/4-8/42.mdx": "2025-08-02T19:38:37+08:00",

View File

@@ -216,8 +216,19 @@ services:
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 控制台打印最低日志等级
LOG_CONSOLE_LEVEL: debug
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
# 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
@@ -259,6 +270,17 @@ services:
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# Log 配置
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
LOG_OTEL_URL: http://localhost:4318/v1/logs
depends_on:
fastgpt-minio:
condition: service_healthy

View File

@@ -193,8 +193,19 @@ services:
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 控制台打印最低日志等级
LOG_CONSOLE_LEVEL: debug
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
# 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
@@ -236,6 +247,17 @@ services:
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# Log 配置
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
LOG_OTEL_URL: http://localhost:4318/v1/logs
depends_on:
fastgpt-minio:
condition: service_healthy

View File

@@ -174,8 +174,19 @@ services:
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 控制台打印最低日志等级
LOG_CONSOLE_LEVEL: debug
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
# 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
@@ -217,6 +228,17 @@ services:
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# Log 配置
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
LOG_OTEL_URL: http://localhost:4318/v1/logs
depends_on:
fastgpt-minio:
condition: service_healthy

View File

@@ -180,8 +180,19 @@ services:
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 控制台打印最低日志等级
LOG_CONSOLE_LEVEL: debug
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
# 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
@@ -223,6 +234,17 @@ services:
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# Log 配置
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
LOG_OTEL_URL: http://localhost:4318/v1/logs
depends_on:
fastgpt-minio:
condition: service_healthy

View File

@@ -157,8 +157,19 @@ services:
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 控制台打印最低日志等级
LOG_CONSOLE_LEVEL: debug
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
# 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
@@ -200,6 +211,17 @@ services:
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# Log 配置
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
LOG_OTEL_URL: http://localhost:4318/v1/logs
depends_on:
fastgpt-minio:
condition: service_healthy

View File

@@ -216,8 +216,19 @@ services:
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 控制台打印最低日志等级
LOG_CONSOLE_LEVEL: debug
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
# 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
@@ -259,6 +270,17 @@ services:
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# Log 配置
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
LOG_OTEL_URL: http://localhost:4318/v1/logs
depends_on:
fastgpt-minio:
condition: service_healthy

View File

@@ -193,8 +193,19 @@ services:
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 控制台打印最低日志等级
LOG_CONSOLE_LEVEL: debug
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
# 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
@@ -236,6 +247,17 @@ services:
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# Log 配置
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
LOG_OTEL_URL: http://localhost:4318/v1/logs
depends_on:
fastgpt-minio:
condition: service_healthy

View File

@@ -174,8 +174,19 @@ services:
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 控制台打印最低日志等级
LOG_CONSOLE_LEVEL: debug
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
# 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
@@ -217,6 +228,17 @@ services:
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# Log 配置
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
LOG_OTEL_URL: http://localhost:4318/v1/logs
depends_on:
fastgpt-minio:
condition: service_healthy

View File

@@ -180,8 +180,19 @@ services:
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 控制台打印最低日志等级
LOG_CONSOLE_LEVEL: debug
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
# 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
@@ -223,6 +234,17 @@ services:
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# Log 配置
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
LOG_OTEL_URL: http://localhost:4318/v1/logs
depends_on:
fastgpt-minio:
condition: service_healthy

View File

@@ -157,8 +157,19 @@ services:
AIPROXY_API_TOKEN: *x-aiproxy-token
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
STORE_LOG_LEVEL: warn
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 控制台打印最低日志等级
LOG_CONSOLE_LEVEL: debug
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
# 传递给 OTLP 收集器的服务名称
LOG_OTEL_SERVICE_NAME: fastgpt-client
# 你的 OTLP 收集器的地址,不要把 /v1/logs 遗漏了
LOG_OTEL_URL: http://localhost:4318/v1/logs
# 工作流最大运行次数
WORKFLOW_MAX_RUN_TIMES: 1000
# 批量执行节点,最大输入长度
@@ -200,6 +211,17 @@ services:
SERVICE_REQUEST_MAX_CONTENT_LENGTH: 10
# 最大 API 请求体大小
MAX_API_SIZE: 10
# Log 配置
# 日志等级: debug, info, warn, error
LOG_LEVEL: info
# 是否开启控制台打印
LOG_ENABLE_CONSOLE: true
# 是否开启 OTEL 日志收集
LOG_ENABLE_OTEL: false
# OTEL 日志收集的最低日志等级
LOG_OTEL_LEVEL: info
LOG_OTEL_SERVICE_NAME: fastgpt-plugin
LOG_OTEL_URL: http://localhost:4318/v1/logs
depends_on:
fastgpt-minio:
condition: service_healthy

View File

@@ -1,171 +1,264 @@
#!/usr/bin/env bash
#
# param:
# --region=cn 中国大陆
# --region=global 全球(默认)
# --vector=pg pg 版本(默认)
# --vector=milvus milvus 版本
# --vector=zilliz zilliz 版本
# --vector=oceanbase oceanbase 版本
# 默认参数
REGION="global"
VECTOR="pg"
# ========== Radio 选择器 ==========
# 使用方向键 ↑↓ 选择,回车确认
radio_select() {
local title="$1"
shift
local options=("$@")
local selected=0
local count=${#options[@]}
# 解析参数
for arg in "$@"; do
case $arg in
--region=*)
REGION="${arg#*=}"
shift
;;
--vector=*)
VECTOR="${arg#*=}"
shift
;;
*)
;;
esac
done
# 检查参数合法性
VALID_VECTOR=("pg" "milvus" "zilliz" "oceanbase")
VECTOR_VALID=false
for v in "${VALID_VECTOR[@]}"; do
if [[ "$VECTOR" == "$v" ]]; then
VECTOR_VALID=true
break
fi
done
if ! $VECTOR_VALID; then
echo "Error: Invalid --vector parameter: $VECTOR"
echo "Available options: pg, milvus, zilliz, oceanbase"
exit 1
fi
if [[ "$REGION" != "global" && "$REGION" != "cn" ]]; then
echo "Error: Invalid --region parameter: $REGION"
echo "Available options: global, cn"
exit 1
fi
echo 'Vector Database:' $VECTOR
echo 'Docker Image Registry: ' $REGION
read -p "Confirm? (y/n)" confirm
if [ "$confirm" != "y" ]; then
echo "Canceled"
exit 1
fi
echo 'Downloading Docker Compose YAML file'
# get the yml file, url:
# region=cn https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.[vector].yml
# region=global https://doc.fastgpt.io/deploy/docker/global/docker-compose.[vector].yml
# 构建下载链接
if [ "$REGION" == "cn" ]; then
YML_URL="https://doc.fastgpt.cn/deploy/docker/cn/docker-compose.${VECTOR}.yml"
else
YML_URL="https://doc.fastgpt.io/deploy/docker/global/docker-compose.${VECTOR}.yml"
fi
# 下载 YAML 文件
curl -O "$YML_URL"
if [ $? -ne 0 ]; then
echo "Error: Failed to download YAML file from $YML_URL"
exit 1
fi
echo "Downloaded docker-compose.${VECTOR}.yml from $YML_URL"
# download config.json file
if [ "$REGION" == "cn" ]; then
CONFIG="https://doc.fastgpt.cn/deploy/config/config.json"
else
CONFIG="https://doc.fastgpt.io/deploy/config/config.json"
fi
# 下载 config.json 文件
curl -O "$CONFIG"
if [ $? -ne 0 ]; then
echo "Error: Failed to download config.json file from $CONFIG"
exit 1
fi
echo "Downloaded config.json from $CONFIG"
mv docker-compose.${VECTOR}.yml docker-compose.yml
# 自动处理 S3 外部地址
echo ""
echo "Detecting available IP addresses for S3 external endpoint..."
# 使用 ifconfig 获取所有 IPv4 地址(排除 127.0.0.1
IP_LIST=()
while IFS= read -r line; do
IP_LIST+=("$line")
done < <(ifconfig 2>/dev/null | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')
# 显示所有检测到的 IP 地址供用户选择
if [ ${#IP_LIST[@]} -gt 0 ]; then
echo "Available IP addresses:"
for i in "${!IP_LIST[@]}"; do
echo " [$((i+1))] ${IP_LIST[$i]}"
done
echo " [0] Enter custom IP or domain"
echo ""
echo "$title"
read -p "Select IP address (1-${#IP_LIST[@]}, 0 for custom, Enter for #1): " ip_choice
# 绘制选项
for i in "${!options[@]}"; do
if [ $i -eq $selected ]; then
printf " \033[36m●\033[0m %s\n" "${options[$i]}"
else
printf " ○ %s\n" "${options[$i]}"
fi
done
# 默认选择第一个
if [ -z "$ip_choice" ]; then
ip_choice=1
fi
# 隐藏光标
tput civis 2>/dev/null
if [ "$ip_choice" == "0" ]; then
read -p "Enter your custom IP address or domain: " LOCAL_IP
elif [ "$ip_choice" -ge 1 ] 2>/dev/null && [ "$ip_choice" -le ${#IP_LIST[@]} ] 2>/dev/null; then
LOCAL_IP="${IP_LIST[$((ip_choice-1))]}"
else
echo "Invalid selection, using first IP: ${IP_LIST[0]}"
LOCAL_IP="${IP_LIST[0]}"
fi
else
echo "Could not detect any IP address"
read -p "Enter your IP address or domain for S3 external endpoint: " LOCAL_IP
while true; do
read -rsn1 key
case "$key" in
$'\x1b')
read -rsn2 arrow
case "$arrow" in
'[A') ((selected > 0)) && ((selected--)) ;;
'[B') ((selected < count - 1)) && ((selected++)) ;;
esac
;;
'') break ;;
esac
# 光标上移并重绘
printf "\033[%dA" "$count"
for i in "${!options[@]}"; do
printf "\033[K"
if [ $i -eq $selected ]; then
printf " \033[36m●\033[0m %s\n" "${options[$i]}"
else
printf " ○ %s\n" "${options[$i]}"
fi
done
done
# 恢复光标
tput cnorm 2>/dev/null
RADIO_RESULT=$selected
}
# 确保退出时恢复光标
trap 'tput cnorm 2>/dev/null; exit' INT TERM
# ========== 1. 选择镜像源 ==========
radio_select "请选择镜像源 (↑↓ 选择, 回车确认):" "阿里云 (中国大陆)" "GitHub (全球)"
case $RADIO_RESULT in
1) REGION="global" ;;
*) REGION="cn" ;;
esac
# ========== 2. 选择向量数据库 ==========
radio_select "请选择向量数据库 (↑↓ 选择, 回车确认):" "PostgreSQL + pgvector" "Milvus" "Zilliz" "OceanBase" "SeekDB"
case $RADIO_RESULT in
1) VECTOR="milvus" ;;
2) VECTOR="zilliz" ;;
3) VECTOR="oceanbase" ;;
4) VECTOR="seekdb" ;;
*) VECTOR="pg" ;;
esac
# ========== 3. 检测可用 IP ==========
IP_LIST=()
if command -v ip &>/dev/null; then
for ip in $(ip -4 addr show 2>/dev/null | awk '/inet / {split($2,a,"/"); print a[1]}' | grep -v '127.0.0.1'); do
IP_LIST+=("$ip")
done
elif command -v ifconfig &>/dev/null; then
for ip in $(ifconfig 2>/dev/null | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'); do
IP_LIST+=("$ip")
done
fi
# 替换 docker-compose.yml 中 192.168.0.2 为选定的地址
if [ -n "$LOCAL_IP" ]; then
echo "Replacing 192.168.0.2 with $LOCAL_IP in docker-compose.yml..."
# 地址选择函数
# 参数: $1=标题, $2=端口
# 设置 SELECTED_ADDR 和 SELECTED_CUSTOM (true=手动输入, false=列表选择)
select_address() {
local title="$1"
local port="$2"
SELECTED_CUSTOM=false
if [ ${#IP_LIST[@]} -gt 0 ]; then
# 构建带完整地址的选项列表
local opts=()
for ip in "${IP_LIST[@]}"; do
opts+=("http://$ip:$port")
done
opts+=("其他 (手动输入)")
# 根据操作系统选择 sed 命令
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS
sed -i '' "s/192\.168\.0\.2/$LOCAL_IP/g" docker-compose.yml
radio_select "$title" "${opts[@]}"
if [ $RADIO_RESULT -eq ${#IP_LIST[@]} ]; then
echo ""
read -p "请输入完整地址 (如 http://domain:port): " SELECTED_ADDR
SELECTED_CUSTOM=true
else
SELECTED_ADDR="${IP_LIST[$RADIO_RESULT]}"
fi
else
# Linux
sed -i "s/192\.168\.0\.2/$LOCAL_IP/g" docker-compose.yml
echo ""
echo "未检测到可用 IP 地址"
read -p "请输入完整地址 (如 http://domain:port): " SELECTED_ADDR
SELECTED_CUSTOM=true
fi
}
# ========== 4. 选择 S3 访问地址 (端口 9000) ==========
select_address "请选择 S3 访问地址 - 客户端和容器均需可访问 (↑↓ 选择, 回车确认):" 9000
S3_ADDR="$SELECTED_ADDR"
S3_CUSTOM=$SELECTED_CUSTOM
# ========== 5. 选择 SSE MCP 访问地址 (端口 3005) ==========
select_address "请选择 SSE MCP 访问地址 - 客户端和容器均需可访问 (↑↓ 选择, 回车确认):" 3005
MCP_ADDR="$SELECTED_ADDR"
MCP_CUSTOM=$SELECTED_CUSTOM
# ========== 确认配置 ==========
REGION_LABEL="阿里云 (中国大陆)"
if [ "$REGION" == "global" ]; then
REGION_LABEL="GitHub (全球)"
fi
# 构建显示地址
if [ -n "$S3_ADDR" ]; then
if $S3_CUSTOM; then
S3_DISPLAY="$S3_ADDR"
else
S3_DISPLAY="http://$S3_ADDR:9000"
fi
else
S3_DISPLAY="未设置"
fi
if [ -n "$MCP_ADDR" ]; then
if $MCP_CUSTOM; then
MCP_DISPLAY="$MCP_ADDR"
else
MCP_DISPLAY="http://$MCP_ADDR:3005"
fi
else
MCP_DISPLAY="未设置"
fi
echo ""
echo "=============================="
echo " 镜像源: $REGION_LABEL"
echo " 向量数据库: $VECTOR"
echo " S3 地址: $S3_DISPLAY"
echo " MCP 地址: $MCP_DISPLAY"
echo "=============================="
echo ""
read -p "确认以上配置? (y/n) [y]: " confirm
if [ "$confirm" == "n" ]; then
echo "已取消"
exit 1
fi
# ========== 下载文件 ==========
echo ""
echo "正在下载配置文件..."
# 构建下载链接(处理 global 下 zilliz 文件名差异)
VECTOR_FILE="$VECTOR"
if [ "$REGION" == "global" ] && [ "$VECTOR" == "zilliz" ]; then
VECTOR_FILE="ziliiz"
fi
if [ "$REGION" == "cn" ]; then
BASE_URL="https://doc.fastgpt.cn/deploy"
YML_URL="${BASE_URL}/docker/cn/docker-compose.${VECTOR_FILE}.yml"
else
BASE_URL="https://doc.fastgpt.io/deploy"
YML_URL="${BASE_URL}/docker/global/docker-compose.${VECTOR_FILE}.yml"
fi
CONFIG_URL="${BASE_URL}/config/config.json"
# 下载 docker-compose YAML
curl -fsSL -O "$YML_URL"
if [ $? -ne 0 ]; then
echo "错误: 下载 YAML 文件失败: $YML_URL"
exit 1
fi
mv "docker-compose.${VECTOR_FILE}.yml" docker-compose.yml
echo "已下载 docker-compose.yml"
# 下载 config.json
curl -fsSL -O "$CONFIG_URL"
if [ $? -ne 0 ]; then
echo "错误: 下载 config.json 失败: $CONFIG_URL"
exit 1
fi
echo "已下载 config.json"
# ========== 替换 S3 访问地址 ==========
if [ -n "$S3_ADDR" ]; then
if $S3_CUSTOM; then
# 自定义输入:提取主机部分替换 docker-compose 中的 IP
S3_HOST="${S3_ADDR#http://}"
S3_HOST="${S3_HOST#https://}"
S3_HOST="${S3_HOST%%:*}"
S3_HOST="${S3_HOST%%/*}"
else
S3_HOST="$S3_ADDR"
fi
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s/192\.168\.0\.2/$S3_HOST/g" docker-compose.yml
else
sed -i "s/192\.168\.0\.2/$S3_HOST/g" docker-compose.yml
fi
if [ $? -eq 0 ]; then
echo "Successfully updated S3 external endpoint to: http://$LOCAL_IP:9000"
echo "已更新 S3 访问地址为: $S3_DISPLAY"
else
echo "Warning: Failed to replace IP address. Please manually edit docker-compose.yml"
echo "警告: 替换 S3 地址失败,请手动编辑 docker-compose.yml 中的 192.168.0.2"
fi
else
echo "Warning: No IP address provided. Please manually edit docker-compose.yml to replace 192.168.0.2"
echo "警告: 未设置 S3 地址,请手动编辑 docker-compose.yml 中的 192.168.0.2"
fi
# ========== 替换 MCP 访问地址 ==========
if [ -n "$MCP_ADDR" ]; then
if $MCP_CUSTOM; then
MCP_ENDPOINT="$MCP_ADDR"
else
MCP_ENDPOINT="http://$MCP_ADDR:3005"
fi
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "s|\"mcpServerProxyEndpoint\": \"\"|\"mcpServerProxyEndpoint\": \"$MCP_ENDPOINT\"|g" config.json
else
sed -i "s|\"mcpServerProxyEndpoint\": \"\"|\"mcpServerProxyEndpoint\": \"$MCP_ENDPOINT\"|g" config.json
fi
if [ $? -eq 0 ]; then
echo "已更新 MCP 访问地址为: $MCP_ENDPOINT"
else
echo "警告: 替换 MCP 地址失败,请手动编辑 config.json 中的 mcpServerProxyEndpoint"
fi
else
echo "警告: 未设置 MCP 地址,请手动编辑 config.json 中的 mcpServerProxyEndpoint"
fi
# ========== 完成 ==========
echo ""
echo "Installation success! What's next:"
echo "1. Edit the yml file: vim docker-compose.yml"
echo "2. start the service: docker compose up -d"
echo "3. stop the service: docker compose down"
echo "4. restart the service: docker compose restart"
echo "For more information, please visit https://doc.fastgpt.cn/docs/introduction/development/docker"
echo "安装完成! 后续操作:"
echo " 1. 编辑配置: vim docker-compose.yml"
echo " 2. 启动服务: docker compose up -d"
echo ""
echo "详细文档: https://doc.fastgpt.cn/docs/introduction/development/docker"