From a0c397cfd2877c3828443c5a515c412919671cf7 Mon Sep 17 00:00:00 2001 From: Archer <545436317@qq.com> Date: Thu, 10 Aug 2023 14:26:10 +0800 Subject: [PATCH] docs (#165) * perf: log * README * docs --- .github/imgs/logo.png | Bin 0 -> 38486 bytes README.md | 80 ++++++++++-- README_en.md | 115 ++++++++++++++++++ client/src/pages/_app.tsx | 2 +- .../pages/api/openapi/v1/chat/completions.ts | 2 +- client/src/service/events/generateVector.ts | 2 +- client/src/store/chat.ts | 2 +- docSite/docs/develop/data_config/intro.md | 34 +++--- .../current/develop/data_config/intro.md | 6 +- 9 files changed, 209 insertions(+), 34 deletions(-) create mode 100644 .github/imgs/logo.png create mode 100644 README_en.md diff --git a/.github/imgs/logo.png b/.github/imgs/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..93670150a8bb4508037ad4485b138b681034817d GIT binary patch literal 38486 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 a + +fastgpt logo + # FastGPT FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景! + + +

+ 线上体验 + · + 相关文档 + · + 本地开发 + · + 快速部署 + · + 相关项目 +

+ ## 🛸 在线体验 -🎉 [fastgpt.run](https://fastgpt.run/)(服务器在新加坡,部分地区可能无法直连) +[fastgpt.run](https://fastgpt.run/)(服务器在新加坡,部分地区可能无法直连) | | | | ---------------------------------- | ---------------------------------- | | ![Demo](./.github/imgs/intro1.png) | ![Demo](./.github/imgs/intro2.png) | | ![Demo](./.github/imgs/intro3.png) | ![Demo](./.github/imgs/intro4.png) | +## 💡 功能 + +1. 强大的可视化编排,轻松构建 AI 应用 + - [x] 提供简易模式,无需操作编排 + - [x] 用户对话前引导 + - [x] 全局变量 + - [x] 知识库搜索 + - [x] 多 LLM 模型对话 + - [x] 文本内容提取成结构化数据 + - [x] HTTP 扩展 + - [ ] 沙盒 JS 运行模块 + - [ ] 连续对话引导 + - [ ] 对话多路线选择 + - [ ] 源文件引用追踪 +2. 丰富的知识库预处理 + - [x] 多库复用,混用 + - [x] chunk 记录修改和删除 + - [x] 支持直接分段导入 + - [x] 支持 QA 拆分导入 + - [x] 支持手动输入内容 + - [ ] 支持 url 读取导入 + - [x] 支持 CSV 批量导入问答对 + - [ ] 支持知识库单独设置向量模型 + - [ ] 源文件存储 +3. 多种效果测试渠道 + - [x] 知识库单点搜索测试 + - [x] 对话时反馈引用并可修改与删除 + - [x] 完整上下文呈现 + - [ ] 完整模块中间值呈现 +4. OpenAPI + - [x] completions 接口(对齐 GPT 接口) + - [ ] 知识库 CRUD +5. 运营功能 + - [x] 免登录分享窗口 + - [x] Iframe 一键嵌入 + - [ ] 统一查阅对话记录 + ## 👨‍💻 开发 项目技术栈: NextJs + TS + ChakraUI + Mongo + Postgres(Vector 插件) - [快开始本地开发](https://doc.fastgpt.run/docs/develop/dev) - [部署 FastGPT](https://doc.fastgpt.run/docs/category/deploy) +- [系统配置文件说明](https://doc.fastgpt.run/docs/category/data-config) +- [多模型配置](https://doc.fastgpt.run/docs/develop/data_config/chat_models) +- [V3 升级 V4 初始化](https://doc.fastgpt.run/docs/develop/deploy/v4init) -## :point_right: RoadMap + ## 🏘️ 社区交流群 @@ -28,13 +86,6 @@ FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开 | ------------------------------------------------- | ---------------------------------------------- | | ![](https://otnvvf-imgs.oss.laf.run/wxqun300.jpg) | ![](https://otnvvf-imgs.oss.laf.run/wx300.jpg) | -## Powered by - -- [TuShan: 5 分钟搭建后台管理系统](https://github.com/msgbyte/tushan) -- [Laf: 3 分钟快速接入三方应用](https://github.com/labring/laf) -- [Sealos: 快速部署集群应用](https://github.com/labring/sealos) -- [One API: 令牌管理 & 二次分发,支持 Azure](https://github.com/songquanpeng/one-api) - ## 👀 其他 - [FastGpt 常见问题](https://kjqvjse66l.feishu.cn/docx/HtrgdT0pkonP4kxGx8qcu6XDnGh) @@ -42,7 +93,14 @@ FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开 - [公众号接入视频教程](https://www.bilibili.com/video/BV1xh4y1t7fy/) - [FastGpt 知识库演示](https://www.bilibili.com/video/BV1Wo4y1p7i1/) -## 第三方生态 +## 💪 相关项目 + +- [Laf: 3 分钟快速接入三方应用](https://github.com/labring/laf) +- [Sealos: 快速部署集群应用](https://github.com/labring/sealos) +- [One API: 多模型管理,支持 Azure、文心一言等](https://github.com/songquanpeng/one-api) +- [TuShan: 5 分钟搭建后台管理系统](https://github.com/msgbyte/tushan) + +## 🤝 第三方生态 - [luolinAI: 企微机器人,开箱即用](https://github.com/luolin-ai/FastGPT-Enterprise-WeChatbot) diff --git a/README_en.md b/README_en.md new file mode 100644 index 000000000..ea9b61856 --- /dev/null +++ b/README_en.md @@ -0,0 +1,115 @@ +
+fastgpt logo + +# FastGPT + +FastGPT is a knowledge-based question answering system based on the LLM language model, providing out-of-the-box capabilities for data processing, model invocation, and more. It also allows for complex question answering scenarios through visual workflow orchestration using Flow! + +
+ +

+Online +· +Document +· +Development +· +Deploy +· +Power By +

+ +## 🛸 Online + +[fastgpt.run](https://fastgpt.run/) +| | | +| ---------------------------------- | ---------------------------------- | +| ![Demo](./.github/imgs/intro1.png) | ![Demo](./.github/imgs/intro2.png) | +| ![Demo](./.github/imgs/intro3.png) | ![Demo](./.github/imgs/intro4.png) | + +## 💡 Features + +1. Powerful visual orchestration for easy AI application building + + - [x] Provides a simple mode without the need for orchestration operations + - [x] User dialogue pre-guidance + - [x] Global variables + - [x] Knowledge base search + - [x] Multi-LLM model dialogue + - [x] Extraction of text content into structured data + - [x] HTTP extension + - [ ] Sandbox JS runtime module + - [ ] Continuous dialogue guidance + - [ ] Dialogue multi-path selection + - [ ] Source file reference tracking + +2. Rich knowledge base preprocessing + + - [x] Multiple library reuse and mixing + - [x] Chunk record modification and deletion + - [x] Supports direct segment import + - [x] Supports QA split import + - [x] Supports manual input content + - [ ] Supports URL import reading + - [x] Supports batch import of Q&A pairs in CSV format + - [ ] Supports separate vector model settings for knowledge bases + - [ ] Source file storage + +3. Multiple effect testing channels + + - [x] Knowledge base single point search testing + - [x] Feedback references and ability to modify and delete during dialogue + - [x] Complete context presentation + - [ ] Complete module intermediate value presentation + +4. OpenAPI + + - [x] completions interface (aligned with GPT interface) + - [ ] Knowledge base CRUD + +5. Operational functions + + - [x] Login-free sharing window + - [x] One-click embedding with Iframe + - [ ] Unified access to dialogue records + +## 👨‍💻 Development + +Project tech stack: NextJs + TS + ChakraUI + Mongo + Postgres (Vector plugin) + +- [Getting Started with Local Development](https://doc.fastgpt.run/docs/develop/dev) +- [Deploying FastGPT](https://doc.fastgpt.run/docs/category/deploy) +- [System Configuration File Explanation](https://doc.fastgpt.run/docs/category/data-config) +- [Multi-model Configuration](https://doc.fastgpt.run/docs/develop/data_config/chat_models) +- [V3 Upgrade V4 Initialization](https://doc.fastgpt.run/docs/develop/deploy/v4init) + + + + + +## 👀 Others + +- [FastGpt FAQ](https://kjqvjse66l.feishu.cn/docx/HtrgdT0pkonP4kxGx8qcu6XDnGh) +- [Docker Deployment Tutorial Video](https://www.bilibili.com/video/BV1jo4y147fT/) +- [Official Account Integration Video Tutorial](https://www.bilibili.com/video/BV1xh4y1t7fy/) +- [FastGpt Knowledge Base Demo](https://www.bilibili.com/video/BV1Wo4y1p7i1/) + +## 💪 Related Projects + +- [Laf: 3-minute quick access to third-party applications](https://github.com/labring/laf) +- [Sealos: Rapid deployment of cluster applications](https://github.com/labring/sealos) +- [One API: Multi-model management, supports Azure, Wenxin Yiyuan, etc.](https://github.com/songquanpeng/one-api) +- [TuShan: Build a backend management system in 5 minutes](https://github.com/msgbyte/tushan) + +## 🤝 Third-party Ecosystem + +- [luolinAI: Enterprise WeChat bot, ready to use](https://github.com/luolin-ai/FastGPT-Enterprise-WeChatbot) + +## 🌟 Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=labring/FastGPT&type=Date)](https://star-history.com/#labring/FastGPT&Date) diff --git a/client/src/pages/_app.tsx b/client/src/pages/_app.tsx index 841d74aeb..3bb826757 100644 --- a/client/src/pages/_app.tsx +++ b/client/src/pages/_app.tsx @@ -58,7 +58,7 @@ function App({ Component, pageProps }: AppProps) { return ( <> - {feConfigs?.systemTitle || 'FastAI'} + {feConfigs?.systemTitle || 'FastGPT'} { if (res.closed) return Promise.resolve(); - console.log('run=========', module.flowType); + // console.log('run=========', module.flowType); if (stream && detail && module.showStatus) { responseStatus({ diff --git a/client/src/service/events/generateVector.ts b/client/src/service/events/generateVector.ts index 08670d18d..fe8455142 100644 --- a/client/src/service/events/generateVector.ts +++ b/client/src/service/events/generateVector.ts @@ -80,7 +80,7 @@ export async function generateVector(): Promise { // delete data from training await TrainingData.findByIdAndDelete(data._id); - console.log(`生成向量成功: ${data._id}`); + // console.log(`生成向量成功: ${data._id}`); reduceQueue(); generateVector(); diff --git a/client/src/store/chat.ts b/client/src/store/chat.ts index 77a38e505..5dff18fb3 100644 --- a/client/src/store/chat.ts +++ b/client/src/store/chat.ts @@ -24,7 +24,7 @@ const defaultChatData: InitChatResponse = { chatId: '', appId: '', app: { - name: 'FastAI', + name: 'FastGPT', avatar: '/icon/logo.png', intro: '', canUse: false diff --git a/docSite/docs/develop/data_config/intro.md b/docSite/docs/develop/data_config/intro.md index 9c6b0ac61..45720a996 100644 --- a/docSite/docs/develop/data_config/intro.md +++ b/docSite/docs/develop/data_config/intro.md @@ -4,34 +4,36 @@ sidebar_position: 1 # Quick Introduction -Due to the limitations of environment variables in configuring complex content, the new version of FastGPT uses ConfigMap to mount configuration files. You can find the default configuration file at client/data/config.json. -In the development environment, you need to make a copy of config.json as config.local.json for it to take effect. -This configuration file includes customization of the frontend page, system-level parameters, and AI dialogue models, etc. +Due to the limitations of environment variables in configuring complex content, the new version of FastGPT uses ConfigMap to mount the configuration file. You can see the default configuration file in `client/data/config.json`. You can refer to [docker-compose deployment](/docs/develop/deploy/docker) to mount the configuration file. + +In the development environment, you need to make a copy of `config.json` as `config.local.json` for it to take effect. + +This configuration file contains customization of the frontend page, system-level parameters, and AI dialogue models, etc. ## Brief Explanation of Basic Fields -Here, we will introduce some basic configuration fields. +Here are some basic configuration fields. ```json // This configuration controls some styles of the frontend "FeConfig": { -"show_emptyChat": true, // Whether to display the introduction page when the conversation page is empty -"show_register": false, // Whether to display the registration button (including forget password, register account, and third-party login) -"show_appStore": false, // Whether to display the app store (currently the permissions are not properly set, so it is useless to open it) -"show_userDetail": false, // Whether to display user details (account balance, OpenAI binding) -"show_git": true, // Whether to display Git -"systemTitle": "FastAI", // The title of the system -"authorText": "Made by FastAI Team.", // Signature -"gitLoginKey": "" // Git login credentials + "show_emptyChat": true, // Whether to display the introduction page when the conversation page is empty + "show_register": false, // Whether to display the registration button (including forget password, register account, and third-party login) + "show_appStore": false, // Whether to display the app store (currently the permission is not properly set, so it is useless to open it) + "show_userDetail": false, // Whether to display user details (account balance, OpenAI binding) + "show_git": true, // Whether to display Git + "systemTitle": "FastGPT", // The title of the system + "authorText": "Made by FastGPT Team.", // Signature + "gitLoginKey": "" // Git login credentials } ``` ```json // This configuration file contains system-level parameters "SystemParams": { -"gitLoginSecret": "", // Git login credentials -"vectorMaxProcess": 15, // Maximum number of processes for vector generation, set in combination with database performance and key -"qaMaxProcess": 15, // Maximum number of processes for QA generation, set in combination with database performance and key -"pgIvfflatProbe": 20 // pg vector search probe. Can be ignored before setting up the index, usually only needed for more than 500,000 groups. + "gitLoginSecret": "", // Git login credentials + "vectorMaxProcess": 15, // Maximum number of processes for vector generation, set in combination with database performance and key + "qaMaxProcess": 15, // Maximum number of processes for QA generation, set in combination with database performance and key + "pgIvfflatProbe": 20 // pg vector search probe. Can be ignored before setting the index, usually only needed for more than 500,000 groups. }, ``` diff --git a/docSite/i18n/zh-Hans/docusaurus-plugin-content-docs/current/develop/data_config/intro.md b/docSite/i18n/zh-Hans/docusaurus-plugin-content-docs/current/develop/data_config/intro.md index 11d2f5566..a513967a0 100644 --- a/docSite/i18n/zh-Hans/docusaurus-plugin-content-docs/current/develop/data_config/intro.md +++ b/docSite/i18n/zh-Hans/docusaurus-plugin-content-docs/current/develop/data_config/intro.md @@ -4,7 +4,7 @@ sidebar_position: 1 # 快速介绍 -由于环境变量不利于配置复杂的内容,新版 FastGPT 采用了 ConfigMap 的形式挂载配置文件,你可以在 client/data/config.json 看到默认的配置文件。 +由于环境变量不利于配置复杂的内容,新版 FastGPT 采用了 ConfigMap 的形式挂载配置文件,你可以在 client/data/config.json 看到默认的配置文件。可以参考 [docker-compose 部署](/docs/develop/deploy/docker) 来挂载配置文件。 开发环境下,你需要复制一份 config.json 成 config.local.json 文件才会生效。 @@ -22,8 +22,8 @@ sidebar_position: 1 "show_appStore": false, // 是否展示应用市场(不过目前权限还没做好,放开也没用) "show_userDetail": false, // 是否展示用户详情(账号余额、OpenAI 绑定) "show_git": true, // 是否展示 Git - "systemTitle": "FastAI", // 系统的 title - "authorText": "Made by FastAI Team.", // 签名 + "systemTitle": "FastGPT", // 系统的 title + "authorText": "Made by FastGPT Team.", // 签名 "gitLoginKey": "" // Git 登录凭证 } ```