diff --git a/README.md b/README.md index 520ffc8bd..5bbc8634f 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,7 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b * [快速开始本地开发](https://doc.tryfastgpt.ai/docs/development/intro/) * [部署 FastGPT](https://doc.tryfastgpt.ai/docs/development/sealos/) * [系统配置文件说明](https://doc.tryfastgpt.ai/docs/development/configuration/) -* [多模型配置](https://doc.tryfastgpt.ai/docs/development/one-api/) +* [多模型配置方案](https://doc.tryfastgpt.ai/docs/development/modelconfig/one-api/) * [版本更新/升级介绍](https://doc.tryfastgpt.ai/docs/development/upgrading/) * [OpenAPI API 文档](https://doc.tryfastgpt.ai/docs/development/openapi/) * [知识库结构详解](https://doc.tryfastgpt.ai/docs/guide/knowledge_base/rag/) @@ -127,7 +127,6 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b 我们正在寻找志同道合的小伙伴,加速 FastGPT 的发展。你可以通过 [FastGPT 2025 招聘](https://fael3z0zfze.feishu.cn/wiki/P7FOwEmPziVcaYkvVaacnVX1nvg)了解 FastGPT 的招聘信息。 - ## 💪 相关项目 - [Laf:3 分钟快速接入三方应用](https://github.com/labring/laf) @@ -139,19 +138,21 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b # -## 👀 其他 -- [保姆级 FastGPT 教程](https://www.bilibili.com/video/BV1n34y1A7Bo/?spm_id_from=333.999.0.0) -- [接入飞书](https://www.bilibili.com/video/BV1Su4y1r7R3/?spm_id_from=333.999.0.0) -- [接入企微](https://www.bilibili.com/video/BV1Tp4y1n72T/?spm_id_from=333.999.0.0) +## 🌿 第三方生态 + +- [COW 个人微信/企微机器人](https://doc.tryfastgpt.ai/docs/use-cases/external-integration/onwechat/) +- [SiliconCloud (硅基流动) —— 开源模型在线体验平台](https://cloud.siliconflow.cn/i/TR9Ym0c4) # -## 🌿 第三方生态 +## 👀 其他 -- [COW 个人微信/企微机器人](https://doc.tryfastgpt.ai/docs/use-cases/external-integration/onwechat/) +- [保姆级 FastGPT 教程](https://www.bilibili.com/video/BV1n34y1A7Bo/?spm_id_from=333.999.0.0) +- [接入飞书](https://www.bilibili.com/video/BV1Su4y1r7R3/?spm_id_from=333.999.0.0) +- [接入企微](https://www.bilibili.com/video/BV1Tp4y1n72T/?spm_id_from=333.999.0.0) # diff --git a/docSite/assets/imgs/image-59.png b/docSite/assets/imgs/image-59.png new file mode 100644 index 000000000..1ae30747d Binary files /dev/null and b/docSite/assets/imgs/image-59.png differ diff --git a/docSite/assets/imgs/image-60.png b/docSite/assets/imgs/image-60.png new file mode 100644 index 000000000..31a0c4761 Binary files /dev/null and b/docSite/assets/imgs/image-60.png differ diff --git a/docSite/assets/imgs/image-61.png b/docSite/assets/imgs/image-61.png new file mode 100644 index 000000000..b4a3c5c7b Binary files /dev/null and b/docSite/assets/imgs/image-61.png differ diff --git a/docSite/assets/imgs/image-62.png b/docSite/assets/imgs/image-62.png new file mode 100644 index 000000000..1a9cd5be6 Binary files /dev/null and b/docSite/assets/imgs/image-62.png differ diff --git a/docSite/assets/imgs/image-63.png b/docSite/assets/imgs/image-63.png new file mode 100644 index 000000000..14829db62 Binary files /dev/null and b/docSite/assets/imgs/image-63.png differ diff --git a/docSite/assets/imgs/image-64.png b/docSite/assets/imgs/image-64.png new file mode 100644 index 000000000..fccce7595 Binary files /dev/null and b/docSite/assets/imgs/image-64.png differ diff --git a/docSite/assets/imgs/image-65.png b/docSite/assets/imgs/image-65.png new file mode 100644 index 000000000..e40ddd56a Binary files /dev/null and b/docSite/assets/imgs/image-65.png differ diff --git a/docSite/assets/imgs/image-66.png b/docSite/assets/imgs/image-66.png new file mode 100644 index 000000000..e23677bb2 Binary files /dev/null and b/docSite/assets/imgs/image-66.png differ diff --git a/docSite/assets/imgs/image-67.png b/docSite/assets/imgs/image-67.png new file mode 100644 index 000000000..cc0b9c611 Binary files /dev/null and b/docSite/assets/imgs/image-67.png differ diff --git a/docSite/assets/imgs/image-68.png b/docSite/assets/imgs/image-68.png new file mode 100644 index 000000000..7de230757 Binary files /dev/null and b/docSite/assets/imgs/image-68.png differ diff --git a/docSite/assets/imgs/image-69.png b/docSite/assets/imgs/image-69.png new file mode 100644 index 000000000..ac82def69 Binary files /dev/null and b/docSite/assets/imgs/image-69.png differ diff --git a/docSite/assets/imgs/image-70.png b/docSite/assets/imgs/image-70.png new file mode 100644 index 000000000..b54295e2d Binary files /dev/null and b/docSite/assets/imgs/image-70.png differ diff --git a/docSite/assets/imgs/image-71.png b/docSite/assets/imgs/image-71.png new file mode 100644 index 000000000..8560c40b2 Binary files /dev/null and b/docSite/assets/imgs/image-71.png differ diff --git a/docSite/assets/imgs/image-72.png b/docSite/assets/imgs/image-72.png new file mode 100644 index 000000000..e2fef0faa Binary files /dev/null and b/docSite/assets/imgs/image-72.png differ diff --git a/docSite/assets/imgs/image-73.png b/docSite/assets/imgs/image-73.png new file mode 100644 index 000000000..065b20f38 Binary files /dev/null and b/docSite/assets/imgs/image-73.png differ diff --git a/docSite/assets/imgs/image-74.png b/docSite/assets/imgs/image-74.png new file mode 100644 index 000000000..fe2f85bed Binary files /dev/null and b/docSite/assets/imgs/image-74.png differ diff --git a/docSite/assets/imgs/image-75.png b/docSite/assets/imgs/image-75.png new file mode 100644 index 000000000..a989e6c74 Binary files /dev/null and b/docSite/assets/imgs/image-75.png differ diff --git a/docSite/assets/imgs/image-76.png b/docSite/assets/imgs/image-76.png new file mode 100644 index 000000000..eb1ab62a6 Binary files /dev/null and b/docSite/assets/imgs/image-76.png differ diff --git a/docSite/assets/imgs/image-77.png b/docSite/assets/imgs/image-77.png new file mode 100644 index 000000000..9d21aee47 Binary files /dev/null and b/docSite/assets/imgs/image-77.png differ diff --git a/docSite/assets/imgs/image-78.png b/docSite/assets/imgs/image-78.png new file mode 100644 index 000000000..25082fe9a Binary files /dev/null and b/docSite/assets/imgs/image-78.png differ diff --git a/docSite/assets/imgs/image-79.png b/docSite/assets/imgs/image-79.png new file mode 100644 index 000000000..207b675c2 Binary files /dev/null and b/docSite/assets/imgs/image-79.png differ diff --git a/docSite/assets/imgs/image-80.png b/docSite/assets/imgs/image-80.png new file mode 100644 index 000000000..9f5d500d2 Binary files /dev/null and b/docSite/assets/imgs/image-80.png differ diff --git a/docSite/assets/imgs/image-81.png b/docSite/assets/imgs/image-81.png new file mode 100644 index 000000000..bf15d98f6 Binary files /dev/null and b/docSite/assets/imgs/image-81.png differ diff --git a/docSite/assets/imgs/image-82.png b/docSite/assets/imgs/image-82.png new file mode 100644 index 000000000..02ac7fd88 Binary files /dev/null and b/docSite/assets/imgs/image-82.png differ diff --git a/docSite/content/zh-cn/docs/development/configuration.md b/docSite/content/zh-cn/docs/development/configuration.md index 57a7fa126..f1fb6e5b1 100644 --- a/docSite/content/zh-cn/docs/development/configuration.md +++ b/docSite/content/zh-cn/docs/development/configuration.md @@ -4,7 +4,7 @@ description: 'FastGPT 配置参数介绍' icon: 'settings' draft: false toc: true -weight: 708 +weight: 707 --- 由于环境变量不利于配置复杂的内容,新版 FastGPT 采用了 ConfigMap 的形式挂载配置文件,你可以在 `projects/app/data/config.json` 看到默认的配置文件。可以参考 [docker-compose 快速部署](/docs/development/docker/) 来挂载配置文件。 @@ -97,7 +97,9 @@ weight: 708 "customExtractPrompt": "", "defaultSystemChatPrompt": "", "defaultConfig": { - "temperature": 1 + "temperature": 1, + "max_tokens": null, + "stream": false } }, { @@ -122,7 +124,9 @@ weight: 708 "customExtractPrompt": "", "defaultSystemChatPrompt": "", "defaultConfig": { - "temperature": 1 + "temperature": 1, + "max_tokens": null, + "stream": false } } ], @@ -185,7 +189,7 @@ weight: 708 } ``` -## 模型提供商 +## 内置的模型提供商ID 为了方便模型分类展示,FastGPT 内置了部分模型提供商的名字和 Logo。如果你期望补充提供商,可[提交 Issue](https://github.com/labring/FastGPT/issues),并提供几个信息: @@ -213,9 +217,33 @@ weight: 708 - Other - 其他 -## 特殊模型 +## ReRank 模型接入 -### ReRank 接入(私有部署) +由于 OneAPI 不支持 Rerank 模型,所以需要单独配置接入,这里 + + +### 使用硅基流动的在线模型 + +有免费的 `bge-reranker-v2-m3` 模型可以使用。 + +1. [点击注册硅基流动账号](https://cloud.siliconflow.cn/i/TR9Ym0c4) +2. 进入控制台,获取 API key: https://cloud.siliconflow.cn/account/ak +3. 修改 FastGPT 配置文件 + +```json +{ + "reRankModels": [ + { + "model": "BAAI/bge-reranker-v2-m3", // 这里的model需要对应 siliconflow 的模型名 + "name": "BAAI/bge-reranker-v2-m3", + "requestUrl": "https://api.siliconflow.cn/v1/rerank", + "requestAuth": "siliconflow 上申请的 key" + } + ] +} +``` + +### 私有部署模型 请使用 4.6.6-alpha 以上版本,配置文件中的 `reRankModels` 为重排模型,虽然是数组,不过目前仅有第1个生效。 @@ -236,44 +264,3 @@ weight: 708 ] } ``` - -### ReRank 接入(硅基流动) - -有免费的 `bge-reranker-v2-m3` 模型可以使用。 - -1. 注册硅基流动账号: https://siliconflow.cn/ -2. 进入控制台,获取 API key: https://cloud.siliconflow.cn/account/ak -3. 修改 FastGPT 配置文件 - -```json -{ - "reRankModels": [ - { - "model": "BAAI/bge-reranker-v2-m3", // 这里的model需要对应 siliconflow 的模型名 - "name": "BAAI/bge-reranker-v2-m3", - "requestUrl": "https://api.siliconflow.cn/v1/rerank", - "requestAuth": "siliconflow 上申请的 key" - } - ] -} -``` - -### ReRank 接入(Cohere) - -这个重排模型对中文不是很好,不如 bge 的好用。 - -1. 申请 Cohere 官方 Key: https://dashboard.cohere.com/api-keys -2. 修改 FastGPT 配置文件 - -```json -{ - "reRankModels": [ - { - "model": "rerank-multilingual-v2.0", // 这里的model需要对应 cohere 的模型名 - "name": "rerank-multilingual-v2.0", - "requestUrl": "https://api.cohere.ai/v1/rerank", - "requestAuth": "Coherer上申请的key" - } - ] -} -``` diff --git a/docSite/content/zh-cn/docs/development/custom-models/chatglm2-m3e.md b/docSite/content/zh-cn/docs/development/custom-models/chatglm2-m3e.md index 775562d84..add2a09f6 100644 --- a/docSite/content/zh-cn/docs/development/custom-models/chatglm2-m3e.md +++ b/docSite/content/zh-cn/docs/development/custom-models/chatglm2-m3e.md @@ -23,7 +23,7 @@ FastGPT 默认使用了 OpenAI 的 LLM 模型和向量模型,如果想要私 也可以通过环境变量引入:sk-key。有关docker环境变量引入的方法请自寻教程,此处不再赘述。 ``` -## 接入 [One API](/docs/development/one-api/) +## 接入 [One API](/docs/development/modelconfig/one-api/) 为 chatglm2 和 m3e-large 各添加一个渠道,参数如下: diff --git a/docSite/content/zh-cn/docs/development/custom-models/xinference.md b/docSite/content/zh-cn/docs/development/custom-models/xinference.md index 6cd1cdee4..a76fbdf31 100644 --- a/docSite/content/zh-cn/docs/development/custom-models/xinference.md +++ b/docSite/content/zh-cn/docs/development/custom-models/xinference.md @@ -102,7 +102,7 @@ xinference launch -n qwen-chat -s 14 -f pytorch ## 将本地模型接入 One API -One API 的部署和接入请参考[这里](/docs/development/one-api/)。 +One API 的部署和接入请参考[这里](/docs/development/modelconfig/one-api/)。 为 qwen1.5-chat 添加一个渠道,这里的 Base URL 需要填 Xinference 服务的端点,并且注册 qwen-chat (模型的 UID) 。 diff --git a/docSite/content/zh-cn/docs/development/docker.md b/docSite/content/zh-cn/docs/development/docker.md index 9996e3c37..c007f345e 100644 --- a/docSite/content/zh-cn/docs/development/docker.md +++ b/docSite/content/zh-cn/docs/development/docker.md @@ -192,7 +192,7 @@ docker restart oneapi 可以通过`ip:3001`访问OneAPI,默认账号为`root`密码为`123456`。 -在OneApi中添加合适的AI模型渠道。[点击查看相关教程](/docs/development/one-api/) +在OneApi中添加合适的AI模型渠道。[点击查看相关教程](/docs/development/modelconfig/one-api/) ### 5. 访问 FastGPT diff --git a/docSite/content/zh-cn/docs/development/faq.md b/docSite/content/zh-cn/docs/development/faq.md index 8094353f5..8f15f7a97 100644 --- a/docSite/content/zh-cn/docs/development/faq.md +++ b/docSite/content/zh-cn/docs/development/faq.md @@ -1,5 +1,5 @@ --- -weight: 749 +weight: 740 title: "私有部署常见问题" description: "FastGPT 私有部署常见问题" icon: upgrade diff --git a/docSite/content/zh-cn/docs/development/modelConfig/_index.md b/docSite/content/zh-cn/docs/development/modelConfig/_index.md new file mode 100644 index 000000000..ba8354c28 --- /dev/null +++ b/docSite/content/zh-cn/docs/development/modelConfig/_index.md @@ -0,0 +1,8 @@ +--- +weight: 745 +title: '模型配置方案' +description: '本模型配置方案' +icon: 'code_blocks' +draft: false +images: [] +--- \ No newline at end of file diff --git a/docSite/content/zh-cn/docs/development/modelConfig/one-api.md b/docSite/content/zh-cn/docs/development/modelConfig/one-api.md new file mode 100644 index 000000000..5a0f74284 --- /dev/null +++ b/docSite/content/zh-cn/docs/development/modelConfig/one-api.md @@ -0,0 +1,189 @@ +--- +title: '通过 OneAPI 接入模型' +description: '通过 OneAPI 接入模型' +icon: 'api' +draft: false +toc: true +weight: 745 +--- + +FastGPT 目前采用模型分离的部署方案,FastGPT 中只兼容 OpenAI 的模型规范(OpenAI 不存在的模型采用一个较为通用的规范),并通过 [One API](https://github.com/songquanpeng/one-api) 来实现对不同模型接口的统一。 + +[One API](https://github.com/songquanpeng/one-api) 是一个 OpenAI 接口管理 & 分发系统,可以通过标准的 OpenAI API 格式访问所有的大模型,开箱即用。 + + +## FastGPT 与 One API 关系 + +可以把 One API 当做一个网关,FastGPT 与 One API 关系: + +![](/imgs/sealos-fastgpt.webp) + +## 部署 + +### Docker 版本 + +`docker-compose.yml` 文件已加入了 OneAPI 配置,可直接使用。默认暴露在 3001 端口。 + +### Sealos 版本 + +* 北京区: [点击部署 OneAPI](https://hzh.sealos.run/?openapp=system-template%3FtemplateName%3Done-api) +* 新加坡区(可用 GPT) [点击部署 OneAPI](https://cloud.sealos.io/?openapp=system-template%3FtemplateName%3Done-api) + +![alt text](/imgs/image-59.png) + +部署完后,可以打开 OneAPI 访问链接,进行下一步操作。 + +## OneAPI 基础教程 + +### 概念 + +1. 渠道: + 1. OneApi 中一个渠道对应一个 `Api Key`,这个 `Api Key` 可以是GPT、微软、ChatGLM、文心一言的。一个`Api Key`通常可以调用同一个厂商的多个模型。 + 2. One API 会根据请求传入的`模型`来决定使用哪一个`渠道`,如果一个模型对应了多个`渠道`,则会随机调用。 +2. 令牌:访问 One API 所需的凭证,只需要这`1`个凭证即可访问`One API`上配置的模型。因此`FastGPT`中,只需要配置`One API`的`baseurl`和`令牌`即可。令牌不要设置任何的模型范围权限,否则容易报错。 + +![alt text](/imgs/image-60.png) + +### 大致工作流程 + +1. 客户端请求 One API +2. 根据请求中的 `model` 参数,匹配对应的渠道(根据渠道里的模型进行匹配,必须完全一致)。如果匹配到多个渠道,则随机选择一个(同优先级)。 +3. One API 向真正的地址发出请求。 +4. One API 将结果返回给客户端。 + +### 1. 登录 One API + +![step5](/imgs/oneapi-step5.png) + +### 2. 创建渠道 + +在 One API 中添加对应渠道,直接点击 【添加基础模型】,不要遗漏了向量模型(Embedding) + +![step6](/imgs/oneapi-step6.png) + +### 3. 创建令牌 + +| | | +| --- | --- | +| ![step7](/imgs/oneapi-step7.png) | ![alt text](/imgs/image-61.png) | + +### 4. 修改账号余额 + +One API 默认 root 用户只有 200刀,可以自行修改编辑。 + +![alt text](/imgs/image-62.png) + +### 5. 修改 FastGPT 的环境变量 + +有了 One API 令牌后,FastGPT 可以通过修改 `baseurl` 和 `key` 去请求到 One API,再由 One API 去请求不同的模型。修改下面两个环境变量: + +```bash +# 务必写上 v1。如果在同一个网络内,可改成内网地址。 +OPENAI_BASE_URL=https://xxxx.cloud.sealos.io/v1 +# 下面的 key 是由 One API 提供的令牌 +CHAT_API_KEY=sk-xxxxxx +``` + +## 接入其他模型 + +**以添加文心一言为例:** + +### 1. OneAPI 新增模型渠道 + +类型选择百度文心千帆。 + +![](/imgs/oneapi-demo1.png) + +### 2. 修改 FastGPT 配置文件 + +可以在 `/projects/app/src/data/config.json` 里找到配置文件(本地开发需要复制成 config.local.json),按下面内容修改配置文件,最新/更具体的配置说明,可查看[FastGPT 配置文件说明](/docs/development/configuration)。 + +配置模型关键点在于`model` 需要与 OneAPI 渠道中的模型一致。 + +```json +{ + "llmModels": [ // 语言模型配置 + { + "model": "ERNIE-Bot", // 这里的模型需要对应 One API 的模型 + "name": "文心一言", // 对外展示的名称 + "avatar": "/imgs/model/openai.svg", // 模型的logo + "maxContext": 16000, // 最大上下文 + "maxResponse": 4000, // 最大回复 + "quoteMaxToken": 13000, // 最大引用内容 + "maxTemperature": 1.2, // 最大温度 + "charsPointsPrice": 0, + "censor": false, + "vision": false, // 是否支持图片输入 + "datasetProcess": true, // 是否设置为知识库处理模型 + "usedInClassify": true, // 是否用于问题分类 + "usedInExtractFields": true, // 是否用于字段提取 + "usedInToolCall": true, // 是否用于工具调用 + "usedInQueryExtension": true, // 是否用于问题优化 + "toolChoice": true, // 是否支持工具选择 + "functionCall": false, // 是否支持函数调用 + "customCQPrompt": "", // 自定义文本分类提示词(不支持工具和函数调用的模型 + "customExtractPrompt": "", // 自定义内容提取提示词 + "defaultSystemChatPrompt": "", // 对话默认携带的系统提示词 + "defaultConfig":{} // 请求API时,挟带一些默认配置(比如 GLM4 的 top_p) + } + ], + "vectorModels": [ // 向量模型配置 + { + "model": "text-embedding-ada-002", + "name": "Embedding-2", + "avatar": "/imgs/model/openai.svg", + "charsPointsPrice": 0, + "defaultToken": 700, + "maxToken": 3000, + "weight": 100 + }, + ] +} +``` + +### 3. 重启 FastGPT + +**Docker 版本** + +```bash +docker-compose down +docker-compose up -d +``` + +**Sealos 版本** + +直接找到 FastGPT 服务,点击重启即可。 + + +## 其他服务商接入参考 + +这章介绍一些提供商接入 OneAPI 的教程,配置后不要忘记修改 FastGPT 配置文件。 + +### 阿里通义千问 + +千问目前已经兼容 GPT 格式,可以直接选择 OpenAI 类型来接入即可。如下图,选择类型为`OpenAI`,代理填写阿里云的代理地址。 + +目前可以直接使用阿里云的语言模型和 `text-embedding-v3` 向量模型(实测已经归一化,可直接使用) + +![alt text](/imgs/image-63.png) + +### 硅基流动 —— 开源模型大合集 + +[硅基流动](https://cloud.siliconflow.cn/i/TR9Ym0c4) 是一个专门提供开源模型调用平台,并拥有自己的加速引擎。模型覆盖面广,非常适合低成本来测试开源模型。接入教程: + +1. [点击注册硅基流动账号](https://cloud.siliconflow.cn/i/TR9Ym0c4) +2. 进入控制台,获取 API key: https://cloud.siliconflow.cn/account/ak +3. 新增 OneAPI 渠道,选择`OpenAI`类型,代理填写:`https://api.siliconflow.cn`,密钥是第二步创建的密钥。 + +![alt text](/imgs/image-64.png) + +由于 OneAPI 未内置 硅基流动 的模型名,可以通过自定义模型名称来填入,下面是获取模型名称的教程: + +1. 打开[硅基流动模型列表](https://siliconflow.cn/zh-cn/models) +2. 单击模型后,会打开模型详情。 +3. 复制模型名到 OneAPI 中。 + +| | | | +| --- | --- | --- | +| ![alt text](/imgs/image-65.png) | ![alt text](/imgs/image-66.png)| ![alt text](/imgs/image-67.png) | + diff --git a/docSite/content/zh-cn/docs/development/modelConfig/siliconCloud.md b/docSite/content/zh-cn/docs/development/modelConfig/siliconCloud.md new file mode 100644 index 000000000..df4cd67ed --- /dev/null +++ b/docSite/content/zh-cn/docs/development/modelConfig/siliconCloud.md @@ -0,0 +1,220 @@ +--- +title: '通过 SiliconCloud 体验开源模型' +description: '通过 SiliconCloud 体验开源模型' +icon: 'api' +draft: false +toc: true +weight: 746 +--- + +[SiliconCloud(硅基流动)](https://cloud.siliconflow.cn/i/TR9Ym0c4) 是一个以提供开源模型调用为主的平台,并拥有自己的加速引擎。帮助用户低成本、快速的进行开源模型的测试和使用。实际体验下来,他们家模型的速度和稳定性都非常不错,并且种类丰富,覆盖语言、向量、重排、TTS、STT、绘图、视频生成模型,可以满足 FastGPT 中所有模型需求。 + +如果你想部分模型使用 SiliconCloud 的模型,可额外参考[OneAPI接入硅基流动](/docs/development/modelconfig/one-api/#硅基流动--开源模型大合集)。 + +本文会介绍完全使用 SiliconCloud 模型来部署 FastGPT 的方案。 + + +## 1. 注册 SiliconCloud 账号 + +1. [点击注册硅基流动账号](https://cloud.siliconflow.cn/i/TR9Ym0c4) +2. 进入控制台,获取 API key: https://cloud.siliconflow.cn/account/ak + +## 2. 修改 FastGPT 环境变量 + +```bash +OPENAI_BASE_URL=https://api.siliconflow.cn/v1 +# 填写 SiliconCloud 控制台提供的 Api Key +CHAT_API_KEY=sk-xxxxxx +``` + +## 3. 修改 FastGPT 配置文件 + +我们选取 SiliconCloud 中的模型作为 FastGPT 配置。这里配置了 `Qwen2.5 72b` 的纯语言和视觉模型;选择 `bge-m3` 作为向量模型;选择 `bge-reranker-v2-m3` 作为重排模型。选择 `fish-speech-1.5` 作为语音模型;选择 `SenseVoiceSmall` 作为语音输入模型。 + +注意:ReRank 模型仍需配置一次 Api Key + +```json +{ + "llmModels": [ + { + "provider": "Other", // 模型提供商,主要用于分类展示,目前已经内置提供商包括:https://github.com/labring/FastGPT/blob/main/packages/global/core/ai/provider.ts, 可 pr 提供新的提供商,或直接填写 Other + "model": "Qwen/Qwen2.5-72B-Instruct", // 模型名(对应OneAPI中渠道的模型名) + "name": "Qwen2.5-72B-Instruct", // 模型别名 + "maxContext": 32000, // 最大上下文 + "maxResponse": 4000, // 最大回复 + "quoteMaxToken": 30000, // 最大引用内容 + "maxTemperature": 1, // 最大温度 + "charsPointsPrice": 0, // n积分/1k token(商业版) + "censor": false, // 是否开启敏感校验(商业版) + "vision": false, // 是否支持图片输入 + "datasetProcess": true, // 是否设置为文本理解模型(QA),务必保证至少有一个为true,否则知识库会报错 + "usedInClassify": true, // 是否用于问题分类(务必保证至少有一个为true) + "usedInExtractFields": true, // 是否用于内容提取(务必保证至少有一个为true) + "usedInToolCall": true, // 是否用于工具调用(务必保证至少有一个为true) + "usedInQueryExtension": true, // 是否用于问题优化(务必保证至少有一个为true) + "toolChoice": true, // 是否支持工具选择(分类,内容提取,工具调用会用到。) + "functionCall": false, // 是否支持函数调用(分类,内容提取,工具调用会用到。会优先使用 toolChoice,如果为false,则使用 functionCall,如果仍为 false,则使用提示词模式) + "customCQPrompt": "", // 自定义文本分类提示词(不支持工具和函数调用的模型 + "customExtractPrompt": "", // 自定义内容提取提示词 + "defaultSystemChatPrompt": "", // 对话默认携带的系统提示词 + "defaultConfig": {}, // 请求API时,挟带一些默认配置(比如 GLM4 的 top_p) + "fieldMap": {} // 字段映射(o1 模型需要把 max_tokens 映射为 max_completion_tokens) + }, + { + "provider": "Other", + "model": "Qwen/Qwen2-VL-72B-Instruct", + "name": "Qwen2-VL-72B-Instruct", + "maxContext": 32000, + "maxResponse": 4000, + "quoteMaxToken": 30000, + "maxTemperature": 1, + "charsPointsPrice": 0, + "censor": false, + "vision": true, + "datasetProcess": false, + "usedInClassify": false, + "usedInExtractFields": false, + "usedInToolCall": false, + "usedInQueryExtension": false, + "toolChoice": false, + "functionCall": false, + "customCQPrompt": "", + "customExtractPrompt": "", + "defaultSystemChatPrompt": "", + "defaultConfig": {} + } + ], + "vectorModels": [ + { + "provider": "Other", + "model": "Pro/BAAI/bge-m3", + "name": "Pro/BAAI/bge-m3", + "charsPointsPrice": 0, + "defaultToken": 512, + "maxToken": 5000, + "weight": 100 + } + ], + "reRankModels": [ + { + "model": "BAAI/bge-reranker-v2-m3", // 这里的model需要对应 siliconflow 的模型名 + "name": "BAAI/bge-reranker-v2-m3", + "requestUrl": "https://api.siliconflow.cn/v1/rerank", + "requestAuth": "siliconflow 上申请的 key" + } + ], + "audioSpeechModels": [ + { + "model": "fishaudio/fish-speech-1.5", + "name": "fish-speech-1.5", + "voices": [ + { + "label": "fish-alex", + "value": "fishaudio/fish-speech-1.5:alex", + "bufferId": "fish-alex" + }, + { + "label": "fish-anna", + "value": "fishaudio/fish-speech-1.5:anna", + "bufferId": "fish-anna" + }, + { + "label": "fish-bella", + "value": "fishaudio/fish-speech-1.5:bella", + "bufferId": "fish-bella" + }, + { + "label": "fish-benjamin", + "value": "fishaudio/fish-speech-1.5:benjamin", + "bufferId": "fish-benjamin" + }, + { + "label": "fish-charles", + "value": "fishaudio/fish-speech-1.5:charles", + "bufferId": "fish-charles" + }, + { + "label": "fish-claire", + "value": "fishaudio/fish-speech-1.5:claire", + "bufferId": "fish-claire" + }, + { + "label": "fish-david", + "value": "fishaudio/fish-speech-1.5:david", + "bufferId": "fish-david" + }, + { + "label": "fish-diana", + "value": "fishaudio/fish-speech-1.5:diana", + "bufferId": "fish-diana" + } + ] + } + ], + "whisperModel": { + "model": "FunAudioLLM/SenseVoiceSmall", + "name": "SenseVoiceSmall", + "charsPointsPrice": 0 + } +} +``` + +## 4. 重启 FastGPT + +## 5. 体验测试 + +### 测试对话和图片识别 + +随便新建一个简易应用,选择对应模型,并开启图片上传后进行测试: + +| | | +| --- | --- | +| ![alt text](/imgs/image-68.png) | ![alt text](/imgs/image-70.png) | + +可以看到,72B 的模型,性能还是非常快的,这要是本地没几个 4090,不说配置环境,输出怕都要 30s 了。 + +### 测试知识库导入和知识库问答 + +新建一个知识库(由于只配置了一个向量模型,页面上不会展示向量模型选择) + +| | | +| --- | --- | +| ![alt text](/imgs/image-72.png) | ![alt text](/imgs/image-71.png) | + +导入本地文件,直接选择文件,然后一路下一步即可。79 个索引,大概花了 20s 的时间就完成了。现在我们去测试一下知识库问答。 + +首先回到我们刚创建的应用,选择知识库,调整一下参数后即可开始对话: + +| | | | +| --- | --- | --- | +| ![alt text](/imgs/image-73.png) | ![alt text](/imgs/image-75.png) | ![alt text](/imgs/image-76.png) | + +对话完成后,点击底部的引用,可以查看引用详情,同时可以看到具体的检索和重排得分: + +| | | +| --- | --- | +| ![alt text](/imgs/image-77.png) | ![alt text](/imgs/image-78.png) | + +### 测试语音播放 + +继续在刚刚的应用中,左侧配置中找到语音播放,点击后可以从弹窗中选择语音模型,并进行试听: + +![alt text](/imgs/image-79.png) + +### 测试语言输入 + +继续在刚刚的应用中,左侧配置中找到语音输入,点击后可以从弹窗中开启语言输入 + +![alt text](/imgs/image-80.png) + +开启后,对话输入框中,会增加一个话筒的图标,点击可进行语音输入: + +| | | +| --- | --- | +| ![alt text](/imgs/image-81.png) | ![alt text](/imgs/image-82.png) | + +## 总结 + +如果你想快速的体验开源模型或者快速的使用 FastGPT,不想在不同服务商申请各类 Api Key,那么可以选择 SiliconCloud 的模型先进行快速体验。 + +如果你决定未来私有化部署模型和 FastGPT,前期可通过 SiliconCloud 进行测试验证,后期再进行硬件采购,减少 POC 时间和成本。 \ No newline at end of file diff --git a/docSite/content/zh-cn/docs/development/one-api.md b/docSite/content/zh-cn/docs/development/one-api.md deleted file mode 100644 index 79c5c08db..000000000 --- a/docSite/content/zh-cn/docs/development/one-api.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: '使用 One API 接入 Azure、ChatGLM 和本地模型' -description: '部署和使用 One API,实现 Azure、ChatGLM 和本地模型的接入。' -icon: 'api' -draft: false -toc: true -weight: 708 ---- - -* 默认情况下,FastGPT 只配置了 GPT 的模型,如果你需要接入其他模型,需要进行一些额外配置。 -* [One API](https://github.com/songquanpeng/one-api) 是一个 OpenAI 接口管理 & 分发系统,可以通过标准的 OpenAI API 格式访问所有的大模型,开箱即用。 -* FastGPT 可以通过接入 One API 来实现对不同大模型的支持。One API 的部署方法也很简单。 - -## FastGPT 与 One API 关系 - -可以把 One API 当做一个网关。 - -![](/imgs/sealos-fastgpt.webp) - -## 部署 - -### Docker 版本 - -已加入最新的 `docker-compose.yml` 文件中。 - -### Sealos - MySQL 版本 - -MySQL 版本支持多实例,高并发。 - -直接点击以下按钮即可一键部署 👇 - -Deploy on Sealos - -部署完后会跳转「应用管理」,数据库在另一个应用「数据库」中。需要等待 1~3 分钟数据库运行后才能访问成功。 - -### Sealos - SqlLite 版本 - -SqlLite 版本不支持多实例,适合个人小流量使用,但是价格非常便宜。 - -**1. [点击打开 Sealos 公有云](https://cloud.sealos.io/)** - -**2. 打开 AppLaunchpad(应用管理) 工具** - -![step1](/imgs/oneapi-step1.webp) - -**3. 点击创建新应用** - -**4. 填写对应参数** - -镜像:ghcr.io/songquanpeng/one-api:latest - -![step2](/imgs/oneapi-step2.png) -打开外网访问开关后,Sealos 会自动分配一个可访问的地址,不需要自己配置。 - -![step3](/imgs/oneapi-step3.png) -填写完参数后,点击右上角部署即可。环境变量: - -``` -SESSION_SECRET=SESSION_SECRET -POLLING_INTERVAL=60 -BATCH_UPDATE_ENABLED=true -BATCH_UPDATE_INTERVAL=60 -``` - -## One API 使用教程 - -### 概念 - -1. 渠道: - 1. OneApi 中一个渠道对应一个 `Api Key`,这个 `Api Key` 可以是GPT、微软、ChatGLM、文心一言的。一个`Api Key`通常可以调用同一个厂商的多个模型。 - 2. One API 会根据请求传入的`模型`来决定使用哪一个`Key`,如果一个模型对应了多个`Key`,则会随机调用。 -2. 令牌:访问 One API 所需的凭证,只需要这`1`个凭证即可访问`One API`上配置的模型。因此`FastGPT`中,只需要配置`One API`的`baseurl`和`令牌`即可。 - -### 大致工作流程 - -1. 客户端请求 One API -2. 根据请求中的 `model` 参数,匹配对应的渠道(根据渠道里的模型进行匹配,必须完全一致)。如果匹配到多个渠道,则随机选择一个(同优先级)。 -3. One API 向真正的地址发出请求。 -4. One API 将结果返回给客户端。 - -### 1. 登录 One API - -打开 【One API 应用详情】,找到访问地址: -![step4](/imgs/oneapi-step4.png) - -登录 One API -![step5](/imgs/oneapi-step5.png) - -### 2. 创建渠道和令牌 - -在 One API 中添加对应渠道,直接点击 【添加基础模型】,不要遗漏了向量模型(Embedding) -![step6](/imgs/oneapi-step6.png) - -创建一个令牌 -![step7](/imgs/oneapi-step7.png) - -### 3. 修改账号余额 - -One API 默认 root 用户只有 200刀,可以自行修改编辑。 - -### 4. 修改 FastGPT 的环境变量 - -有了 One API 令牌后,FastGPT 可以通过修改 `baseurl` 和 `key` 去请求到 One API,再由 One API 去请求不同的模型。修改下面两个环境变量: - -```bash -# 下面的地址是 Sealos 提供的,务必写上 v1, 两个项目都在 sealos 部署时候,https://xxxx.cloud.sealos.io 可以改用内网地址 -OPENAI_BASE_URL=https://xxxx.cloud.sealos.io/v1 -# 下面的 key 是由 One API 提供的令牌 -CHAT_API_KEY=sk-xxxxxx -``` - -## 接入其他模型 - -**以添加文心一言为例:** - -### 1. One API 添加对应模型渠道 - -![](/imgs/oneapi-demo1.png) - -### 2. 修改 FastGPT 配置文件 - -可以在 `/projects/app/src/data/config.json` 里找到配置文件(本地开发需要复制成 config.local.json),配置文件中有一项是**对话模型配置**: - -```json -"llmModels": [ - ... - { - "model": "ERNIE-Bot", // 这里的模型需要对应 One API 的模型 - "name": "文心一言", // 对外展示的名称 - "avatar": "/imgs/model/openai.svg", // 模型的logo - "maxContext": 16000, // 最大上下文 - "maxResponse": 4000, // 最大回复 - "quoteMaxToken": 13000, // 最大引用内容 - "maxTemperature": 1.2, // 最大温度 - "charsPointsPrice": 0, - "censor": false, - "vision": false, // 是否支持图片输入 - "datasetProcess": true, // 是否设置为知识库处理模型 - "usedInClassify": true, // 是否用于问题分类 - "usedInExtractFields": true, // 是否用于字段提取 - "usedInToolCall": true, // 是否用于工具调用 - "usedInQueryExtension": true, // 是否用于问题优化 - "toolChoice": true, // 是否支持工具选择 - "functionCall": false, // 是否支持函数调用 - "customCQPrompt": "", // 自定义文本分类提示词(不支持工具和函数调用的模型 - "customExtractPrompt": "", // 自定义内容提取提示词 - "defaultSystemChatPrompt": "", // 对话默认携带的系统提示词 - "defaultConfig":{} // 请求API时,挟带一些默认配置(比如 GLM4 的 top_p) - } - ... -], -``` - -**添加向量模型:** - -```json -"vectorModels": [ - ...... - { - "model": "text-embedding-ada-002", - "name": "Embedding-2", - "avatar": "/imgs/model/openai.svg", - "charsPointsPrice": 0, - "defaultToken": 700, - "maxToken": 3000, - "weight": 100 - }, - ...... -] -``` - -### 3. 重启 FastGPT - -```bash -docker-compose down -docker-compose up -d -``` - -重启 FastGPT 即可在选择文心一言模型进行对话。**添加向量模型也是类似操作,增加到 `vectorModels`里。** diff --git a/docSite/content/zh-cn/docs/development/sealos.md b/docSite/content/zh-cn/docs/development/sealos.md index eaebf7305..9e4f25e84 100644 --- a/docSite/content/zh-cn/docs/development/sealos.md +++ b/docSite/content/zh-cn/docs/development/sealos.md @@ -15,7 +15,7 @@ weight: 706 FastGPT 使用了 one-api 项目来管理模型池,其可以兼容 OpenAI 、Azure 、国内主流模型和本地模型等。 -可参考:[Sealos 快速部署 OneAPI](/docs/development/one-api) +可参考:[Sealos 快速部署 OneAPI](/docs/development/modelconfig/one-api) ## 一键部署 @@ -163,4 +163,4 @@ SYSTEM_FAVICON 可以是一个网络地址 ### One API 使用 -[参考 OneAPI 使用步骤](/docs/development/one-api/) \ No newline at end of file +[参考 OneAPI 使用步骤](/docs/development/modelconfig/one-api/) \ No newline at end of file diff --git a/docSite/content/zh-cn/docs/guide/workbench/workflow/ai_chat.md b/docSite/content/zh-cn/docs/guide/workbench/workflow/ai_chat.md index 8ee015a13..a3968115a 100644 --- a/docSite/content/zh-cn/docs/guide/workbench/workflow/ai_chat.md +++ b/docSite/content/zh-cn/docs/guide/workbench/workflow/ai_chat.md @@ -19,7 +19,7 @@ weight: 232 ## AI模型 -可以通过 [config.json](/docs/development/configuration/) 配置可选的对话模型,通过 [one-api](/docs/development/one-api/) 来实现多模型接入。 +可以通过 [config.json](/docs/development/configuration/) 配置可选的对话模型,通过 [one-api](/docs/development/modelconfig/one-api/) 来实现多模型接入。 点击AI模型后,可以配置模型的相关参数。 diff --git a/packages/web/i18n/en/app.json b/packages/web/i18n/en/app.json index 72f96f250..4d5de7d24 100644 --- a/packages/web/i18n/en/app.json +++ b/packages/web/i18n/en/app.json @@ -109,7 +109,7 @@ "publish_channel": "Publish", "publish_success": "Publish Successful", "question_guide_tip": "After the conversation, 3 guiding questions will be generated for you.", - "saved_success": "Save Successful", + "saved_success": "Saved successfully! \nTo use this version externally, click Save and Publish", "search_app": "Search Application", "setting_app": "Workflow", "setting_plugin": "Workflow", diff --git a/packages/web/i18n/zh-CN/app.json b/packages/web/i18n/zh-CN/app.json index af2de1567..0954c63b2 100644 --- a/packages/web/i18n/zh-CN/app.json +++ b/packages/web/i18n/zh-CN/app.json @@ -109,7 +109,7 @@ "publish_channel": "发布渠道", "publish_success": "发布成功", "question_guide_tip": "对话结束后,会为你生成 3 个引导性问题。", - "saved_success": "保存成功", + "saved_success": "保存成功!如需在外部使用该版本,请点击“保存并发布”", "search_app": "搜索应用", "setting_app": "应用配置", "setting_plugin": "插件配置", diff --git a/packages/web/i18n/zh-Hant/app.json b/packages/web/i18n/zh-Hant/app.json index 270f6b556..99b2b489f 100644 --- a/packages/web/i18n/zh-Hant/app.json +++ b/packages/web/i18n/zh-Hant/app.json @@ -109,7 +109,7 @@ "publish_channel": "發布通道", "publish_success": "發布成功", "question_guide_tip": "對話結束後,會為你產生 3 個引導性問題。", - "saved_success": "儲存成功", + "saved_success": "保存成功!\n如需在外部使用該版本,請點擊“儲存並發布”", "search_app": "搜尋應用程式", "setting_app": "應用程式設定", "setting_plugin": "外掛設定", diff --git a/projects/app/data/config.json b/projects/app/data/config.json index 0799be5df..378f4de63 100644 --- a/projects/app/data/config.json +++ b/projects/app/data/config.json @@ -80,7 +80,9 @@ "customExtractPrompt": "", "defaultSystemChatPrompt": "", "defaultConfig": { - "temperature": 1 + "temperature": 1, + "max_tokens": null, + "stream": false } }, { @@ -105,7 +107,9 @@ "customExtractPrompt": "", "defaultSystemChatPrompt": "", "defaultConfig": { - "temperature": 1 + "temperature": 1, + "max_tokens": null, + "stream": false } } ],