Skip to content

Commit

Permalink
4.8.11 test (#2843)
Browse files Browse the repository at this point in the history
* feat: app version test

* update doc

* fix: paging num error

* fix: doc api domain

* rename variable

* perf: memment node min size
  • Loading branch information
c121914yu authored Sep 30, 2024
1 parent 7c829fe commit 7c38d1d
Show file tree
Hide file tree
Showing 39 changed files with 427 additions and 179 deletions.
7 changes: 6 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,10 @@
"i18n-ally.translate.engines": ["google"],
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
},
"markdown.copyFiles.destination": {
"/docSite/content/**/*": "${documentWorkspaceFolder}/docSite/assets/imgs/"
},
"markdown.copyFiles.overwriteBehavior": "nameIncrementally",
"markdown.copyFiles.transformPath": "const filename = uri.path.split('/').pop(); return `/imgs/${filename}`;"
}
Binary file added docSite/assets/imgs/image-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docSite/assets/imgs/image-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docSite/assets/imgs/image-3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docSite/assets/imgs/image-4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docSite/assets/imgs/image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docSite/content/zh-cn/docs/course/openapi.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Tips: 安全起见,你可以设置一个额度或者过期时间,放置 key
## 替换三方应用的变量

```bash
OPENAI_API_BASE_URL: https://api.tryfastgpt.ai/api (改成自己部署的域名)
OPENAI_API_BASE_URL: https://api.fastgpt.in/api (改成自己部署的域名)
OPENAI_API_KEY = 上一步获取到的密钥
```

Expand Down
4 changes: 2 additions & 2 deletions docSite/content/zh-cn/docs/development/openapi/auth.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ FastGPT 的 API Key **有 2 类**,一类是全局通用的 key (无法直接
OpenAPI 中,所有的接口都通过 Header.Authorization 进行鉴权。

```
baseUrl: "https://api.tryfastgpt.ai/api"
baseUrl: "https://api.fastgpt.in/api"
headers: {
Authorization: "Bearer {{apikey}}"
}
Expand All @@ -41,7 +41,7 @@ headers: {
**发起应用对话示例**

```sh
curl --location --request POST 'https://api.tryfastgpt.ai/api/v1/chat/completions' \
curl --location --request POST 'https://api.fastgpt.in/api/v1/chat/completions' \
--header 'Authorization: Bearer fastgpt-xxxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
Expand Down
2 changes: 1 addition & 1 deletion docSite/content/zh-cn/docs/development/openapi/chat.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ weight: 852
{{< markdownify >}}

```bash
curl --location --request POST 'https://api.tryfastgpt.ai/api/v1/chat/completions' \
curl --location --request POST 'https://api.fastgpt.in/api/v1/chat/completions' \
--header 'Authorization: Bearer fastgpt-xxxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
Expand Down
8 changes: 4 additions & 4 deletions docSite/content/zh-cn/docs/development/openapi/dataset.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ weight: 853
**新例子**

```bash
curl --location --request POST 'https://api.tryfastgpt.ai/api/support/wallet/usage/createTrainingUsage' \
curl --location --request POST 'https://api.fastgpt.in/api/support/wallet/usage/createTrainingUsage' \
--header 'Authorization: Bearer {{apikey}}' \
--header 'Content-Type: application/json' \
--data-raw '{
Expand All @@ -34,7 +34,7 @@ curl --location --request POST 'https://api.tryfastgpt.ai/api/support/wallet/usa
**x例子**

```bash
curl --location --request POST 'https://api.tryfastgpt.ai/api/support/wallet/bill/createTrainingBill' \
curl --location --request POST 'https://api.fastgpt.in/api/support/wallet/bill/createTrainingBill' \
--header 'Authorization: Bearer {{apikey}}' \
--header 'Content-Type: application/json' \
--data-raw '{
Expand Down Expand Up @@ -991,7 +991,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/collect
{{< markdownify >}}

```bash
curl --location --request POST 'https://api.tryfastgpt.ai/api/core/dataset/data/pushData' \
curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/data/pushData' \
--header 'Authorization: Bearer apikey' \
--header 'Content-Type: application/json' \
--data-raw '{
Expand Down Expand Up @@ -1328,7 +1328,7 @@ curl --location --request DELETE 'http://localhost:3000/api/core/dataset/data/de
{{< markdownify >}}

```bash
curl --location --request POST 'https://api.tryfastgpt.ai/api/core/dataset/searchTest' \
curl --location --request POST 'https://api.fastgpt.in/api/core/dataset/searchTest' \
--header 'Authorization: Bearer fastgpt-xxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
Expand Down
47 changes: 24 additions & 23 deletions docSite/content/zh-cn/docs/development/upgrading/4811.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,26 +88,27 @@ weight: 813

1. 新增 - 表单输入节点,允许用户在工作流中让用户输入一些信息。
2. 新增 - 循环运行节点,可传入数组进行批量调用,目前最多支持 50 长度的数组串行执行。
3. 新增 - 节点支持折叠。
4. 新增 - 聊天记录滚动加载,不再只加载 30 条。
5. 新增 - 工作流增加触摸板优先模式,可以通过工作流右下角按键进行切换。
6. 新增 - 沙盒增加字符串转 base64 全局方法(全局变量 strToBase64)。
7. 新增 - 支持 Openai o1 模型,需增加模型的 `defaultConfig` 配置,覆盖 `temperature``max_tokens``stream`配置,o1 不支持 stream 模式, 详细可重新拉取 `config.json` 配置文件查看。
8. 新增 - AI 对话节点知识库引用,支持配置 role=system 和 role=user,已配置的过自定义提示词的节点将会保持 user 模式,其余用户将转成 system 模式。
9. 新增 - 插件支持上传系统文件。
10. 新增 - 子应用嵌套调用时,版本锁定。主应用未主动更新版本时,不会取最新版进行执行,保证主应用服务稳定。
11. 新增 - 插件输出,支持指定字段作为工具响应。
12. 新增 - 支持工作流嵌套子应用时,可以设置`非流模式`,同时简易模式也可以选择工作流作为插件了,简易模式调用子应用时,都将强制使用非流模式。
13. 新增 - 调试模式下,子应用调用,支持返回详细运行数据。
14. 新增 - 保留所有模式下子应用嵌套调用的日志。
15. 优化 - 工作流嵌套层级限制 20 层,避免因编排不合理导致的无限死循环。
16. 优化 - 工作流 handler 性能优化。
17. 优化 - 工作流快捷键,避免调试测试时也会触发复制和回退。
18. 修复 - 工作流工具调用中修改全局变量后,无法传递到后续流程。
19. 优化 - 流输出,切换浏览器 Tab 后仍可以继续输出。
20. 优化 - 完善外部文件知识库相关 API
21. 修复 - 知识库选择权限问题。
22. 修复 - 空 chatId 发起对话,首轮携带用户选择时会异常。
23. 修复 - createDataset 接口,intro 为赋值。
24. 修复 - 对话框渲染性能问题。
25. 修复 - 工具调用历史记录存储不正确。
3. 新增 - 自定义工具变量节点,可以为工具调用子流程完全自定义变量。在构建复杂 Agent 时有帮助。
4. 新增 - 节点支持折叠。
5. 新增 - 聊天记录滚动加载,不再只加载 30 条。
6. 新增 - 工作流增加触摸板优先模式,可以通过工作流右下角按键进行切换。
7. 新增 - 沙盒增加字符串转 base64 全局方法(全局变量 strToBase64)。
8. 新增 - 支持 Openai o1 模型,需增加模型的 `defaultConfig` 配置,覆盖 `temperature``max_tokens``stream`配置,o1 不支持 stream 模式, 详细可重新拉取 `config.json` 配置文件查看。
9. 新增 - AI 对话节点知识库引用,支持配置 role=system 和 role=user,已配置的过自定义提示词的节点将会保持 user 模式,其余用户将转成 system 模式。
10. 新增 - 插件支持上传系统文件。
11. 新增 - 子应用嵌套调用时,版本锁定。主应用未主动更新版本时,不会取最新版进行执行,保证主应用服务稳定。
12. 新增 - 插件输出,支持指定字段作为工具响应。
13. 新增 - 支持工作流嵌套子应用时,可以设置`非流模式`,同时简易模式也可以选择工作流作为插件了,简易模式调用子应用时,都将强制使用非流模式。
14. 新增 - 调试模式下,子应用调用,支持返回详细运行数据。
15. 新增 - 保留所有模式下子应用嵌套调用的日志。
16. 优化 - 工作流嵌套层级限制 20 层,避免因编排不合理导致的无限死循环。
17. 优化 - 工作流 handler 性能优化。
18. 优化 - 工作流快捷键,避免调试测试时也会触发复制和回退。
19. 修复 - 工作流工具调用中修改全局变量后,无法传递到后续流程。
20. 优化 - 流输出,切换浏览器 Tab 后仍可以继续输出。
21. 优化 - 完善外部文件知识库相关 API
22. 修复 - 知识库选择权限问题。
23. 修复 - 空 chatId 发起对话,首轮携带用户选择时会异常。
24. 修复 - createDataset 接口,intro 为赋值。
25. 修复 - 对话框渲染性能问题。
26. 修复 - 工具调用历史记录存储不正确。
4 changes: 2 additions & 2 deletions docSite/content/zh-cn/docs/use-cases/onwechat.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ weight: 504

## 3. 创建 docker-compose.yml 文件

只需要修改 `OPEN_AI_API_KEY``OPEN_AI_API_BASE` 两个环境变量即可。其中 `OPEN_AI_API_KEY` 为第一步获取的密钥,`OPEN_AI_API_BASE` 为 FastGPT 的 OpenAPI 地址,例如:`https://api.tryfastgpt.ai/api/v1`
只需要修改 `OPEN_AI_API_KEY``OPEN_AI_API_BASE` 两个环境变量即可。其中 `OPEN_AI_API_KEY` 为第一步获取的密钥,`OPEN_AI_API_BASE` 为 FastGPT 的 OpenAPI 地址,例如:`https://api.fastgpt.in/api/v1`

随便找一个目录,创建一个 docker-compose.yml 文件,将下面的代码复制进去。

Expand All @@ -40,7 +40,7 @@ services:
- seccomp:unconfined
environment:
OPEN_AI_API_KEY: 'fastgpt-z51pkjqm9nrk03a1rx2funoy'
OPEN_AI_API_BASE: 'https://api.tryfastgpt.ai/api/v1'
OPEN_AI_API_BASE: 'https://api.fastgpt.in/api/v1'
MODEL: 'gpt-3.5-turbo'
CHANNEL_TYPE: 'wx'
PROXY: ''
Expand Down
87 changes: 87 additions & 0 deletions docSite/content/zh-cn/docs/workflow/modules/sandbox.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
title: "代码运行"
description: "FastGPT 代码运行节点介绍"
icon: "input"
draft: false
toc: true
weight: 364
---

![alt text](/imgs/image.png)

## 功能

可用于执行一段简单的 js 代码,用于进行一些复杂的数据处理。代码运行在沙盒中,无法进行网络请求、dom和异步操作。如需复杂操作,需外挂 HTTP 实现。

**注意事项**

- 私有化用户需要部署`fastgpt-sandbox` 镜像,并配置`SANDBOX_URL`环境变量。
- 沙盒最大运行 10s, 32M 内存限制。


## 变量输入

可在自定义输入中添加代码运行需要的变量,在代码的 main 函数中,可解构出相同名字的变量。

如上图,自定义输入中有 data1 和 data2 两个变量,main 函数中可以解构出相同名字的变量。

## 结果输出

务必返回一个 object 对象

自定义输出中,可以添加变量名来获取 object 对应 key 下的值。例如上图中,返回了一个对象:

```json
{
result: data1,
data2
}
```

他有 2 个 key:result和 data2(js 缩写,key=data2,value=data2)。这时候自定义输出中就可以添加 2 个变量来获取对应 key 下的 value。

## 内置 JS 全局变量

### delay 延迟

延迟 1 秒后返回

```js
async function main({data1, data2}){
await delay(1000)
return {
result: "111"
}
}
```

### countToken 统计 token

```js
function main({input}){
return {
result: countToken(input)
}
}
```

![alt text](/imgs/image-1.png)

### strToBase64 字符串转 base64(4.8.11 版本新增)

可用于将 SVG 图片转换为 base64 格式展示。

```js
function main({input}){

return {
/*
param1: input 需要转换的字符串
param2: base64 prefix 前缀
*/
result: strToBase64(input,'data:image/svg+xml;base64,')
}
}
```

![alt text](/imgs/image-2.png)
18 changes: 15 additions & 3 deletions docSite/content/zh-cn/docs/workflow/modules/tool.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ weight: 356
1. 无必须的参数:尽管上下文中,没有适合的参数,也可以调用该工具。但有时候,LLM会自己伪造一个参数。
2. 有必须的参数:如果没有适合的参数,LLM可能不会调用该工具。可以通过提示词,引导用户提供参数。

### 工具调用逻辑

在支持`函数调用`的模型中,可以一次性调用多个工具,调用逻辑如下:

![](/imgs/flow-tool2.png)
Expand All @@ -49,10 +47,24 @@ weight: 356

高级编排中,托动工具调用的连接点,可用的工具头部会出现一个菱形,可以将它与工具调用模块底部的菱形相连接。

被连接的工具,会自动分离工具输入与普通的输入,并且可以编辑`介绍`,可以通过调整介绍,使得该工具调用时机更加精确。
被连接的工具,会自动分离工具输入与普通的输入,并且可以编辑`描述`,可以通过调整介绍,使得该工具调用时机更加精确。对于一些内置的节点,务必修改`描述`才能让模型正常调用

关于工具调用,如何调试仍然是一个玄学,所以建议,不要一次性增加太多工具,选择少量工具调优后再进一步尝试。

## 组合节点

### 工具调用终止

工具调用默认会把子流程运行的结果作为`工具结果`,返回给模型进行回答。有时候,你可能不希望模型做回答,你可以给对应子流程的末尾增加上一个`工具调用终止`节点,这样,子流程的结果就不会被返回给模型。

![alt text](/imgs/image-3.png)

### 自定义工具变量

工具调用的子流程运行,有时候会依赖`AI`生成的一些变量,为了简化交互流程,我们给系统内置的节点都指定了`工具变量`。然而,有些时候,你需要的变量不仅是目标流程的`首个节点`的变量,而是需要更复杂的变量,此时你可以使用`自定义工具变量`。它允许你完全自定义该`工具流程`的变量。

![alt text](/imgs/image-4.png)

## 相关示例

- [谷歌搜索](/docs/workflow/examples/google_search/)
Expand Down
54 changes: 54 additions & 0 deletions packages/global/core/workflow/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,60 @@ export enum WorkflowIOValueTypeEnum {
selectDataset = 'selectDataset'
}

export const toolValueTypeList = [
{
label: WorkflowIOValueTypeEnum.string,
value: WorkflowIOValueTypeEnum.string,
jsonSchema: {
type: 'string'
}
},
{
label: WorkflowIOValueTypeEnum.number,
value: WorkflowIOValueTypeEnum.number,
jsonSchema: {
type: 'number'
}
},
{
label: WorkflowIOValueTypeEnum.boolean,
value: WorkflowIOValueTypeEnum.boolean,
jsonSchema: {
type: 'boolean'
}
},
{
label: 'array<string>',
value: WorkflowIOValueTypeEnum.arrayString,
jsonSchema: {
type: 'array',
items: {
type: 'string'
}
}
},
{
label: 'array<number>',
value: WorkflowIOValueTypeEnum.arrayNumber,
jsonSchema: {
type: 'array',
items: {
type: 'number'
}
}
},
{
label: 'array<boolean>',
value: WorkflowIOValueTypeEnum.arrayBoolean,
jsonSchema: {
type: 'array',
items: {
type: 'boolean'
}
}
}
];

/* reg: modulename key */
export enum NodeInputKeyEnum {
// old
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const ToolParamsNode: FlowNodeTemplateType = {
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: 'core/workflow/template/toolParams',
name: i18nT('workflow:tool_params_config'),
name: i18nT('workflow:tool_custom_field'),
intro: i18nT('workflow:intro_tool_params_config'),
version: '4811',
isTool: true,
Expand Down
2 changes: 1 addition & 1 deletion packages/service/common/mongo/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export const getMongoModel = <T>(name: string, schema: mongoose.Schema) => {

const model = connectionMongo.model<T>(name, schema);

if (process.env.SYNC_INDEX !== '0') {
if (process.env.SYNC_INDEX !== '0' && process.env.NODE_ENV !== 'test') {
try {
model.syncIndexes({ background: true });
} catch (error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import { AIChatItemType } from '@fastgpt/global/core/chat/type';
import { GPTMessages2Chats } from '@fastgpt/global/core/chat/adapt';
import { updateToolInputValue } from './utils';
import { computedMaxToken, llmCompletionsBodyFormat } from '../../../../ai/utils';
import { toolValueTypeList } from '@fastgpt/global/core/workflow/constants';

type FunctionRunResponseType = {
toolRunResponse: DispatchFlowResponse;
Expand Down Expand Up @@ -64,10 +65,12 @@ export const runToolWithFunctionCall = async (
}
> = {};
item.toolParams.forEach((item) => {
const isArray = item.valueType?.startsWith('array');
const jsonSchema = (
toolValueTypeList.find((type) => type.value === item.valueType) || toolValueTypeList[0]
).jsonSchema;

properties[item.key] = {
type: isArray ? 'array' : item.valueType || 'string',
...(isArray && { items: { type: item.valueType?.slice(5).toLowerCase() || 'string' } }),
...jsonSchema,
description: item.toolDescription || '',
enum: item.enum?.split('\n').filter(Boolean) || []
};
Expand Down
Loading

0 comments on commit 7c38d1d

Please sign in to comment.