Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Yjl #56

Merged
merged 7 commits into from
Mar 20, 2024
Merged

Yjl #56

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 20 additions & 24 deletions docSite/content/docs/development/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ weight: 708

**开发环境下**,你需要将示例配置文件 `config.json` 复制成 `config.local.json` 文件才会生效。

这个配置文件中包含了系统参数和各个模型配置,使用时务必去掉注释
这个配置文件中包含了系统参数和各个模型配置,`使用时务必去掉注释!!!!!!!!!!!!!!`

## 4.6.8+ 版本新配置文件

Expand All @@ -28,14 +28,15 @@ llm模型全部合并
{
"model": "gpt-3.5-turbo", // 模型名
"name": "gpt-3.5-turbo", // 别名
"avatar": "/imgs/model/openai.svg", // 模型的logo
"maxContext": 16000, // 最大上下文
"maxResponse": 4000, // 最大回复
"quoteMaxToken": 13000, // 最大引用内容
"maxTemperature": 1.2, // 最大温度
"charsPointsPrice": 0,
"censor": false,
"vision": false, // 是否支持图片输入
"datasetProcess": false, // 是否设置为知识库处理模型(QA),务必保证至少有一个为true,否则知识库会报错
"datasetProcess": true, // 是否设置为知识库处理模型(QA),务必保证至少有一个为true,否则知识库会报错
"usedInClassify": true, // 是否用于问题分类(务必保证至少有一个为true)
"usedInExtractFields": true, // 是否用于内容提取(务必保证至少有一个为true)
"usedInToolCall": true, // 是否用于工具调用(务必保证至少有一个为true)
Expand All @@ -47,31 +48,10 @@ llm模型全部合并
"defaultSystemChatPrompt": "", // 对话默认携带的系统提示词
"defaultConfig":{} // LLM默认配置,可以针对不同模型设置特殊值(比如 GLM4 的 top_p
},
{
"model": "gpt-3.5-turbo-16k",
"name": "gpt-3.5-turbo-16k",
"maxContext": 16000,
"maxResponse": 16000,
"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":{}
},
{
"model": "gpt-4-0125-preview",
"name": "gpt-4-turbo",
"avatar": "/imgs/model/openai.svg",
"maxContext": 125000,
"maxResponse": 4000,
"quoteMaxToken": 100000,
Expand All @@ -94,6 +74,7 @@ llm模型全部合并
{
"model": "gpt-4-vision-preview",
"name": "gpt-4-vision",
"avatar": "/imgs/model/openai.svg",
"maxContext": 128000,
"maxResponse": 4000,
"quoteMaxToken": 100000,
Expand All @@ -118,6 +99,7 @@ llm模型全部合并
{
"model": "text-embedding-ada-002",
"name": "Embedding-2",
"avatar": "/imgs/model/openai.svg",
"charsPointsPrice": 0,
"defaultToken": 700,
"maxToken": 3000,
Expand Down Expand Up @@ -149,6 +131,20 @@ llm模型全部合并
}
```

## 关于模型 logo

统一放置在项目的`public/imgs/model/xxx`目录中,目前内置了以下几种,如果有需要,可以PR增加。

- /imgs/model/baichuan.svg - 百川
- /imgs/model/chatglm.svg - 智谱
- /imgs/model/calude.svg - calude
- /imgs/model/ernie.svg - 文心一言
- /imgs/model/moonshot.svg - 月之暗面
- /imgs/model/openai.svg - OpenAI GPT
- /imgs/model/qwen.svg - 通义千问
- /imgs/model/yi.svg - 零一万物
-

## 特殊模型

### ReRank 接入
Expand Down
34 changes: 13 additions & 21 deletions docSite/content/docs/development/faq.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
weight: 749
title: "常见开发 & 部署问题"
description: "FastGPT 常见开发 & 部署问题"
title: "私有部署常见问题"
description: "FastGPT 私有部署常见问题"
icon: upgrade
draft: false
images: []
---

## 错误排查方式
## 一、错误排查方式

遇到问题先按下面方式排查。

Expand All @@ -17,7 +17,7 @@ images: []
4. 无法解决时,可以找找[Issue](https://github.com/labring/FastGPT/issues),或新提 Issue,私有部署错误,务必提供详细的日志,否则很难排查。


## 通用问题
## 二、通用问题

### 能否纯本地运行

Expand Down Expand Up @@ -46,15 +46,19 @@ OneAPI 的 API Key 配置错误,需要修改`OPENAI_API_KEY`环境变量,并
### 页面崩溃

1. 关闭翻译
2. 检查配置文件是否正常加载,如果没有正常加载会导致缺失系统信息,在某些操作下会导致空指针。(95%情况,可以F12打开控制台,看具体的空指针情况)
2. 检查配置文件是否正常加载,如果没有正常加载会导致缺失系统信息,在某些操作下会导致空指针。(95%情况是配置文件不对,可以F12打开控制台,看具体的空指针情况)
3. 某些api不兼容问题(较少)

### 开启内容补全后,响应速度变慢

1. 问题补全需要经过一轮AI生成。
2. 会进行3~5轮的查询,如果数据库性能不足,会有明显影响。

## 私有部署问题
### 模型响应为空

1. 检查 key 问题。
2. 如果是国内模型,可能是命中风控了。
3. 查看模型请求日志,检查出入参数是否异常。

### 知识库索引没有进度

Expand All @@ -64,11 +68,7 @@ OneAPI 的 API Key 配置错误,需要修改`OPENAI_API_KEY`环境变量,并
2. 不能对话,也不能索引:API调用失败。可能是没连上OneAPI或OpenAI
3. 有进度,但是非常慢:api key不行,OpenAI的免费号,一分钟只有3次还是60次。一天上限200次。

## Docker 部署常见问题

### 首次部署,root用户提示未注册

没有启动 Mongo 副本集模式。
## 三、Docker 部署常见问题

### 如何更新?

Expand Down Expand Up @@ -133,14 +133,6 @@ mongo连接失败,检查
2. 环境变量(账号密码,注意host和port)
3. 副本集启动失败,一直在重启:没挂载mongo key;key没有权限;

## 本地开发问题

### TypeError: Cannot read properties of null (reading 'useMemo' )

删除所有的`node_modules`,用 Node18 重新 install 试试,可能最新的 Node 有问题。 本地开发流程:
### 首次部署,root用户提示未注册

1. 根目录: `pnpm i`
2. 复制 `config.json` -> `config.local.json`
3. 复制 `.env.template` -> `.env.local`
4. `cd projects/app`
5. `pnpm dev`
没有启动 Mongo 副本集模式。
19 changes: 17 additions & 2 deletions docSite/content/docs/development/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ git clone [email protected]:<github_username>/FastGPT.git

第一次开发,需要先部署数据库,建议本地开发可以随便找一台 2C2G 的轻量小数据库实践。数据库部署教程:[Docker 快速部署](/docs/development/docker/)。部署完了,可以本地访问其数据库。

Mongo 数据库需要修改副本集的`host`,从原来的`mongo:27017`修改为`ip:27017`。
Mongo 数据库需要修改副本集的`host`,从原来的`mongo:27017`修改为`ip:27017`(ip为对应的公网IP)

### 4. 初始配置

Expand Down Expand Up @@ -113,7 +113,22 @@ docker build -t dockername/fastgpt:tag --build-arg name=app --build-arg proxy=ta

FastGPT 在`pnpm i`后会执行`postinstall`脚本,用于自动生成`ChakraUI`的`Type`。如果没有权限,可以先执行`chmod -R +x ./scripts/`,再执行`pnpm i`。

### 加入社区
### 长时间运行后崩溃

似乎是由于 tiktoken 库的开发环境问题,生产环境中未遇到,暂时可忽略。

### TypeError: Cannot read properties of null (reading 'useMemo' )

删除所有的`node_modules`,用 Node18 重新 install 试试,可能最新的 Node 有问题。 本地开发流程:

1. 根目录: `pnpm i`
2. 复制 `config.json` -> `config.local.json`
3. 复制 `.env.template` -> `.env.local`
4. `cd projects/app`
5. `pnpm dev`


## 加入社区

遇到困难了吗?有任何问题吗? 加入微信群与开发者和用户保持沟通。

Expand Down
10 changes: 9 additions & 1 deletion docSite/content/docs/development/one-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ CHAT_API_KEY=sk-xxxxxx
{
"model": "ERNIE-Bot", // 这里的模型需要对应 One API 的模型
"name": "文心一言", // 对外展示的名称
"avatar": "/imgs/model/openai.svg", // 模型的logo
"maxContext": 16000, // 最大上下文
"maxResponse": 4000, // 最大回复
"quoteMaxToken": 13000, // 最大引用内容
Expand All @@ -135,4 +136,11 @@ CHAT_API_KEY=sk-xxxxxx
],
```

添加完后,重启 FastGPT 即可在选择文心一言模型进行对话。**添加向量模型也是类似操作,增加到 `vectorModels`里。**
### 3. 重启 FastGPT

```bash
docker-compose down
docker-compose up -d
```

重启 FastGPT 即可在选择文心一言模型进行对话。**添加向量模型也是类似操作,增加到 `vectorModels`里。**
11 changes: 9 additions & 2 deletions docSite/content/docs/development/upgrading/47.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,18 @@ weight: 826

## 修改配置文件

增加一些 Boolean 值,用于决定不同功能块可以使用哪些模型:[点击查看最新的配置文件](/docs/development/configuration/)
增加一些 Boolean 值,用于决定不同功能块可以使用哪些模型,同时增加了模型的 logo:[点击查看最新的配置文件](/docs/development/configuration/)


## V4.7 更新说明

1. 新增 - 工具调用模块,可以让LLM模型根据用户意图,动态的选择其他模型或插件执行。
2. 新增 - 分类和内容提取支持 functionCall 模式。部分模型支持 functionCall 不支持 ToolCall,也可以使用了。需要把 LLM 模型配置文件里的 `functionCall` 设置为 `true`, `toolChoice`设置为 `false`。如果 `toolChoice` 为 true,会走 tool 模式。
3. 优化 - 高级编排性能
3. 新增 - HTTP插件,可实现OpenAPI快速生成插件。
4. 优化 - 高级编排性能。
5. 优化 - 抽离 Flow controller 到 packages。
6. 优化 - AI模型选择。
7. 修复 - 开源版重排选不上。
8. 修复 - http 请求 body,不使用时,传入undefined。(会造成部分GET请求失败)
9. 新增 - 支持 http url 使用变量。
10. 修复 - 469 的提取的提示词容易造成幻觉。
4 changes: 2 additions & 2 deletions docSite/content/docs/use-cases/feishu.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: " 接入飞书 "
description: "FastGPT 接入飞书机器人 "
title: " 接入飞书(社区文章)"
description: "FastGPT 接入飞书机器人"
icon: "chat"
draft: false
toc: true
Expand Down
2 changes: 1 addition & 1 deletion docSite/content/docs/use-cases/wechat.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: " 接入微信和企业微信 "
title: "接入微信和企业微信 "
description: "FastGPT 接入微信和企业微信 "
icon: "chat"
draft: false
Expand Down
3 changes: 2 additions & 1 deletion packages/global/core/chat/adapt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ export const chats2GPTMessages = ({
});
}
} else {
//AI
item.value.forEach((value) => {
if (value.type === ChatItemValueTypeEnum.tool && value.tools && reserveTool) {
const tool_calls: ChatCompletionMessageToolCall[] = [];
Expand Down Expand Up @@ -110,7 +111,7 @@ export const chats2GPTMessages = ({
tool_calls
})
.concat(toolResponse);
} else if (value.text) {
} else if (value.text?.content) {
results.push({
dataId,
role: ChatCompletionRequestMessageRoleEnum.Assistant,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ export const ContextExtractModule: FlowNodeTemplateType = {
label: '提取要求描述',
description:
'给AI一些对应的背景知识或要求描述,引导AI更好的完成任务。\n该输入框可使用全局变量。',
required: true,
placeholder:
'例如: \n1. 当前时间为: {{cTime}}。你是一个实验室预约助手,你的任务是帮助用户预约实验室,从文本中获取对应的预约信息。\n2. 你是谷歌搜索助手,需要从文本中提取出合适的搜索词。',
showTargetInApp: true,
Expand Down
2 changes: 1 addition & 1 deletion packages/service/core/dataset/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ const DatasetSchema = new Schema({
agentModel: {
type: String,
required: true,
default: 'gpt-3.5-turbo-16k'
default: 'gpt-3.5-turbo'
},
intro: {
type: String,
Expand Down
6 changes: 3 additions & 3 deletions packages/service/core/workflow/dispatch/agent/extract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,8 @@ const getFunctionCallSchema = ({
text: {
content: `我正在执行一个函数,需要你提供一些参数,请以 JSON 字符串格式返回这些参数,要求:
"""
- ${description}
- 不是每个参数都是必须生成的,如果没有合适的参数值,不要生成该参数。
${description ? `- ${description}` : ''}
- 不是每个参数都是必须生成的,如果没有合适的参数值,不要生成该参数,或返回空字符串
- 需要结合前面的对话内容,一起生成合适的参数。
"""

Expand Down Expand Up @@ -222,7 +222,7 @@ const toolChoice = async (props: ActionProps) => {
userKey: user.openaiAccount,
timeout: 480000
});

console.log(JSON.stringify({ messages: filterMessages, tools }, null, 2));
const response = await ai.chat.completions.create({
model: extractModel.model,
temperature: 0,
Expand Down
30 changes: 18 additions & 12 deletions packages/service/core/workflow/dispatch/agent/runTool/constants.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,36 @@
export const Prompt_Tool_Call = `你是一个智能机器人,除了可以回答用户问题外,你还掌握工具的使用能力。有时候,你可以依赖工具的运行结果,来更准确的回答用户。
export const Prompt_Tool_Call = `<Instruction>
你是一个智能机器人,除了可以回答用户问题外,你还掌握工具的使用能力。有时候,你可以依赖工具的运行结果,来更准确的回答用户。
下面是你可以使用的工具,使用 JSON Schema 的格式声明,其中 toolId 是工具的 description 是工具的描述,parameters 是工具的参数,包括参数的类型和描述,required 是必填参数的列表。

"""
{{toolsPrompt}}
"""

接下来,请你根据工具描述,决定回答问题或是使用工具。在完成任务过程中,USER代表用户的输入,TOOL_RESPONSE代表工具运行结果。你的任务是输出下面2种结果:
1. TOOL_CALL: 使用工具。
2. ANSWER: 回答问题。
接下来,请你根据工具描述,决定回答问题或是使用工具。在完成任务过程中,USER代表用户的输入,TOOL_RESPONSE代表工具运行结果。ASSISTANT 代表你的输出。
你的每次输出都必须以0,1开头,代表是否需要调用工具:
0: 不使用工具,直接回答内容。
1: 使用工具,返回工具调用的参数。

例如:

"""
USER: 你好呀
ANSWER: 你好,有什么可以帮助你的么?
ANSWER: 0: 你好,有什么可以帮助你的么?
USER: 今天杭州的天气如何
TOOL_CALL: {"toolId":"w2121",arguments:{"city": "杭州"}}
TOOL_RESPONSE: 晴天......
ANSWER: 今天杭州是晴天。
ANSWER: 1: {"toolId":"w2121",arguments:{"city": "杭州"}}
TOOL_RESPONSE: """
晴天......
"""
ANSWER: 0: 今天杭州是晴天。
USER: 今天杭州的天气适合去哪里玩?
TOOL_CALL: {"toolId":"as21da",arguments:{"query": "杭州 天气 去哪里玩"}}
TOOL_RESPONSE: 晴天. 西湖、灵隐寺、千岛湖……
ANSWER: 今天杭州是晴天,适合去西湖、灵隐寺、千岛湖等地玩。
ANSWER: 1: {"toolId":"as21da",arguments:{"query": "杭州 天气 去哪里玩"}}
TOOL_RESPONSE: """
晴天. 西湖、灵隐寺、千岛湖……
"""
ANSWER: 0: 今天杭州是晴天,适合去西湖、灵隐寺、千岛湖等地玩。
</Instruction>

现在,我们开始吧!

USER: {{question}}
ANSWER:
`;
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ export const dispatchRunTools = async (props: DispatchToolModuleProps): Promise<
assistantResponses = [] // FastGPT system store assistant.value response
} = await (async () => {
const adaptMessages = chats2GPTMessages({ messages, reserveId: false });

if (toolModel.toolChoice) {
return runToolWithToolChoice({
...props,
Expand Down
Loading
Loading