4.8.13 feature (#3118)

* chore(ui): login page & workflow page (#3046)

* login page & number input & multirow select & llm select

* workflow

* adjust nodes

* New file upload (#3058)

* feat: toolNode aiNode readFileNode adapt new version

* update docker-compose

* update tip

* feat: adapt new file version

* perf: file input

* fix: ts

* feat: add chat history time label (#3024)

* feat:add chat and logs time

* feat: add chat history time label

* code perf

* code perf

---------

Co-authored-by: 勤劳上班的卑微小张 <jiazhan.zhang@ggimage.com>

* add chatType (#3060)

* pref: slow query of full text search (#3044)

* Adapt findLast api;perf: markdown zh format. (#3066)

* perf: context code

* fix: adapt findLast api

* perf: commercial plugin run error

* perf: markdown zh format

* perf: dockerfile proxy (#3067)

* fix ui (#3065)

* fix ui

* fix

* feat: support array reference multi-select (#3041)

* feat: support array reference multi-select

* fix build

* fix

* fix loop multi-select

* adjust condition

* fix get value

* array and non-array conversion

* fix plugin input

* merge func

* feat: iframe code block;perf: workflow selector type (#3076)

* feat: iframe code block

* perf: workflow selector type

* node pluginoutput check (#3074)

* feat: View will move when workflow check error;fix: ui refresh error when continuous file upload (#3077)

* fix: plugin output check

* fix: ui refresh error when continuous file upload

* feat: View will move when workflow check error

* add dispatch try catch (#3075)

* perf: workflow context split (#3083)

* perf: workflow context split

* perf: context

* 4.8.13 test (#3085)

* perf: workflow node ui

* chat iframe url

* feat: support sub route config (#3071)

* feat: support sub route config

* dockerfile

* fix upload

* delete unused code

* 4.8.13 test (#3087)

* fix: image expired

* fix: datacard navbar ui

* perf: build action

* fix: workflow file upload refresh (#3088)

* fix: http tool response (#3097)

* loop node dynamic height (#3092)

* loop node dynamic height

* fix

* fix

* feat: support push chat log (#3093)

* feat: custom uid/metadata

* to: custom info

* fix: chat push latest

* feat: add chat log envs

* refactor: move timer to pushChatLog

* fix: using precise log

---------

Co-authored-by: Finley Ge <m13203533462@163.com>

* 4.8.13 test (#3098)

* perf: loop node refresh

* rename context

* comment

* fix: ts

* perf: push chat log

* array reference check & node ui (#3100)

* feat: loop start add index (#3101)

* feat: loop start add index

* update doc

* 4.8.13 test (#3102)

* fix: loop index;edge parent check

* perf: reference invalid check

* fix: ts

* fix: plugin select files and ai response check (#3104)

* fix: plugin select files and ai response check

* perf: text editor selector;tool call tip;remove invalid image url;

* perf: select file

* perf: drop files

* feat: source id prefix env (#3103)

* 4.8.13 test (#3106)

* perf: select file

* perf: drop files

* perf: env template

* 4.8.13 test (#3107)

* perf: select file

* perf: drop files

* fix: imple mode adapt files

* perf: push chat log (#3109)

* fix: share page load title error (#3111)

* 4.8.13 perf (#3112)

* fix: share page load title error

* update file input doc

* perf: auto add file urls

* perf: auto ser loop node offset height

* 4.8.13 test (#3117)

* perf: plugin

* updat eaction

* feat: add more share config (#3120)

* feat: add more share config

* add i18n en

* fix: missing subroute (#3121)

* perf: outlink config (#3128)

* update action

* perf: outlink config

* fix: ts (#3129)

* 更新 docSite 文档内容 (#3131)

* fix: null pointer (#3130)

* fix: null pointer

* perf: not input text

* update doc url

* perf: outlink default value (#3134)

* update doc (#3136)

* 4.8.13 test (#3137)

* update doc

* perf: completions chat api

* Restore docSite content based on upstream/4.8.13-dev (#3138)

* Restore docSite content based on upstream/4.8.13-dev

* 4813.md缺少更正

* update doc (#3141)

---------

Co-authored-by: heheer <heheer@sealos.io>
Co-authored-by: papapatrick <109422393+Patrickill@users.noreply.github.com>
Co-authored-by: 勤劳上班的卑微小张 <jiazhan.zhang@ggimage.com>
Co-authored-by: Finley Ge <32237950+FinleyGe@users.noreply.github.com>
Co-authored-by: a.e. <49438478+I-Info@users.noreply.github.com>
Co-authored-by: Finley Ge <m13203533462@163.com>
Co-authored-by: Jiangween <145003935+Jiangween@users.noreply.github.com>
This commit is contained in:
Archer
2024-11-13 11:29:53 +08:00
committed by GitHub
parent e1f5483432
commit e9d52ada73
449 changed files with 7626 additions and 4180 deletions

View File

@@ -32,7 +32,7 @@ curl --location --request POST 'https://{{host}}/api/admin/initv464' \
4. 优化 - 历史记录模块。弃用旧的历史记录模块,直接在对应地方填写数值即可。
5. 调整 - 知识库搜索模块 topk 逻辑,采用 MaxToken 计算,兼容不同长度的文本块
6. 调整鉴权顺序,提高 apikey 的优先级避免cookie抢占 apikey 的鉴权。
7. 链接读取支持多选择器。参考[Web 站点同步用法](/docs/course/websync)
7. 链接读取支持多选择器。参考[Web 站点同步用法](/docs/guide/knowledge_base/websync/)
8. 修复 - 分享链接图片上传鉴权问题
9. 修复 - Mongo 连接池未释放问题。
10. 修复 - Dataset Intro 无法更新

View File

@@ -21,10 +21,10 @@ weight: 831
## V4.6.5 功能介绍
1. 新增 - [问题优化模块](/docs/workflow/modules/coreferenceresolution/)
2. 新增 - [文本编辑模块](/docs/workflow/modules/text_editor/)
3. 新增 - [判断器模块](/docs/workflow/modules/tfswitch/)
4. 新增 - [自定义反馈模块](/docs/workflow/modules/custom_feedback/)
1. 新增 - [问题优化模块](/docs/guide/workbench/workflow/coreferenceresolution/)
2. 新增 - [文本编辑模块](/docs/guide/workbench/workflow/text_editor/)
3. 新增 - [判断器模块](/docs/guide/workbench/workflow/tfswitch//)
4. 新增 - [自定义反馈模块](/docs/guide/workbench/workflow/custom_feedback/)
5. 新增 - 【内容提取】模块支持选择模型,以及字段枚举
6. 优化 - docx读取兼容表格表格转markdown
7. 优化 - 高级编排连接线交互

View File

@@ -25,7 +25,7 @@ weight: 830
1. 查看 [FastGPT 2024 RoadMap](https://github.com/labring/FastGPT?tab=readme-ov-file#-%E5%9C%A8%E7%BA%BF%E4%BD%BF%E7%94%A8)
2. 新增 - Http 模块请求头支持 Json 编辑器。
3. 新增 - [ReRank模型部署](/docs/development/custom-models/reranker/)
3. 新增 - [ReRank模型部署](/docs/development/custom-models/bge-rerank/)
4. 新增 - 搜索方式:分离向量语义检索,全文检索和重排,通过 RRF 进行排序合并。
5. 优化 - 问题分类提示词id引导。测试国产商用 api 模型(百度阿里智谱讯飞)使用 Prompt 模式均可分类。
6. UI 优化未来将逐步替换新的UI设计。

View File

@@ -91,7 +91,7 @@ curl --location --request POST 'https://{{host}}/api/init/v468' \
1. 新增 - 知识库搜索合并模块。
2. 新增 - 新的 Http 模块,支持更加灵活的参数传入。同时支持了输入输出自动数据类型转化,例如:接口输出的 JSON 类型会自动转成字符串类型,直接给其他模块使用。此外,还补充了一些例子,可在文档中查看。
3. 优化 - 内容补全。将内容补全内置到【知识库搜索】中并实现了一次内容补全即可完成“指代消除”和“问题扩展”。FastGPT知识库搜索详细流程可查看[知识库搜索介绍](/docs/course/data_search/)
3. 优化 - 内容补全。将内容补全内置到【知识库搜索】中并实现了一次内容补全即可完成“指代消除”和“问题扩展”。FastGPT知识库搜索详细流程可查看[知识库搜索介绍](/docs/guide/workbench/workflow/dataset_search/)
4. 优化 - LLM 模型配置,不再区分对话、分类、提取模型。同时支持模型的默认参数,避免不同模型参数冲突,可通过`defaultConfig`传入默认的配置。
5. 优化 - 流响应,参考了`ChatNextWeb`的流,更加丝滑。此外,之前提到的乱码、中断,刷新后又正常了,可能会修复)
6. 修复 - 语音输入文件无法上传。

View File

@@ -7,6 +7,20 @@ toc: true
weight: 811
---
## 更新指南
### 1. 做好数据备份
### 2. 修改镜像
- 更新 FastGPT 镜像 tag: v4.8.13-beta
- 更新 FastGPT 商业版镜像 tag: v4.8.13-beta fastgpt-pro镜像
- Sandbox 镜像,可以不更新
### 3. 调整文件上传编排
虽然依然兼容旧版的文件上传编排,但是未来两个版本内将会去除兼容代码,请尽快调整编排,以适应最新的文件上传逻辑。尤其是嵌套应用的文件传递,未来将不会自动传递,必须手动指定传递的文件。
## 更新说明
1. 新增 - 数组变量选择支持多选,可以选多个数组或对应的单一数据类型,会自动按选择顺序进行合并。
@@ -16,26 +30,15 @@ weight: 811
5. 新增 - 循环节点增加下标值。
6. 新增 - 部分对话错误提醒增加翻译。
7. 新增 - 对话输入框支持拖拽文件上传,可直接拖文件到输入框中。
8. 优化 - 合并多个 system 提示词成 1 个,避免部分模型不支持多个 system 提示词。
9. 优化 - 知识库上传文件,优化报错提示。
10. 优化 - 全文检索语句,减少一轮子查询
11. 优化 - 修改 findLast 为 [...array].reverse().find适配旧版浏览器
12. 优化 - Markdown 组件自动空格,避免分割 url 中的中文
13. 优化 - 工作流上下文拆分,性能优化
14. 优化 - 语音播报,不支持 mediaSource 的浏览器可等待完全生成语音后输出
15. 修复 - Dockerfile pnpm install 支持代理
16. 修复 - BI 图表生成无法写入文件
## 更新指南
### 1. 做好数据备份
### 2. 修改镜像
- 更新 FastGPT 镜像 tag: v4.8.13-alpha
- 更新 FastGPT 管理端镜像 tag: v4.8.13-alpha fastgpt-pro镜像
- Sandbox 镜像,可以不更新
### 3. 调整文件上传编排
虽然依然兼容旧版的文件上传编排,但是未来两个版本内将会去除兼容代码,请尽快调整编排,以适应最新的文件上传逻辑。尤其是嵌套应用的文件传递,未来将不会自动传递,必须手动指定传递的文件。
8. 新增 - 对话日志,来源可显示分享链接/API具体名称
9. 新增 - 分享链接支持配置是否展示实时运行状态。
10. 优化 - 合并多个 system 提示词成 1 个,避免部分模型不支持多个 system 提示词
11. 优化 - 知识库上传文件,优化报错提示
12. 优化 - 全文检索语句,减少一轮子查询
13. 优化 - 修改 findLast 为 [...array].reverse().find适配旧版浏览器
14. 优化 - Markdown 组件自动空格,避免分割 url 中的中文
15. 优化 - 工作流上下文拆分,性能优化
16. 优化 - 语音播报,不支持 mediaSource 的浏览器可等待完全生成语音后输出
17. 修复 - Dockerfile pnpm install 支持代理。
18. 修复 - BI 图表生成无法写入文件。同时优化其解析,支持数字类型数组。
19. 修复 - 分享链接首次加载时,标题显示不正确。

View File

@@ -6,6 +6,6 @@ draft: false
toc: true
weight: 900
---
<!-- 9800 ~ 1000 -->
<!-- 900 ~ 1000 -->
FastGPT 是一个由用户和贡献者参与推动的开源项目,如果您对产品使用存在疑问和建议,可尝试[加入社区](community)寻求支持。我们的团队与社区会竭尽所能为您提供帮助。

View File

@@ -4,7 +4,7 @@ description: 'FastGPT 常见应用使用问题,包括简易应用、工作流
icon: 'quiz'
draft: false
toc: true
weight: 903
weight: 908
---
## 工作流中多轮对话场景中如何使连续问题被问题分类节点正确的归类

View File

@@ -4,7 +4,7 @@ description: 'FastGPT 常见聊天框问题'
icon: 'quiz'
draft: false
toc: true
weight: 905
weight: 906
---
## 我修改了工作台的应用,为什么在“聊天”时没有更新配置?

View File

@@ -4,7 +4,7 @@ description: '常见知识库使用问题'
icon: 'quiz'
draft: false
toc: true
weight: 904
weight: 910
---
## 上传的文件内容出现中文乱码

View File

@@ -4,7 +4,7 @@ description: 'FastGPT Docker 部署问题'
icon: ''
draft: false
toc: true
weight: 901
weight: 902
type: redirect
target: /docs/development/docker/#faq
---

View File

@@ -1,7 +1,15 @@
---
title: '常见错误'
title: '报错'
icon: 'quiz'
draft: false
toc: true
weight: 920
---
weight: 914
---
1. ### 当前分组上游负载已饱和,请稍后再试(request id:202407100753411462086782835521)
是oneapi渠道的问题可以换个模型用or换一家中转站
1. ### 使用API时在日志中报错Connection Error
大概率是api-key填写了openapi然后部署的服务器在国内不能访问海外的api可以使用中转或者反代的手段解决访问不到的问题

View File

@@ -0,0 +1,18 @@
---
title: "接入外部渠道"
description: "如何通过外部渠道与 FastGPT 集成,实现对多种平台的支持"
icon: "integration"
draft: false
toc: true
weight: 912
---
1. ### 接入cow图文对话无法直接显示图片
提示词给引导不要以markdown格式输出。图片需要二开 cow 实现图片链接截取并发送。
1. ### 可以获取到用户发送问答的记录吗
在应用的对话日志里可以查看。
![](/imgs/integration1.png)

View File

@@ -3,7 +3,7 @@ title: '其他问题'
icon: 'quiz'
draft: false
toc: true
weight: 925
weight: 918
---
## oneapi 官网是哪个

View File

@@ -0,0 +1,14 @@
---
title: "积分消耗"
description: "了解 FastGPT 中的积分消耗机制和使用场景"
icon: "points"
draft: false
toc: true
weight: 916
---
1. ### 接入oneapi后为什么还会消耗fastgpt的积分
矢量数据库检索会默认消耗。可以查看看绑定提示和使用记录。
![](/imgs/points1.png)

View File

@@ -4,7 +4,7 @@ description: "FastGPT 私有部署常见问题"
icon: upgrade
draft: false
images: []
weight: 902
weight: 904
type: redirect
target: /docs/development/faq/
---

View File

@@ -0,0 +1,9 @@
---
weight: 100
title: '功能介绍'
description: 'FastGPT 的功能和使用指南'
icon: 'import_contacts'
draft: false
images: []
---
<!-- 100 ~ 500 -->

View File

@@ -6,4 +6,4 @@ icon: 'import_contacts'
draft: false
images: []
---
<!-- 100 ~ 300 -->
<!-- 100 ~ 200 -->

View File

@@ -4,7 +4,7 @@ description: "FastGPT AI 相关参数配置说明"
icon: "sign_language"
draft: false
toc: true
weight: 102
weight: 104
---
在 FastGPT 的 AI 对话模块中,有一个 AI 高级配置,里面包含了 AI 模型的参数配置,本文详细介绍这些配置的含义。
@@ -66,7 +66,7 @@ Tips: 可以通过点击上下文按键查看完整的上下文组成,便于
FastGPT 知识库采用 QA 对(不一定都是问答格式,仅代表两个变量)的格式存储,在转义成字符串时候会根据**引用模板**来进行格式化。知识库包含多个可用变量: q, a, sourceId数据的ID, index(第n个数据), source(数据的集合名、文件名)score(距离得分0-1) 可以通过 {{q}} {{a}} {{sourceId}} {{index}} {{source}} {{score}} 按需引入。下面一个模板例子:
可以通过 [知识库结构讲解](/docs/course/dataset_engine/) 了解详细的知识库的结构。
可以通过 [知识库结构讲解](/docs/guide/knowledge_base/dataset_engine/) 了解详细的知识库的结构。
#### 引用模板

View File

@@ -4,7 +4,7 @@ description: "FastGPT 对话问题引导"
icon: "code"
draft: false
toc: true
weight: 108
weight: 106
---
![](/imgs/questionGuide.png)

View File

@@ -20,10 +20,12 @@ weight: 110
随后,你的调试对话框中,就会出现一个文件选择的 icon可以点击文件选择 icon选择你需要上传的文件。
由于采用的是工具调用模式,所以在提问时候,可能需要加上适当的引导,让模型知道,你需要读取`文档`
![打开文件上传](/imgs/fileinpu-2.png)
**工作模式**
从 4.8.13 版本起,简易模式的文件读取将会强制解析文件并放入 system 提示词中,避免连续对话时,模型有时候不会主动调用读取文件的工具。
## 工作流中使用
工作流中,可以在系统配置中,找到`文件输入`配置项,点击其右侧的`开启`/`关闭`按键,即可打开配置弹窗。
@@ -32,14 +34,13 @@ weight: 110
在工作流中,使用文件的方式很多,最简单的就是类似下图中,直接通过工具调用接入文档解析,实现和简易模式一样的效果。
![打开文件上传](/imgs/fileinpu-3.jpg)
| | |
| --------------------- | --------------------- |
| ![](/imgs/image-5.png) | ![](/imgs/image-6.png) |
也可以更简单点,强制每轮对话都携带上文档内容进行回答,这样就不需要调用两次 AI 才能读取文档内容了
![打开文件上传](/imgs/fileinpu-5.jpg)
当然,你也可以在工作流中,对文档进行内容提取、内容分析等,然后将分析的结果传递给 HTTP 或者其他模块,从而实现文件处理的 SOP。不过目前版本`插件`中并未支持文件处理,所以在构建 SOP 的话可能还是有一些麻烦。
当然,你也可以在工作流中,对文档进行内容提取、内容分析等,然后将分析的结果传递给 HTTP 或者其他模块,从而实现文件处理的 SOP
![文档解析](/imgs/image-7.png)
## 文档解析工作原理
@@ -73,23 +74,8 @@ type UserChatItemValueItemType = {
文档解析依赖文档解析节点,这个节点会接收一个`array<string>`类型的输入,对应的是文件输入的 URL输出的是一个`string`,对应的是文档解析后的内容。
![打开文件上传](/imgs/fileinpu-6.jpg)
* 在文档解析节点中,只会解析`文档`类型的 URL它是通过文件 URL 解析出来的`文名件后缀`去判断的。如果你同时选择了文档和图片,图片会被忽略。
* 文档解析节点,除了解析本轮工作流接收的文件外,还会把历史记录的文档 URL 进行解析。最终会解析至多 n 个文档n 取决于你配置文件上传时,允许的最大文件数量。
{{% alert icon="🤖" context="success" %}}
举例:
配置了最多允许 5 个文件上传
1. 第一轮对话,上传 3 个文档和 1 个图片:文档解析节点,返回 3 个文档内容。
2. 第二轮对话,不上传任何文件:文档解析节点,返回 3 个文档内容。
3. 第三轮对话,上传 2 个文档:文档解析节点,返回 5 个文档内容。
4. 第四轮对话,上传 1 个文档:文档解析节点,返回 5 个文档内容,第一轮对话中的第三个文档会被过滤掉。
{{% /alert %}}
* **文档解析节点,只会解析本轮工作流接收的文件,不会解析历史记录的文件。**
* 多个文档内容如何拼接的
按下列的模板,对多个文件进行拼接,即文件名+文件内容的形式组成一个字符串,不同文档之间通过分隔符:`\n******\n` 进行分割。
@@ -101,32 +87,27 @@ ${content}
</Content>
```
### 工具调用如何使用文档解析
### AI节点中如何使用文档解析
在工具调用中,文档解析节点的调用提示词为:`解析对话中所有上传的文档,并返回对应文档内容`
AI 节点AI对话/工具调用中,新增了一个文档链接的输入,可以直接引用文档的地址,从而实现文档内容的引用
作为工具被执行后,文档解析节点会返回解析后的文档内容作为工具响应。
### AI对话中如何使用文档解析
在 AI 对话节点中,新增了一个文档引用的输入,可以直接引用文档解析节点的输出,从而实现文档内容的引用。
它接收一个`string`类型的输入,除了可以引用文档解析结果外,还可以实现自定义内容引用,最终会进行提示词拼接,放置在 role=system 的消息中。提示词模板如下:
它接收一个`Array<string>`类型的输入,最终这些 url 会被解析,并进行提示词拼接,放置在 role=system 的消息中。提示词模板如下:
```
<Quote></Quote> 中的内容作为本次对话的参考:
<Quote>
<FilesContent></FilesContent> 中的内容作为本次对话的参考:
<FilesContent>
{{quote}}
</Quote>
</FilesContent>
```
quote 为引用的内容。
# 4.8.13版本起,关于文件上传的更新
![打开文件上传](/imgs/fileinpu-7.jpg)
由于与 4.8.9 版本有些差异,尽管我们做了向下兼容,避免工作流立即不可用。但是请尽快的按新版本规则进行调整工作流,后续将会去除兼容性代码。
## 文件输入后续更新
* 插件支持配置文件输入
* 子应用和插件调用,支持传递文件输入
* 文档解析,结构化解析结果
* 更多的文件类型输入以及解析器。
1. 简易模式中,将会强制进行文件解析,不再由模型决策是否解析,保证每次都能参考文档。
2. 文档解析:不再解析历史记录中的文件。
3. 工具调用:支持直接选择文档引用,不需要再挂载文档解析工具。会自动解析历史记录中的文件
4. AI 对话:支持直接选择文档引用,不需要进过文档解析节点。会自动解析历史记录中的文件
5. 插件单独运行:不再支持全局文件;插件输入支持配置文件类型,可以取代全局文件上传
6. **工作流调用插件:不再自动传递工作流上传的文件到插件,需要手动给插件输入指定变量。**
7. **工作流调用工作流:不再自动传递工作流上传的文件到子工作流,可以手动选择需要传递的文件链接。**

View File

@@ -4,7 +4,7 @@ description: '快速体验 FastGPT 基础功能'
icon: 'rocket_launch'
draft: false
toc: true
weight: 101
weight: 102
---
更多使用技巧,[查看视屏教程](https://www.bilibili.com/video/BV1sH4y1T7s9)

View File

@@ -4,7 +4,7 @@ description: '本节详细介绍RAG模型的核心机制、应用场景及其在
icon: 'language'
draft: false
toc: true
weight: 106
weight: 402
---
[RAG文档](https://huggingface.co/docs/transformers/model_doc/rag)
@@ -83,7 +83,7 @@ RAG检索增强生成模型通过结合检索器和生成器实现了
RAG模型的性能很大程度上取决于检索器返回的文档质量。由于生成器主要依赖检索器提供的上下文信息如果检索到的文档片段不相关、不准确生成的文本可能出现偏差甚至产生误导性的结果。尤其在多模糊查询或跨领域检索的情况下检索器可能无法找到合适的片段这将直接影响生成内容的连贯性和准确性。
- 挑战当知识库庞大且内容多样时如何提高检索器在复杂问题下的精确度是一大挑战。当前的方法如BM25等在特定任务上有局限尤其是在面对语义模糊的查询时传统的关键词匹配方式可能无法提供语义上相关的内容。
- 解决途径引入混合检索技术如结合稀疏检索BM25与密集检索如向量检索。例如[Faiss](https://fael3z0zfze.feishu.cn/wiki/LULawsUufitGvWkDjx3cKJqHnle?from=from_copylink)的底层实现允许通过BERT等模型生成密集向量表示显著提升语义级别的匹配效果。通过这种方式检索器可以捕捉深层次的语义相似性减少无关文档对生成器的负面影响。
- 解决途径引入混合检索技术如结合稀疏检索BM25与密集检索如向量检索。例如Faiss的底层实现允许通过BERT等模型生成密集向量表示显著提升语义级别的匹配效果。通过这种方式检索器可以捕捉深层次的语义相似性减少无关文档对生成器的负面影响。
#### 4.2.2 生成器的计算复杂度与性能瓶颈

View File

@@ -0,0 +1,9 @@
---
weight: 400
title: '知识库'
description: '知识库的基础原理、搜索方案、Web站点同步和外部文件知识库的使用方法。'
icon: 'book'
draft: false
images: []
---
<!-- 400 ~ 450 -->

View File

@@ -4,7 +4,7 @@ description: '本节会详细介绍 FastGPT 知识库结构设计,理解其 QA
icon: 'language'
draft: false
toc: true
weight: 106
weight: 404
---
## 理解向量

View File

@@ -4,7 +4,7 @@ description: 'FastGPT 外部文件知识库功能介绍和使用方式'
icon: 'language'
draft: false
toc: true
weight: 107
weight: 408
---
外部文件库是 FastGPT 商业版特有功能。它允许接入你现在的文件系统,无需将文件再导入一份到 FastGPT 中。

View File

@@ -4,7 +4,7 @@ description: 'FastGPT Web 站点同步功能介绍和使用方式'
icon: 'language'
draft: false
toc: true
weight: 105
weight: 406
---
![](/imgs/webSync1.jpg)

View File

@@ -0,0 +1,9 @@
---
weight: 300
title: '系统插件'
description: '介绍如何使用和提交系统插件,以及各插件的填写说明'
icon: 'extension'
draft: false
images: []
---
<!-- 300 ~ 400 -->

View File

@@ -0,0 +1,32 @@
---
title: "Bing 搜索插件填写说明"
description: "FastGPT Bing 搜索插件配置步骤详解"
icon: "bing_search"
draft: false
toc: true
weight: 306
---
1. # 打开微软Azure官网登陆账号
https://portal.azure.com/
![](/imgs/bing_search_plugin1.png)
1. # 创建bing web搜索资源
搜索Bing Search v7点击创建
https://portal.azure.com/#create/Microsoft.BingSearch
![](/imgs/bing_search_plugin2.png)
1. # 进入资源详情点击管理密钥
![](/imgs/bing_search_plugin3.png)
# 4. 复制任意一个密钥填入插件输入
![](/imgs/bing_search_plugin4.png)
![](/imgs/bing_search_plugin5.png)

View File

@@ -0,0 +1,26 @@
---
title: "Doc2x 插件填写说明"
description: "如何配置和使用 Doc2x 插件"
icon: "doc_transform"
draft: false
toc: true
weight: 308
---
1. # 打开docx官网创建账号并复制 apikey
https://doc2x.noedgeai.com/
![](/imgs/doc2x_plugin1.png)
![](/imgs/doc2x_plugin2.png)
1. # 填写apikey到fastgpt中
**工作流****中:**
![](/imgs/doc2x_plugin3.png)
**简易模式使用:**
![](/imgs/doc2x_plugin4.png)

View File

@@ -0,0 +1,32 @@
---
title: "Google 搜索插件填写说明"
description: "FastGPT Google 搜索插件配置指南"
icon: "google_search"
draft: false
toc: true
weight: 304
---
1. # 创建Google Custom Search Engine
https://programmablesearchengine.google.com/
我们连到Custom Search Engine control panel 建立Search Engine
![](/imgs/google_search_plugin1.png)
取得搜索引擎的ID即cx
![](/imgs/google_search_plugin2.png)
1. # 获取api key
https://developers.google.com/custom-search/v1/overview?hl=zh-cn
![](/imgs/google_search_plugin3.png)
1. # 填入插件输入参数
将搜索引擎ID填入cx字段api key填入key字段
![](/imgs/google_search_plugin4.png)

View File

@@ -0,0 +1,118 @@
---
title: "如何提交系统插件"
description: "FastGPT 系统插件提交指南"
icon: "plugin_submission"
draft: false
toc: true
weight: 302
---
> 如何向 FastGPT 社区提交系统插件
## 系统插件原则
- 尽可能的轻量简洁,以解决实际问题的工具为主
- 不允许有密集 cpu 计算,不会占用大量内存占用或网络消耗
- 不允许操作数据库
- 不允许往固定的私人地址发送请求(不包含请求某些在线服务,例如 gapier, firecrawl等)
- 不允许使用私人包,可使用主流的开源包
## 什么插件可以合并
由于目前未采用按需安装的模式,合并进仓库的插件会全部展示给用户使用。
为了控制插件的质量以及避免数量过多带来的繁琐,并不是所有的插件都会被合并到开源仓库中,你可以提前 PR 与我们沟通插件的内容。
后续实现插件按需安装后,我们会允许更多的社区插件合入。
## 如何写一个系统插件 - 初步
FastGPT 系统插件和用户工作台的插件效果是一致的,所以你需要提前了解“插件”的定义和功能。
在 FastGPT 中,插件是一种特殊的工作流,它允许你将一个工作流封装起来,并自定义入口参数和出口参数,类似于代码里的 “子函数”。
1. ### 跑通 FastGPT dev 环境
需要在 dev 环境下执行下面的操作。
1. ### 在 FastGPT 工作台中,创建一个插件
选择基础模板即可。
![](/imgs/plugin_submission1.png)
1. ### 创建系统插件配置
系统插件配置以及自定义代码,都会在 **packages/plugins** 目录下。
1.**packages/plugins/src** 下,复制一份 **template** 目录,并修改名字。
2. 打开目录里面的 template.json 文件,配置如下:
3. 目录还有一个 index.ts 文件,下文再提。
```TypeScript
{
"author": "填写你的名字",
"version": "当前系统版本号",
"name": "插件名",
"avatar": "插件头像,需要配成 icon 格式。直接把 logo 图在 pr 评论区提交即可,我们会帮你加入。",
"intro": " 插件的描述,这个描述会影响工具调用",
"showStatus": false, // 是否在对话过程展示状态
"weight": 10, // 排序权重,均默认 10
"isTool": true, // 是否作为工具调用节点
"templateType": "tools", // 都填写 tools 即可,由官方来分类
"workflow": { // 这个对象先不管,待会直接粘贴导出的工作流即可
"nodes": [],
"edges": []
}
}
```
1. 打开 **packages/plugins/register** 文件,注册你的插件。在 list 数组中,加入一个你插件目录的名字,如下图的例子。如需构建插件组(带目录),可参考 DuckDuckGo 插件。
无需额外写代码的插件,直接放在 staticPluginList 内,需要在项目内额外写代码的,写在 packagePluginList 中。
![](/imgs/plugin_submission2.png)
1. ### 完成工作流编排并测试
完成工作流编排后,可以点击右上角的发布,并在其他工作流中引入进行测试(此时属于团队插件)。
1. ### 复制配置到 template.json
鼠标放置在左上角插件的头像和名称上,会出现对于下拉框操作,可以导出工作流配置。
导出的配置,会自动到剪切板,可以直接到 template.json 文件中粘贴使用,替换步骤 2 中,**workflow** 的值。
![](/imgs/plugin_submission3.png)
1. ### 验证插件是否加载成功
刷新页面,打开系统插件,看其是否成功加载,并将其添加到工作流中使用。
![](/imgs/plugin_submission4.png)
1. ### 提交 PR
如果你觉得你的插件需要提交到开源仓库,可以通过 PR 形式向我们提交。
- 写清楚插件的介绍和功能
- 配上插件运行的效果图
- 插件参数填写说明,需要在 PR 中写清楚。例如,有些插件需要去某个提供商申请 key需要附上对应的地址和教材后续我们会加入到文档中。
## 写一个复杂的系统插件 - 进阶
这一章会介绍如何增加一些无法单纯通过编排实现的插件。因为可能需要用到网络请求或第三方包。
上一章提到,在插件的 **template** 目录下,还有一个 **index.ts** 文件,这个文件就是用来执行一些插件的代码的。你可以通过在 HTTP 节点中的 URL填写插件的名字即可触发该方法下面以 **duckduckgo/search** 这个插件为例:
![](/imgs/plugin_submission5.png)
![](/imgs/plugin_submission6.png)
![](/imgs/plugin_submission7.png)
参考上面 3 张图片,当 HTTP 节点的 URL 为系统插件注册的名字时,该请求不会以 HTTP 形式发送,而是会请求到 index.ts 文件中的 main 方法。出入参则对应了 body 和自定义输出的字段名。
由于目前插件会默认插件输出均作为“工具调用”的结果,无法单独指定某些字段作为工具输出,所以,请避免插件的自定义输出携带大量说明字段。

View File

@@ -0,0 +1,9 @@
---
weight: 450
title: '团队与权限'
description: '团队管理、成员组与权限设置,确保团队协作中的数据安全和权限分配合理。'
icon: 'group'
draft: false
images: []
---
<!-- 450 ~ 500 -->

View File

@@ -0,0 +1,8 @@
---
title: "团队&成员组&权限"
description: "如何管理 FastGPT 团队、成员组及权限设置"
icon: "group"
draft: false
toc: true
weight: 450
---

View File

@@ -0,0 +1,9 @@
---
weight: 200
title: '工作台'
description: 'FastGPT 工作台及工作流节点的使用说明'
icon: 'dashboard'
draft: false
images: []
---
<!-- 200 ~ 300 -->

View File

@@ -0,0 +1,8 @@
---
weight: 202
title: '简易模式'
description: '快速了解 FastGPT 工作台的简易模式'
icon: 'speed'
draft: false
images: []
---

View File

@@ -4,7 +4,7 @@ description: "FastGPT 使用 Gapier 快速导入Agent工具"
icon: "build"
draft: false
toc: true
weight: 501
weight: 300
---
FastGPT V4.7版本加入了工具调用,可以兼容 GPTs 的 Actions。这意味着你可以直接导入兼容 GPTs 的 Agent 工具。

View File

@@ -1,10 +1,10 @@
---
title: "高级编排介绍"
description: "快速了解 FastGPT 高级编排"
icon: "circle"
title: "工作流&插件"
description: "快速了解 FastGPT 工作流和插件的使用"
icon: "extension"
draft: false
toc: true
weight: 301
weight: 220
---
FastGPT 从 V4 版本开始采用新的交互方式来构建 AI 应用。使用了 Flow 节点编排(工作流)的方式来实现复杂工作流,提高可玩性和扩展性。但同时也提高了上手的门槛,有一定开发背景的用户使用起来会比较容易。

View File

@@ -0,0 +1,9 @@
---
weight: 230
title: '工作流节点'
description: 'FastGPT 工作流节点设置和使用指南'
icon: 'workflow'
draft: false
images: []
---
<!-- 200 ~ 300 -->

View File

@@ -4,7 +4,7 @@ description: "FastGPT AI 对话模块介绍"
icon: "chat"
draft: false
toc: true
weight: 351
weight: 232
---
## 特点
@@ -30,5 +30,5 @@ weight: 351
{{% alert icon="🍅" context="success" %}}
具体配置参数介绍可以参考: [AI参数配置说明](/docs/course/ai_settings)
具体配置参数介绍可以参考: [AI参数配置说明](/docs/guide/course/ai_settings/)
{{% /alert %}}

View File

@@ -1,10 +1,10 @@
---
title: "内容提取"
title: "文本内容提取"
description: "FastGPT 内容提取模块介绍"
icon: "content_paste_go"
draft: false
toc: true
weight: 352
weight: 240
---
## 特点

View File

@@ -1,10 +1,10 @@
---
title: "问题优化(已合并到知识库搜索)"
title: "问题优化"
description: "问题优化模块介绍和使用"
icon: "input"
draft: false
toc: true
weight: 364
weight: 264
---
## 特点
@@ -36,4 +36,4 @@ weight: 364
## 示例
- [接入谷歌搜索](/docs/workflow/examples/google_search/)
- [接入谷歌搜索](/docs/use-cases/app-cases/google_search/)

View File

@@ -4,7 +4,7 @@ description: "自定义反馈模块介绍"
icon: "feedback"
draft: false
toc: true
weight: 354
weight: 268
---
该模块为临时模块,后续会针对该模块进行更全面的设计。

View File

@@ -4,7 +4,7 @@ description: 'FastGPT AI 知识库搜索模块介绍'
icon: 'chat'
draft: false
toc: true
weight: 357
weight: 234
---
知识库搜索具体参数说明,以及内部逻辑请移步:[FastGPT知识库搜索方案](/docs/course/data_search/)

View File

@@ -0,0 +1,20 @@
---
title: "文档解析"
description: "FastGPT 文档解析模块介绍"
icon: "document_analysis"
draft: false
toc: true
weight: 250
---
<div style="display: flex; gap: 10px;">
<img src="/imgs/document_analysis1.png" alt="文档解析示例 1" width="35%" />
<img src="/imgs/document_analysis2.png" alt="文档解析示例 2" width="65%" />
</div>
开启文件上传后,可使用文档解析组件。
## 功能
## 作用

View File

@@ -0,0 +1,8 @@
---
title: "表单输入"
description: "FastGPT 表单输入模块介绍"
icon: "form_input"
draft: false
toc: true
weight: 244
---

View File

@@ -1,10 +1,10 @@
---
title: "HTTP 模块"
title: "HTTP 请求"
description: "FastGPT HTTP 模块介绍"
icon: "http"
draft: false
toc: true
weight: 355
weight: 252
---
## 特点
@@ -250,6 +250,6 @@ export default async function (ctx: FunctionContext) {
## 相关示例
- [谷歌搜索](/docs/workflow/examples/google_search/)
- [发送飞书webhook](/docs/workflow/examples/feishu_webhook/)
- [实验室预约(操作数据库)](/docs/workflow/examples/lab_appointment/)
- [谷歌搜索](/docs/use-cases/app-cases/google_search/)
- [发送飞书webhook](/docs/use-cases/app-cases/feishu_webhook/)
- [实验室预约(操作数据库)](/docs/use-cases/app-cases/lab_appointment/)

View File

@@ -0,0 +1,29 @@
---
title: "知识库搜索引用合并"
description: "FastGPT 知识库搜索引用合并模块介绍"
icon: "knowledge_merge"
draft: false
toc: true
weight: 262
---
![](/imgs/knowledge_merge1.png)
## 作用
将多个知识库搜索结果合并成一个结果进行输出,并会通过 RRF 进行重新排序(根据排名情况),并且支持最大 tokens 过滤。
## 使用方法
AI对话只能接收一个知识库引用内容。因此如果调用了多个知识库无法直接引用所有知识库如下图
![](/imgs/knowledge_merge2.png)
使用**知识库搜索引用合并**,可以把多个知识库的搜索结果合在一起。
![](/imgs/knowledge_merge3.png)
## 可用例子:
1. 经过问题分类后对不同知识库进行检索,然后统一给一个 AI 进行回答,此时可以用到合并,不需要每个分支都添加一个 AI 对话。

View File

@@ -4,7 +4,7 @@ description: "FastGPT Laf 函数调用模块介绍"
icon: "code"
draft: false
toc: true
weight: 355
weight: 266
---

View File

@@ -1,10 +1,10 @@
---
title: "循环行"
title: "循环行"
description: "FastGPT 循环运行节点介绍和使用"
icon: "input"
draft: false
toc: true
weight: 366
weight: 260
---
## 节点概述

View File

@@ -4,7 +4,7 @@ description: "FastGPT 问题分类模块介绍"
icon: "quiz"
draft: false
toc: true
weight: 358
weight: 238
---
## 特点

View File

@@ -4,7 +4,7 @@ description: "FastGPT 指定回复模块介绍"
icon: "reply"
draft: false
toc: true
weight: 359
weight: 248
---
## 特点

View File

@@ -4,7 +4,7 @@ description: "FastGPT 代码运行节点介绍"
icon: "input"
draft: false
toc: true
weight: 364
weight: 258
---
![alt text](/imgs/image.png)

View File

@@ -1,10 +1,10 @@
---
title: "文本加工"
title: "文本拼接"
description: "FastGPT 文本加工模块介绍"
icon: "input"
draft: false
toc: true
weight: 363
weight: 246
---
## 特点
@@ -29,4 +29,4 @@ weight: 363
## 示例
- [接入谷歌搜索](/docs/workflow/examples/google_search/)
- [接入谷歌搜索](/docs/use-cases/app-cases/google_search/)

View File

@@ -4,7 +4,7 @@ description: "FastGPT 判断器模块介绍"
icon: "input"
draft: false
toc: true
weight: 362
weight: 254
---
## 特点

View File

@@ -1,10 +1,10 @@
---
title: "工具调用"
title: "工具调用&终止"
description: "FastGPT 工具调用模块介绍"
icon: "build"
draft: false
toc: true
weight: 356
weight: 236
---
![](/imgs/flow-tool1.png)
@@ -67,5 +67,5 @@ weight: 356
## 相关示例
- [谷歌搜索](/docs/workflow/examples/google_search/)
- [发送飞书webhook](/docs/workflow/examples/feishu_webhook/)
- [谷歌搜索](/docs/use-cases/app-cases/google_search/)
- [发送飞书webhook](/docs/use-cases/app-cases/feishu_webhook/)

View File

@@ -0,0 +1,32 @@
---
title: "用户选择"
description: "FastGPT 用户选择模块的使用说明"
icon: "user_check"
draft: false
toc: true
weight: 242
---
## 特点
- 用户交互
- 可重复添加
- 触发执行
![](/imgs/user-selection1.png)
## 功能
「用户选择」节点属于用户交互节点,当触发这个节点时,对话会进入“交互”状态,会记录工作流的状态,等用户完成交互后,继续向下执行工作流
![](/imgs/user-selection2.png)
比如上图中的例子,当触发用户选择节点时,对话框隐藏,对话进入“交互状态”
![](/imgs/user-selection3.png)
当用户做出选择时,节点会判断用户的选择,执行“是”的分支
## 作用
基础的用法为提出需要用户做抉择的问题,然后根据用户的反馈设计不同的工作流流程

View File

@@ -0,0 +1,38 @@
---
title: "变量更新"
description: "FastGPT 变量更新模块介绍"
icon: "variable_update"
draft: false
toc: true
weight: 256
---
## 特点
- 可重复添加
- 有外部输入
- 触发执行
- 手动配置
![](/imgs/variable_update1.png)
## 功能
- 更新指定节点的输出值
![](/imgs/variable_update2.png)
![](/imgs/variable_update3.png)
- 更新全局变量
![](/imgs/variable_update4.png)
![](/imgs/variable_update5.png)
## 作用
最基础的使用场景为
- 给一个「自定义变量」类型的全局变量赋值,从而实现全局变量无需用户输入
- 更新「变量更新」节点前的工作流节点输出,在后续使用中,使用的节点输出值为新的输出

View File

@@ -4,7 +4,7 @@ description: 'FastGPT 商业版相关说明'
icon: 'shopping_cart'
draft: false
toc: true
weight: 1001
weight: 1104
---
## 简介

View File

@@ -4,7 +4,7 @@ description: 'FastGPT 线上版定价'
icon: 'currency_yen'
draft: false
toc: true
weight: 1002
weight: 1102
type: redirect
target: https://cloud.tryfastgpt.ai/price
---

View File

@@ -0,0 +1,8 @@
---
title: "应用搭建案例"
description: "FastGPT 应用场景及功能实现的搭建案例"
icon: "construction"
draft: false
weight: 600
---
<!-- 600 ~ 700 -->

View File

@@ -4,7 +4,7 @@ description: '使用 HTTP 模块绘制图片'
icon: 'image'
draft: false
toc: true
weight: 408
weight: 614
---
| | |

View File

@@ -0,0 +1,97 @@
---
title: "英语作文纠错机器人"
description: "使用 FastGPT 创建一个用于英语作文纠错的机器人,帮助用户检测并纠正语言错误"
icon: "spellcheck"
draft: false
toc: true
weight: 608
---
FastGPT 提供了一种基于 LLM Model 搭建应用的简便方式。
本文通过搭建一个英语作文纠错机器人,介绍一下如何使用 **工作流**
## 搭建过程
### 1. 创建工作流
![](/imgs/spellcheck1.png)
可以从 *多轮翻译机器人* 开始创建。
> 多轮翻译机器人是 @米开朗基杨 同学创建的,同样也是一个值得学习的工作流。
### 2. 获取输入,使用大模型进行分析
我们期望让大模型处理文字,返回一个结构化的数据,由我们自己处理。
![](/imgs/spellcheck2.png)
**提示词** 是最重要的一个参数,这里提供的提示词仅供参考:
~~~Markdown
## 角色
资深英语写作专家
## 任务
对输入的原文进行分析。 找出其中的各种错误, 包括但不限于单词拼写错误、 语法错误等。
注意: 忽略标点符号前后空格的问题。
注意: 对于存在错误的句子, 提出修改建议是指指出这个句子中的具体部分, 然后提出将这一个部分修改替换为什么。
## 输出格式
不要使用 Markdown 语法, 输入 JSON 格式的内容。
输出的"reason"的内容使用中文。
直接输出一个列表, 其成员为一个相同类型的对象, 定义如下
您正在找回 FastGPT 账号
```
{
“raw”: string; // 表示原文
“reason”: string; // 表示原因
“suggestion”: string; // 修改建议
}
```
~~~
可以在模型选择的窗口中设置禁用 AI 回复。
这样就看不到输出的 json 格式的内容了。
![](/imgs/spellcheck3.png)
### 3. 数据处理
上面的大模型输出了一个 json这里要进行数据处理。数据处理可以使用代码执行组件。
![](/imgs/spellcheck4.png)
```JavaScript
function main({data}){
const array = JSON.parse(data)
return {
content: array.map(
(item, index) => {
return `
## 分析${index+1}
- **错误**: ${item.raw}
- **分析**: ${item.reason}
- **修改建议**: ${item.suggestion}
`
}
).join('')
}
}
```
上面的代码将 JSON 解析为 Object, 然后拼接成一串 Markdown 语法的字符串。
FastGPT 的指定回复组件可以将 Markdown 解析为 Html 返回。
## 发布
可以使用发布渠道进行发布。
![](/imgs/spellcheck5.png)
可以选择通过 URL 访问,或者是直接嵌入你的网页中。
> [点我使用](https://share.fastgpt.in/chat/share?shareId=b4r173wkcjae7wpnexcvmyc3)

View File

@@ -4,7 +4,7 @@ description: '利用工具调用模块发送一个飞书webhook通知'
icon: 'image'
draft: false
toc: true
weight: 409
weight: 618
---
该文章展示如何发送一个简单的飞书webhook通知以此类推发送其他类型的通知也可以这么操作。

View File

@@ -4,7 +4,7 @@ description: '利用指定回复,创建固定的开头和结尾'
icon: 'healing'
draft: false
toc: true
weight: 405
weight: 610
---
![](/imgs/demo-fix-evidence1.jpg)

View File

@@ -4,7 +4,7 @@ description: '将 FastGPT 接入谷歌搜索'
icon: 'search'
draft: false
toc: true
weight: 406
weight: 616
---
| | |

View File

@@ -4,7 +4,7 @@ description: '展示高级编排操作数据库的能力'
icon: 'database'
draft: false
toc: true
weight: 407
weight: 612
---
| | |

View File

@@ -0,0 +1,315 @@
---
title: "多轮翻译机器人"
description: "如何使用 FastGPT 构建一个多轮翻译机器人,实现连续的对话翻译功能"
icon: "translate"
draft: false
toc: true
weight: 606
---
吴恩达老师提出了一种反思翻译的大语言模型(LLM)翻译工作流程——[GitHub - andrewyng/translation-agent](https://github.com/andrewyng/translation-agent),具体工作流程如下:
1. 提示一个 LLM 将文本从 `source_language` 翻译到 `target_language`
2. 让 LLM 反思翻译结果并提出建设性的改进建议;
3. 使用这些建议来改进翻译。
这个翻译流程应该是目前比较新的一种翻译方式,利用 LLM 对自己的翻译结果进行改进来获得较好的翻译效果
项目中展示了可以利用对长文本进行分片,然后分别进行反思翻译处理,以突破 LLM 对 tokens 数量的限制,真正实现长文本一键高效率高质量翻译。
项目还通过给大模型限定国家地区,已实现更精确的翻译,如美式英语、英式英语之分;同时提出一些可能能带来更好效果的优化,如对于一些 LLM 未曾训练到的术语(或有多种翻译方式的术语)建立术语表,进一步提升翻译的精确度等等
而这一切都能通过 Fastgpt 工作流轻松实现,本文将手把手教你如何复刻吴恩达老师的 translation-agent
# 单文本块反思翻译
先从简单的开始,即不超出 LLM tokens 数量限制的单文本块翻译
## 初始翻译
第一步先让 LLM 对源文本块进行初始翻译(翻译的提示词在源项目中都有)
![](/imgs/translate1.png)
通过`文本拼接`模块引用 源语言、目标语言、源文本这三个参数,生成提示词,传给 LLM让它给出第一版的翻译
## 反思
然后让 LLM 对第一步生成的初始翻译给出修改建议,称之为 反思
![](/imgs/translate2.png)
这时的提示词接收 5 个参数,源文本、初始翻译、源语言、目标语言 以及限定词地区国家,这样 LLM 会对前面生成的翻译提出相当多的修改建议,为后续的提升翻译作准备
## 提升翻译
![](/imgs/translate3.png)
在前文生成了初始翻译以及相应的反思后,将这二者输入给第三次 LLM 翻译,这样我们就能获得一个比较高质量的翻译结果
完整的工作流如下
![](/imgs/translate4.png)
## 运行效果
由于考虑之后对这个反思翻译的复用,所以创建了一个插件,那么在下面我直接调用这个插件就能使用反思翻译,效果如下
随机挑选了一段哈利波特的文段
![](/imgs/translate5.png)
![](/imgs/translate6.png)
可以看到反思翻译后的效果还是好上不少的,其中反思的输出如下
![](/imgs/translate7.png)
# 长文反思翻译
在掌握了对短文本块的反思翻译后,我们能轻松的通过分片和循环,实现对长文本也即多文本块的反思翻译
整体的逻辑是,首先对传入文本的 tokens数量做判断如果不超过设置的 tokens 限制,那么直接调用单文本块反思翻译,如果超过设置的 tokens限制那么切割为合理的大小再分别进行对应的反思翻译处理
## 计算 tokens
![](/imgs/translate8.png)
首先,我使用了 Laf函数 模块来实现对输入文本的 tokens 的计算
laf函数的使用相当简单即开即用只需要在 laf 创建个应用,然后安装 tiktoken 依赖,导入如下代码即可
```TypeScript
const { Tiktoken } = require("tiktoken/lite");
const cl100k_base = require("tiktoken/encoders/cl100k_base.json");
interface IRequestBody {
str: string
}
interface RequestProps extends IRequestBody {
systemParams: {
appId: string,
variables: string,
histories: string,
cTime: string,
chatId: string,
responseChatItemId: string
}
}
interface IResponse {
message: string;
tokens: number;
}
export default async function (ctx: FunctionContext): Promise<IResponse> {
const { str = "" }: RequestProps = ctx.body
const encoding = new Tiktoken(
cl100k_base.bpe_ranks,
cl100k_base.special_tokens,
cl100k_base.pat_str
);
const tokens = encoding.encode(str);
encoding.free();
return {
message: 'ok',
tokens: tokens.length
};
}
```
再回到 Fastgpt点击“同步参数”再连线将源文本传入即可计算 tokens 数量
## 计算单文本块大小
![](/imgs/translate9.png)
由于不涉及第三方包,只是一些数据处理,所以直接使用 代码运行 模块处理即可
```TypeScript
function main({tokenCount, tokenLimit}){
const numChunks = Math.ceil(tokenCount / tokenLimit);
let chunkSize = Math.floor(tokenCount / numChunks);
const remainingTokens = tokenCount % tokenLimit;
if (remainingTokens > 0) {
chunkSize += Math.floor(remainingTokens / numChunks);
}
return {chunkSize};
}
```
通过上面的代码,我们就能算出不超过 token限制的合理单文本块大小是多少了
## 获得切分后源文本块
![](/imgs/translate10.png)
通过单文本块大小和源文本,我们再编写一个函数调用 langchain 的 textsplitters 包来实现文本分片,具体代码如下
```TypeScript
import cloud from '@lafjs/cloud'
import { TokenTextSplitter } from "@langchain/textsplitters";
interface IRequestBody {
text: string
chunkSize: number
}
interface RequestProps extends IRequestBody {
systemParams: {
appId: string,
variables: string,
histories: string,
cTime: string,
chatId: string,
responseChatItemId: string
}
}
interface IResponse {
output: string[];
}
export default async function (ctx: FunctionContext): Promise<IResponse>{
const { text = '', chunkSize=1000 }: RequestProps = ctx.body;
const splitter = new TokenTextSplitter({
encodingName:"gpt2",
chunkSize: Number(chunkSize),
chunkOverlap: 0,
});
const output = await splitter.splitText(text);
return {
output
}
}
```
这样我们就获得了切分好的文本,接下去的操作就类似单文本块反思翻译
## 多文本块翻译
这里应该还是不能直接调用前面的单文本块反思翻译,因为提示词中会涉及一些上下文的处理(或者可以修改下前面写好的插件,多传点参数进去)
详细的和前面类似,就是提示词进行一些替换,以及需要做一些很简单的数据处理,整体效果如下
### 多文本块初始翻译
![](/imgs/translate11.png)
### 多文本块反思
![](/imgs/translate12.png)
### 多文本块提升翻译
![](/imgs/translate13.png)
## 循环执行
长文反思翻译比较关键的一个部分,就是对多个文本块进行循环反思翻译
Fastgpt 提供了工作流线路可以返回去执行的功能,所以我们可以写一个很简单的判断函数,来判断结束或是接着执行
![](/imgs/translate14.png)
也就是通过判断当前处理的这个文本块,是否是最后一个文本块,从而判断是否需要继续执行,就这样,我们实现了长文反思翻译的效果
完整工作流如下
![](/imgs/translate15.png)
## 运行效果
首先输入全局设置
![](/imgs/translate16.png)
然后输入需要翻译的文本,这里我选择了一章哈利波特的英文原文来做翻译,其文本长度通过 openai 对 tokens 数量的判断如下
![](/imgs/translate17.png)
实际运行效果如下
![](/imgs/translate18.png)
可以看到还是能满足阅读需求的
# 进一步调优
## 提示词调优
在源项目中,给 AI 的系统提示词还是比较的简略的,我们可以通过比较完善的提示词,来督促 LLM 返回更合适的翻译,进一步提升翻译的质量
比如初始翻译中,
```TypeScript
# Role: 资深翻译专家
## Background:
你是一位经验丰富的翻译专家,精通{{source_lang}}{{target_lang}}互译,尤其擅长将{{source_lang}}文章译成流畅易懂的{{target_lang}}。你曾多次带领团队完成大型翻译项目,译文广受好评。
## Attention:
- 翻译过程中要始终坚持"信、达、雅"的原则,"达"尤为重要
- 译文要符合{{target_lang}}的表达习惯,通俗易懂,连贯流畅
- 避免使用过于文绉绉的表达和晦涩难懂的典故引用
## Constraints:
- 必须严格遵循四轮翻译流程:直译、意译、校审、定稿
- 译文要忠实原文,准确无误,不能遗漏或曲解原意
## Goals:
- 通过四轮翻译流程,{{source_lang}}原文译成高质量的{{target_lang}}译文
- 译文要准确传达原文意思,语言表达力求浅显易懂,朗朗上口
- 适度使用一些熟语俗语、流行网络用语等,增强译文的亲和力
- 在直译的基础上,提供至少2个不同风格的意译版本供选择
## Skills:
- 精通{{source_lang}} {{target_lang}}两种语言,具有扎实的语言功底和丰富的翻译经验
- 擅长将{{source_lang}}表达习惯转换为地道自然的{{target_lang}}
- 对当代{{target_lang}}语言的发展变化有敏锐洞察,善于把握语言流行趋势
## Workflow:
1. 第一轮直译:逐字逐句忠实原文,不遗漏任何信息
2. 第二轮意译:在直译的基础上用通俗流畅的{{target_lang}}意译原文,至少提供2个不同风格的版本
3. 第三轮校审:仔细审视译文,消除偏差和欠缺,使译文更加地道易懂
4. 第四轮定稿:择优选取,反复修改润色,最终定稿出一个简洁畅达、符合大众阅读习惯的译文
## OutputFormat:
- 只需要输出第四轮定稿的回答
## Suggestions:
- 直译时力求忠实原文,但不要过于拘泥逐字逐句
- 意译时在准确表达原意的基础上,用最朴实无华的{{target_lang}}来表达
- 校审环节重点关注译文是否符合{{target_lang}}表达习惯,是否通俗易懂
- 定稿时适度采用一些熟语谚语、网络流行语等,使译文更接地气- 善于利用{{target_lang}}的灵活性,用不同的表述方式展现同一内容,提高译文的可读性
```
从而返回更准确更高质量的初始翻译,后续的反思和提升翻译也可以修改更准确的提示词,如下
![](/imgs/translate19.png)
然后再让我们来看看运行效果
![](/imgs/translate20.png)
给了和之前相同的一段文本进行测试,测试效果还是比较显著的,就比如红框部分,之前的翻译如下
![](/imgs/translate21.png)
从“让你的猫头鹰给我写信”这样有失偏颇的翻译,变成“给我写信,你的猫头鹰会知道怎么找到我”这样较为准确的翻译
## 其他调优
比如限定词调优,源项目中已经做了示范,就是加上国家地区这个限定词,实测确实会有不少提升
出于 LLM 的卓越能力我们能够通过设置不同的prompt来获取不同的翻译结果也就是可以很轻松地通过设置特殊的限定词来实现特定的更精确的翻译
而对于一些超出 LLM 理解的术语等,也可以利用 Fastgpt 的知识库功能进行相应扩展,进一步完善翻译机器人的功能

View File

@@ -0,0 +1,86 @@
---
title: "如何提交应用模板"
description: "指南:如何向 FastGPT 提交应用模板"
icon: "template_submission"
draft: false
toc: true
weight: 602
---
## 什么模板可以合并
目前合并进仓库的应用模板,会在「模板市场」中全部展示给用户。
为了控制模板的质量以及避免数量过多带来的繁琐,并不是所有的模板都会被合并到开源仓库中,你可以提前 PR 与我们沟通模板的内容。
预估最后总体的数量不会很多,控制在 50 个左右,一半来自 FastGPT Team一半来自社区用户。
## 如何写一个应用模板
1. ### 跑通 FastGPT dev 环境
需要在 dev 环境下执行下面的操作。
> 可参照 [FastGPT快速开始本地开发](https://doc.fastgpt.in/docs/development/intro/)
1. ### 在 FastGPT 工作台中,创建一个应用
创建空白工作流即可。
![](/imgs/template_submission1.png)
1. ### 创建应用模板
应用模板配置以及相关资源,都会在 **projects/app/public/appMarketTemplates** 目录下。
![](/imgs/template_submission2.png)
1.**projects/app/public/appMarketTemplates** 目录下,创建一个文件夹,名称为模板对应的 id。
2. 在刚刚创建的文件夹中,再创建一个 **template.json** 文件,复制粘贴并填写如下配置:
```JSON
{
"name": "模板名",
"intro": "模板描述,会展示在模板市场的展示页",
"author": "填写你的名字",
"avatar": "模板头像,可以将图片文件放在同一个文件夹中,然后填写相应路径",
"tags": ["模板标签"], // writing(文本创作)image-generation(图片生成)web-search(联网搜索),
// roleplay(角色扮演), office-services(办公服务) 暂时分为 5 类,从中选择相应的标签
"type": "模板类别", // simple(简易应用), advanced(工作流), plugin(插件)
"workflow": { // 这个对象先不管,待会直接粘贴导出的工作流即可
"nodes": [],
"edges": [],
"chatConfig": {}
}
}
```
1. ### 完成应用编排并测试
完成应用编排后,可以点击右上角的发布。
1. ### 复制配置到 template.json
鼠标放置在左上角应用的头像和名称上,会出现对于下拉框操作,可以导出工作流配置。
导出的配置,会自动复制到剪切板,可以直接到 template.json 文件中粘贴使用,替换步骤 2 中,**workflow** 的值。
![](/imgs/template_submission3.png)
1. ### 验证模板是否加载成功
刷新页面,打开模板市场,看其是否成功加载,并点击「使用」测试其功能。
![](/imgs/template_submission4.png)
1. ### 提交 PR
如果你觉得你的模板需要提交到开源仓库,可以通过 PR 形式向我们提交。
- 写清楚模板的介绍和功能
- 配上模板运行的效果图
- 模板参数填写说明,需要在 PR 中写清楚。例如,有些模板需要去某个提供商申请 key需要附上对应的地址和教程后续我们会加入到文档中。

View File

@@ -4,7 +4,7 @@ description: '利用 AI 自我反思提升翻译质量,同时循环迭代执
icon: 'translate'
draft: false
toc: true
weight: 401
weight: 604
---
直接使用 LLM 来翻译长字幕会遇到很多难点,这些难点也正是直接使用 AI 无法有效处理的问题:

View File

@@ -0,0 +1,9 @@
---
weight: 500
title: "外部调用 FastGPT"
description: "外部应用通过多种方式调用 FastGPT 功能的教程"
icon: "cloud"
draft: false
images: []
---
<!-- 500 ~ 600 -->

View File

@@ -4,7 +4,7 @@ description: "FastGPT 接入飞书机器人教程"
icon: "chat"
draft: false
toc: true
weight: 111
weight: 504
---
从 4.8.10 版本起FastGPT 商业版支持直接接入飞书机器人,无需额外的 API。

View File

@@ -0,0 +1,8 @@
---
title: "iframe 接入"
description: "通过 iframe 嵌入 FastGPT 内容到其他网页或应用"
icon: "iframe"
draft: false
toc: true
weight: 512
---

View File

@@ -4,7 +4,7 @@ description: 'FastGPT 接入微信公众号教程'
icon: 'description'
draft: false
toc: true
weight: 113
weight: 506
---
从 4.8.10 版本起FastGPT 商业版支持直接接入微信公众号,无需额外的 API。

View File

@@ -4,14 +4,14 @@ description: "FastGPT 对接 chatgpt-on-wechat"
icon: "chat"
draft: false
toc: true
weight: 504
weight: 509
---
# 1 分钟对接 chatgpt-on-wechat
[chatgpt-on-wechat GitHub 地址](https://github.com/zhayujie/chatgpt-on-wechat)
由于 FastGPT 的 API 接口和 OpenAI 的规范一致,可以无需变更原来的应用即可使用 FastGPT 上编排好的应用。API 使用可参考 [这篇文章](/docs/course/openapi/)。编排示例,可参考 [高级编排介绍](/docs/workflow/intro)
由于 FastGPT 的 API 接口和 OpenAI 的规范一致,可以无需变更原来的应用即可使用 FastGPT 上编排好的应用。API 使用可参考 [这篇文章](/docs/use-cases/external-integration/openapi/)。编排示例,可参考 [高级编排介绍](/docs/workflow/intro)
## 1. 获取 OpenAPI 密钥

View File

@@ -4,7 +4,7 @@ description: "通过 API 访问 FastGPT 应用"
icon: "model_training"
draft: false
toc: true
weight: 112
weight: 502
---
在 FastGPT 中,你可以为每一个应用创建多个 API 密钥,用于访问应用的 API 接口。每个密钥仅能访问一个应用。完整的接口可以[查看应用对话接口](/docs/development/openapi/chat)。

View File

@@ -4,7 +4,7 @@ description: "FastGPT 接入微信和企业微信 "
icon: "chat"
draft: false
toc: true
weight: 506
weight: 510
---
# FastGPT 三分钟接入微信/企业微信

View File

@@ -1,9 +0,0 @@
---
weight: 300
title: '高级编排'
description: 'FastGPT 高级编排文档'
icon: 'family_history'
draft: false
images: []
---
<!-- 300 ~ 500 -->

View File

@@ -1,8 +0,0 @@
---
weight: 400
title: "编排示例"
description: "介绍 FastGPT 的高级编排实践案例"
icon: "list"
draft: false
images: []
---

View File

@@ -1,10 +0,0 @@
---
weight: 350
title: "模块介绍"
description: "介绍 FastGPT 的常用模块"
icon: "apps"
draft: false
images: []
---
<!-- 350 ~ 400 -->

View File

@@ -1,16 +0,0 @@
---
title: "对话入口"
description: "FastGPT 对话入口模块介绍"
icon: "input"
draft: false
toc: true
weight: 356
---
## 特点
- 流程入口
- 无输入
- 自动执行
![](/imgs/chatinput.png)