Commit b05dd0fd by Archer Committed by GitHub

oenapi doc (#493)

* mongo init

* perf: mongo connect

* docs

* fix: select file

* format

* remove seed

* doc format

* doc

* perf: tts model type

* doc

* upload time

* doc

* doc

* doc
parent 0df51522
......@@ -10,7 +10,7 @@
<a href="./README_ja.md">日本語</a>
</p>
FastGPT は、LLM 上に構築された知識ベースの Q&A システムで、すぐに使えるデータ処理とモデル呼び出し機能を提供し、Flow の可視化を通じてワークフローのオーケストレーションを可能にします!
FastGPT は、LLM 上 に 構築 された 知識 ベースの Q&A システムで、すぐに 使 えるデータ 処理 とモデル 呼 び 出 し 機能 を 提供 し、Flow の 可視化 を 通 じてワークフローのオーケストレーションを 可能 にします!
</div>
......@@ -34,7 +34,7 @@ FastGPT は、LLM 上に構築された知識ベースの Q&A システムで、
https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409bd33f6d4
## 🛸 クラウドサービスの利用
## 🛸 クラウドサービスの 利用
[fastgpt.run](https://fastgpt.run/)
| | |
......@@ -44,64 +44,64 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b
## 💡 機能
1. パワフルなビジュアルワークフロー: AI アプリケーションを簡単に作成
- [x] デッキのシンプルモード - マニュアルアレンジ不要
- [x] ユーザ対話事前ガイダンス
- [x] グローバル変数
- [x] ナレッジベース検索
- [x] 複数の LLM モデルによる対話
- [x] テキストマジック - 構造化データへの変換
- [x] HTTP による拡張
- [ ] on-the-fly HTTP モジュールのための埋め込みLaf
- [x]の対話ステップへの指示
- [x] ソースファイル参照の追跡
1. パワフルなビジュアルワークフロー:AI アプリケーションを 簡単 に 作成
- [x] デッキのシンプルモード - マニュアルアレンジ 不要
- [x] ユーザ 対話事前 ガイダンス
- [x] グローバル 変数
- [x] ナレッジベース 検索
- [x] 複数 の LLM モデルによる 対話
- [x] テキストマジック - 構造化 データへの 変換
- [x] HTTP による 拡張
- [ ] on-the-fly HTTP モジュールのための 埋 め 込 みLaf
- [x] の 対話 ステップへの 指示
- [x] ソースファイル 参照 の 追跡
- [ ] カスタムファイルリーダー
- [ ] モジュールをプラグインにパッケージして再利用する
- [ ] モジュールをプラグインにパッケージして 再利用 する
2. 広範なナレッジベースの前処理
2. 広範 なナレッジベースの 前処理
- [x] 複数のナレッジベースの再利用と混合
- [x] チャンクの変更と削除を追跡
- [x] 手動入力、直接分割、QA 分割インポートをサポート
- [x] 複数 のナレッジベースの 再利用 と 混合
- [x] チャンクの 変更 と 削除 を 追跡
- [x] 手動入力、直接分割、QA 分割 インポートをサポート
- [x] URL フェッチとバッチ CSV インポートをサポート
- [x] ナレッジベースにユニークなベクトルモデルを設定可能
- [x] オリジナルファイルの保存
- [ ] ファイル学習エージェント
- [x] ナレッジベースにユニークなベクトルモデルを 設定可能
- [x] オリジナルファイルの 保存
- [ ] ファイル 学習 エージェント
3. 複数の効果測定チャンネル
3. 複数 の 効果測定 チャンネル
- [x] シングルポイントナレッジベース検索テスト
- [x] 対話中のフィードバック参照と修正・削除機能
- [x] 完全なコンテキストの提示
- [ ] 完全なモジュール中間値提示
- [x] シングルポイントナレッジベース 検索 テスト
- [x] 対話中 のフィードバック 参照 と 修正 ・ 削除機能
- [x] 完全 なコンテキストの 提示
- [ ] 完全 なモジュール 中間値提示
4. OpenAPI
- [x] 補完インターフェイス(GPT インターフェイスに合わせる)
- [x] 補完 インターフェイス (GPT インターフェイスに 合 わせる)
- [ ] ナレッジベース CRUD
5. オペレーション機能
5. オペレーション 機能
- [x] ログイン不要の共有ウィンドウ
- [x] Iframe によるワンクリック埋め込
- [ ] 対話記録への統一されたアクセス
- [x] ログイン 不要 の 共有 ウィンドウ
- [x] Iframe によるワンクリック 埋 め 込
- [ ] 対話記録 への 統一 されたアクセス
## 👨‍💻 開発
プロジェクトの技術スタック: NextJs + TS + ChakraUI + Mongo + Postgres (Vector プラグイン)
プロジェクトの 技術 スタック:NextJs + TS + ChakraUI + Mongo + Postgres (Vector プラグイン)
- **⚡ デプロイ**
[![](https://cdn.jsdelivr.us/gh/labring-actions/templates@main/Deploy-on-Sealos.svg)](https://cloud.sealos.io/?openapp=system-fastdeploy%3FtemplateName%3Dfastgpt)
デプロイ後、データベースをセットアップするので、2~4分待ってください。基本設定を使っているので、最初は少し遅いかもしれません。
デプロイ 後、データベースをセットアップするので、2~4分待 ってください。基本設定 を 使 っているので、最初 は 少 し 遅 いかもしれません。
- [ローカル開発入門](https://doc.fastgpt.run/docs/development)
- [ローカル 開発入門](https://doc.fastgpt.run/docs/development)
- [FastGPT のデプロイ](https://doc.fastgpt.run/docs/installation)
- [システム設定ガイド](https://doc.fastgpt.run/docs/installation/reference)
- [複数モデルの設定](https://doc.fastgpt.run/docs/installation/reference/models)
- [バージョン更新とアップグレード](https://doc.fastgpt.run/docs/installation/upgrading)
- [システム 設定 ガイド](https://doc.fastgpt.run/docs/installation/reference)
- [複数 モデルの 設定](https://doc.fastgpt.run/docs/installation/reference/models)
- [バージョン 更新 とアップグレード](https://doc.fastgpt.run/docs/installation/upgrading)
<!-- ## :point_right: ロードマップ
- [FastGPT ロードマップ](https://kjqvjse66l.feishu.cn/docx/RVUxdqE2WolDYyxEKATcM0XXnte) -->
......@@ -112,23 +112,23 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b
| ------------------------------------------------- | ---------------------------------------------- |
| ![](https://otnvvf-imgs.oss.laf.run/wxqun300.jpg) | ![](https://otnvvf-imgs.oss.laf.run/wx300.jpg) | -->
## 👀 その他
## 👀 その
- [FastGPT FAQ](https://kjqvjse66l.feishu.cn/docx/HtrgdT0pkonP4kxGx8qcu6XDnGh)
- [Docker 導入チュートリアル動画](https://www.bilibili.com/video/BV1jo4y147fT/)
- [公式アカウント統合ビデオチュートリアル](https://www.bilibili.com/video/BV1xh4y1t7fy/)
- [Docker 導入 チュートリアル 動画](https://www.bilibili.com/video/BV1jo4y147fT/)
- [公式 アカウント 統合 ビデオチュートリアル](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、Wenxin Yiyuan などをサポートします。](https://github.com/songquanpeng/one-api)
- [TuShan: 5 分でバックエンド管理システムを構築](https://github.com/msgbyte/tushan)
- [Laf:サードパーティ 製 アプリケーションに 3 分 でクイックアクセス](https://github.com/labring/laf)
- [Sealos:クラスタアプリケーションの 迅速 な 展開](https://github.com/labring/sealos)
- [One API:マルチモデル 管理、Azure、Wenxin Yiyuan などをサポートします。](https://github.com/songquanpeng/one-api)
- [TuShan:5 分 でバックエンド 管理 システムを 構築](https://github.com/msgbyte/tushan)
## 🤝 サードパーティエコシステム
- [luolinAI: すぐに使える企業向け WeChat ボット](https://github.com/luolin-ai/FastGPT-Enterprise-WeChatbot)
- [luolinAI:すぐに 使 える 企業向 け WeChat ボット](https://github.com/luolin-ai/FastGPT-Enterprise-WeChatbot)
## 🌟 Star History
......
{
"preset": "default",
"rules": {
"adjustedFullWidthPunctuation": ""
}
}
\ No newline at end of file
"preset": "default",
"rules": {
"adjustedFullWidthPunctuation": ""
}
}
\ No newline at end of file
......@@ -54,11 +54,11 @@ git clone git@github.com:<github_username>/FastGPT.git
**环境变量**
复制.env.template 文件,在同级目录下生成一个.env.local 文件,修改.env.local 里内容才是有效的变量。变量说明见 .env.template
复制`.env.template`文件,在同级目录下生成一个`.env.local` 文件,修改`.env.local` 里内容才是有效的变量。变量说明见 .env.template
**config 配置文件**
复制 data/config.json 文件,生成一个 data/config.local.json 配置文件,具体配置参数说明,可参考 [config 配置说明](/docs/development/configuration)
复制 `data/config.json` 文件,生成一个 `data/config.local.json` 配置文件,具体配置参数说明,可参考 [config 配置说明](/docs/development/configuration)
**注意:json 配置文件不能包含注释,介绍中为了方便看才加入的注释**
......
---
weight: 560
title: "OpenAPI 接口文档"
description: "FastGPT OpenAPI 文档"
icon: api
draft: false
images: []
---
\ No newline at end of file
---
title: 'Api Key 使用与鉴权'
description: 'FastGPT Api Key 使用与鉴权'
icon: 'key'
draft: false
toc: true
weight: 561
---
## 使用说明
FasGPT OpenAPI 接口允许你使用 Api Key 进行鉴权,从而操作 FastGPT 上的相关服务和资源,例如:调用应用对话接口、上传知识库数据、搜索测试等等。出于兼容性和安全考虑,并不是所有的接口都允许通过 Api Key 访问。
## 如何查看 BaseURL
**注意:BaseURL 不是接口地址,而是所有接口的根地址,直接请求 BaseURL 是没有用的。**
![](/imgs/fastgpt-api-baseurl.png)
## 如何获取 Api Key
FastGPT 的 API Key **有 2 类**,一类是全局通用的 key (无法直接调用应用对话);一类是携带了 AppId 也就是有应用标记的 key (可直接调用应用对话)。
我们建议,仅操作应用或者对话的相关接口使用 `应用特定key`,其他接口使用 `通用key`
| 通用key | 应用特定 key |
| --------------------- | --------------------- |
| ![](/imgs/fastgpt-api2.png) | ![](/imgs/fastgpt-api.png) |
## 基本配置
OpenAPI 中,所有的接口都通过 Header.Authorization 进行鉴权。
```
baseUrl: "https://fastgpt.run/api"
headers: {
Authorization: "Bearer {{apikey}}"
}
```
**发起应用对话示例**
```sh
curl --location --request POST 'https://fastgpt.run/api/v1/chat/completions' \
--header 'Authorization: Bearer fastgpt-xxxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"chatId": "111",
"stream": false,
"detail": false,
"messages": [
{
"content": "导演是谁",
"role": "user"
}
]
}'
```
\ No newline at end of file
---
title: '知识库接口'
description: 'FastGPT OpenAPI 知识库接口'
icon: 'dataset'
draft: false
toc: true
weight: 563
---
| 如何获取知识库ID(datasetId) | 如何获取文件集合ID(collection_id) |
| --------------------- | --------------------- |
| ![](/imgs/getDatasetId.png) | ![](/imgs/getfile_id.png) |
## 创建训练订单
**请求示例**
```bash
curl --location --request POST 'https://fastgpt.run/api/support/wallet/bill/createTrainingBill' \
--header 'Authorization: Bearer {{apikey}}' \
--header 'Content-Type: application/json' \
--data-raw ''
```
**响应结果**
data 为 billId,可用于添加知识库数据时进行账单聚合。
```json
{
"code": 200,
"statusText": "",
"message": "",
"data": "65112ab717c32018f4156361"
}
```
## 知识库添加数据
{{< tabs tabTotal="4" >}}
{{< tab tabName="请求示例" >}}
{{< markdownify >}}
```bash
curl --location --request POST 'https://fastgpt.run/api/core/dataset/data/pushData' \
--header 'Authorization: Bearer apikey' \
--header 'Content-Type: application/json' \
--data-raw '{
    "collectionId": "64663f451ba1676dbdef0499",
"mode": "chunk",
"prompt": "可选。qa 拆分引导词,chunk 模式下忽略",
"billId": "可选。如果有这个值,本次的数据会被聚合到一个订单中,这个值可以重复使用。可以参考 [创建训练订单] 获取该值。",
    "data": [
{
"q": "你是谁?",
"a": "我是FastGPT助手"
},
{
"q": "你会什么?",
"a": "我什么都会",
"indexes": [{
"type":"custom",
"text":"你好"
}]
}
]
}'
```
{{< /markdownify >}}
{{< /tab >}}
{{< tab tabName="参数说明" >}}
{{< markdownify >}}
需要先了解 FastGPT 的多路索引概念:
在 FastGPT 中,你可以为一组数据创建多个索引,如果不指定索引,则系统会自动取对应的 chunk 作为索引。例如前面的请求示例中:
`q:你是谁?a:我是FastGPT助手` 它的`indexes`属性为空,意味着不自定义索引,而是使用默认的索引(你是谁?\n我是FastGPT助手)。
在第二组数据中`q:你会什么?a:我什么都会`指定了一个`你好`的索引,因此这组数据的索引为`你好`
```json
{
"collectionId": "文件集合的ID,参考上面的第二张图",
"mode": "chunk | qa ", // chunk 模式: 可自定义索引。qa 模型:无法自定义索引,会自动取 data 中的 q 作为数据,让模型自动生成问答对和索引。
"prompt": "QA 拆分提示词,需严格按照模板,建议不要传入。",
"data": [
{
"q": "生成索引的内容,index 模式下最大 tokens 为3000,建议不超过 1000",
"a": "预期回答/补充",
"indexes": "自定义索引",
},
{
"q": "xxx",
"a": "xxxx"
}
],
}
```
{{< /markdownify >}}
{{< /tab >}}
{{< tab tabName="响应例子" >}}
{{< markdownify >}}
```json
{
"code": 200,
"statusText": "",
"data": {
"insertLen": 1, // 最终插入成功的数量
"overToken": [], // 超出 token
"repeat": [], // 重复的数量
"error": [] // 其他错误
}
}
```
{{< /markdownify >}}
{{< /tab >}}
{{< tab tabName="QA Prompt 模板" >}}
{{< markdownify >}}
{{theme}} 里的内容可以换成数据的主题。默认为:它们可能包含多个主题内容
```
我会给你一段文本,{{theme}},学习它们,并整理学习成果,要求为:
1. 提出最多 25 个问题。
2. 给出每个问题的答案。
3. 答案要详细完整,答案可以包含普通文字、链接、代码、表格、公示、媒体链接等 markdown 元素。
4. 按格式返回多个问题和答案:
Q1: 问题。
A1: 答案。
Q2:
A2:
……
我的文本:"""{{text}}"""
```
{{< /markdownify >}}
{{< /tab >}}
{{< /tabs >}}
## 搜索测试
{{< tabs tabTotal="2" >}}
{{< tab tabName="请求示例" >}}
{{< markdownify >}}
```bash
curl --location --request POST 'https://fastgpt.run/api/core/dataset/searchTest' \
--header 'Authorization: Bearer fastgpt-xxxxx' \
--header 'Content-Type: application/json' \
--data-raw '{
"datasetId": "知识库的ID",
"text": "导演是谁",
"rarank": true,
"limit": 20
}'
```
{{< /markdownify >}}
{{< /tab >}}
{{< tab tabName="响应示例" >}}
{{< markdownify >}}
返回 top limit 结果
```bash
{
"code": 200,
"statusText": "",
"data": [
{
"id": "65599c54a5c814fb803363cb",
"q": "你是谁",
"a": "我是FastGPT助手",
"indexes": [
{
"defaultIndex": true,
"type": "qa",
"dataId": "3645952",
"text": "你是谁\n我是FastGPT助手",
"_id": "65599c5588271af95b019862"
}
],
"datasetId": "6554684f7f9ed18a39a4d15c",
"collectionId": "6556cd795e4b663e770bb66d",
"sourceName": "GBT 15104-2021 装饰单板贴面人造板.pdf",
"sourceId": "6556cd775e4b663e770bb65c",
"score": 0.8050316572189331
},
......
]
}
```
{{< /markdownify >}}
{{< /tab >}}
{{< /tabs >}}
---
title: '分享链接鉴权'
description: 'FastGPT 分享链接鉴权'
icon: 'share'
draft: false
toc: true
weight: 564
---
## 使用说明
分享链接鉴权设计的目的在于,将 FastGPT 的对话框安全的接入你现有的系统中。
免登录链接配置中,增加了`凭证校验服务器`后,使用分享链接时会向服务器发起请求,校验链接是否可用,并在每次对话结束后,向服务器发送对话结果。下面以`host`来表示`凭证校验服务器`。服务器接口仅需返回是否校验成功即可,不需要返回其他数据,格式如下:
```json
{
"success": true,
"message": "错误提示",
"msg": "同message, 错误提示"
}
```
![](/imgs/sharelinkProcess.png)
## 配置校验地址和校验token
### 1. 配置校验地址的`BaseURL`、
![](/imgs/share-setlink.jpg)
配置校验地址后,在每次分享链接使用时,都会向对应的地址发起校验和上报请求。
### 2. 分享链接中增加额外 query
在分享链接的地址中,增加一个额外的参数: authToken。例如:
原始的链接:https://fastgpt.run/chat/share?shareId=648aaf5ae121349a16d62192
完整链接: https://fastgpt.run/chat/share?shareId=648aaf5ae121349a16d62192&authToken=userid12345
这个`token`通常是你系统生成的,在发出校验请求时,FastGPT 会在`body`中携带 token={{authToken}} 的参数。
## 聊天初始化校验
**FastGPT 发出的请求**
```bash
curl --location --request POST '{{host}}/shareAuth/init' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "sintdolore"
}'
```
**响应示例**
```json
{
"success": false,
"message": "分享链接无效",
}
```
## 对话前校验
**FastGPT 发出的请求**
```bash
curl --location --request POST '{{host}}/shareAuth/start' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "sintdolore",
"question": "用户问题",
}'
```
**响应示例**
```json
{
"success": true
}
```
## 对话结果上报
```bash
curl --location --request POST '{{host}}/shareAuth/finish' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "sint dolore",
"responseData": [
{
"moduleName": "KB Search",
"price": 1.2000000000000002,
"model": "Embedding-2",
"tokens": 6,
"similarity": 0.61,
"limit": 3
},
{
"moduleName": "AI Chat",
"price": 454.5,
"model": "FastAI-4k",
"tokens": 303,
"question": "导演是谁",
"answer": "电影《铃芽之旅》的导演是新海诚。",
"maxToken": 2050,
"quoteList": [
{
"dataset_id": "646627f4f7b896cfd8910e38",
"id": "8099",
"q": "本作的主人公是谁?",
"a": "本作的主人公是名叫铃芽的少女。",
"source": "手动修改"
},
{
"dataset_id": "646627f4f7b896cfd8910e38",
"id": "8686",
"q": "电影《铃芽之旅》男主角是谁?",
"a": "电影《铃芽之旅》男主角是宗像草太,由松村北斗配音。",
"source": ""
},
{
"dataset_id": "646627f4f7b896cfd8910e38",
"id": "19339",
"q": "电影《铃芽之旅》的导演是谁?22",
"a": "电影《铃芽之旅》的导演是新海诚。",
"source": "手动修改"
}
],
"completeMessages": [
{
"obj": "System",
"value": "下面是知识库内容:\n1. [本作的主人公是谁?\n本作的主人公是名叫铃芽的少女。]\n2. [电影《铃芽之旅》男主角是谁?\n电影《铃芽之旅》男主角是宗像草太,由松村北斗配音。]\n3. [电影《铃芽之旅》的导演是谁?22\n电影《铃芽之旅》的导演是新海诚。]\n"
},
{
"obj": "System",
"value": "1.请记住,你的身份是百度的下一代知识增强语言模型,能够完全根据知识库提供的内容回答问题。\n\n2. 你忘记了关于电影《铃芽之旅》以外的内容。"
},
{
"obj": "System",
"value": "你仅回答关于电影《玲芽之旅》的问题,其余问题直接回复: 我不清楚。"
},
{
"obj": "Human",
"value": "导演是谁"
},
{
"obj": "AI",
"value": "电影《铃芽之旅》的导演是新海诚。"
}
]
}
]
}'
```
响应值与 chat 接口相同,增加了一个 token。可以重点关注`responseData`里的值,price 与实际价格的倍率为`100000`
**此接口无需响应值**
## 使用示例
我们以[Laf作为服务器为例](https://laf.dev/),展示这 3 个接口的使用方式。
### 1. 创建3个Laf接口
![](/imgs/share-auth1.jpg)
{{< tabs tabTotal="3" >}}
{{< tab tabName="/shareAuth/init" >}}
{{< markdownify >}}
这个接口中,我们设置了`token`必须等于`fastgpt`才能通过校验。(实际生产中不建议固定写死)
```ts
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
const { token } = ctx.body
if (token === 'fastgpt') {
return { success: true }
}
return { success: false,message: "身份错误" }
}
```
{{< /markdownify >}}
{{< /tab >}}
{{< tab tabName="/shareAuth/start" >}}
{{< markdownify >}}
这个接口中,我们设置了`token`必须等于`fastgpt`才能通过校验。并且如果问题中包含了`你`字,则会报错,用于模拟敏感校验。
```ts
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
const { token, question } = ctx.body
console.log(token, question, 'start')
if (token !== 'fastgpt') {
return { success: false, message: "身份错误" }
}
if(question.includes("你")){
return { success: false, message: "内容不合规" }
}
return { success: true }
}
```
{{< /markdownify >}}
{{< /tab >}}
{{< tab tabName="/shareAuth/finish" >}}
{{< markdownify >}}
结果上报接口可自行进行逻辑处理。
```ts
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
const { token, responseData } = ctx.body
console.log(token,responseData,'=====')
return { }
}
```
{{< /markdownify >}}
{{< /tab >}}
{{< /tabs >}}
### 2. 配置校验地址
我们随便复制3个地址中一个接口:https://d8dns0.laf.dev/shareAuth/finish , 去除 /shareAuth/finish 后填入 FastGPT 中: https://d8dns0.laf.dev
![](/imgs/share-auth2.jpg)
### 3. 修改分享链接参数
源分享链接:[https://fastgpt.run/chat/share?shareId=64be36376a438af0311e599c](https://fastgpt.run/chat/share?shareId=64be36376a438af0311e599c)
修改后:[https://fastgpt.run/chat/share?shareId=64be36376a438af0311e599c&authToken=fastgpt](https://fastgpt.run/chat/share?shareId=64be36376a438af0311e599c&authToken=fastgpt)
### 4. 测试效果
1. 打开源链接或者`authToken`不等于 `fastgpt`的链接会提示身份错误。
2. 发送内容中包含你字,会提示内容不合规。
\ No newline at end of file
......@@ -46,7 +46,6 @@ SqlLite 版本不支持多实例,适合个人小流量使用,但是价格非
```
SESSION_SECRET=SESSION_SECRET
CHANNEL_TEST_FREQUENCY=30
POLLING_INTERVAL=60
BATCH_UPDATE_ENABLED=true
BATCH_UPDATE_INTERVAL=60
......@@ -72,7 +71,7 @@ BATCH_UPDATE_INTERVAL=60
### 3. 修改 FastGPT 的环境变量
有了 One API 令牌后,FastGPT 可以通过修改 baseurl 和 key 去请求到 One API,再由 One API 去请求不同的模型。修改下面两个环境变量:
有了 One API 令牌后,FastGPT 可以通过修改 `baseurl``key` 去请求到 One API,再由 One API 去请求不同的模型。修改下面两个环境变量:
```bash
# 下面的地址是 Sealos 提供的,务必写上 v1, 两个项目都在 sealos 部署时候,https://xxxx.cloud.sealos.io 可以改用内网地址
......@@ -104,6 +103,7 @@ CHAT_API_KEY=sk-xxxxxx
// 例如:文心一言的中英文 token 基本是 1:1,而 GPT 的中文 Token 2:1,如果文心一言官方最大 Token 4000,那么这里就可以填 8000,保险点就填 7000.
"quoteMaxToken": 2000, // 引用知识库的最大 Token
"maxTemperature": 1, // 最大温度
"vision": false, // 是否开启图片识别
"defaultSystemChatPrompt": "" // 默认的系统提示词
}
...
......
......@@ -7,7 +7,7 @@ toc: true
weight: 847
---
私有部署,如果添加了配置文件,需要在配置文件中修改 `VectorModels` 字段。增加 defaultToken 和 maxToken,分别对应直接分段时的默认 token 数量和该模型支持的 token 上限(通常不建议超过 3000)
私有部署,如果添加了配置文件,需要在配置文件中修改 `VectorModels` 字段。增加 defaultToken 和 maxToken,分别对应直接分段时的默认 token 数量和该模型支持的 token 上限 (通常不建议超过 3000)
```json
"VectorModels": [
......
......@@ -9,7 +9,7 @@ weight: 846
## 执行初始化 API
发起 1 个 HTTP 请求(记得携带 `headers.rootkey`,这个值是环境变量里的)
发起 1 个 HTTP 请求 (记得携带 `headers.rootkey`,这个值是环境变量里的)
1. https://xxxxx/api/admin/initv43
......
......@@ -9,7 +9,7 @@ weight: 845
## 执行初始化 API
发起 1 个 HTTP 请求(记得携带 `headers.rootkey`,这个值是环境变量里的)
发起 1 个 HTTP 请求 (记得携带 `headers.rootkey`,这个值是环境变量里的)
1. https://xxxxx/api/admin/initv44
......
......@@ -9,7 +9,7 @@ weight: 843
## 执行初始化 API
发起 1 个 HTTP 请求(记得携带 `headers.rootkey`,这个值是环境变量里的)
发起 1 个 HTTP 请求 (记得携带 `headers.rootkey`,这个值是环境变量里的)
1. https://xxxxx/api/admin/initv442
......
......@@ -9,18 +9,18 @@ weight: 836
**V4.6 版本加入了简单的团队功能,可以邀请其他用户进来管理资源。该版本升级后无法执行旧的升级脚本,且无法回退。**
## 1. 更新镜像并变更配置文件
## 1更新镜像并变更配置文件
更新镜像至 latest 或者 v4.6 版本。商业版镜像更新至 V0.2.1
最新配置可参考: [V46版本最新 config.json](/docs/development/configuration),商业镜像配置文件也更新,参考最新的飞书文档。
最新配置可参考[V46 版本最新 config.json](/docs/development/configuration),商业镜像配置文件也更新,参考最新的飞书文档。
## 2. 执行初始化 API
## 2执行初始化 API
发起 2 个 HTTP 请求({{rootkey}} 替换成环境变量里的`rootkey`,{{host}}替换成自己域名)
发起 2 个 HTTP 请求 ({{rootkey}} 替换成环境变量里的 `rootkey`,{{host}} 替换成自己域名)
**该初始化接口可能速度很慢,返回超时不用管,注意看日志即可,需要注意的是,需确保initv46成功后,在执行initv46-2**
**该初始化接口可能速度很慢,返回超时不用管,注意看日志即可,需要注意的是,需确保 initv46 成功后,在执行 initv46-2**
1. https://xxxxx/api/admin/initv46
......@@ -39,22 +39,22 @@ curl --location --request POST 'https://{{host}}/api/admin/initv46-2' \
```
初始化内容:
1. 创建默认团队
2. 初始化 Mongo 所有资源的团队字段
3. 初始化 Pg 的字段
4. 初始化 Mongo Data
1创建默认团队
2初始化 Mongo 所有资源的团队字段
3初始化 Pg 的字段
4初始化 Mongo Data
## V4.6功能介绍
## V4.6 功能介绍
1. 新增 - 团队空间
2. 新增 - 多路向量(多个向量映射一组数据)
3. 新增 - tts语音
2. 新增 - 多路向量 (多个向量映射一组数据)
3. 新增 - tts 语音
4. 新增 - 支持知识库配置文本预处理模型
5. 线上环境新增 - ReRank向量召回,提高召回精度
5. 线上环境新增 - ReRank 向量召回,提高召回精度
6. 优化 - 知识库导出,可直接触发流下载,无需等待转圈圈
## 4.6缺陷修复
## 4.6 缺陷修复
旧的 4.6 版本由于缺少一个字段,导致文件导入时知识库数据无法显示,可执行下面的脚本:
......
......@@ -4,7 +4,6 @@ export type FeConfigsType = {
show_appStore?: boolean;
show_contact?: boolean;
show_git?: boolean;
show_doc?: boolean;
show_pay?: boolean;
show_openai_account?: boolean;
show_promotion?: boolean;
......
......@@ -30,8 +30,6 @@ export type AudioSpeechModelType = {
model: string;
name: string;
price: number;
baseUrl?: string;
key?: string;
voices: { label: string; value: string; bufferId: string }[];
};
......
......@@ -10,8 +10,7 @@ export async function text2Speech({
input,
model = defaultAudioSpeechModels[0].model,
voice,
speed = 1,
props
speed = 1
}: {
res: NextApiResponse;
onSuccess: (e: { model: string; buffer: Buffer }) => void;
......@@ -20,9 +19,8 @@ export async function text2Speech({
model: string;
voice: string;
speed?: number;
props?: UserModelSchema['openaiAccount'];
}) {
const ai = getAIApi(props);
const ai = getAIApi();
const response = await ai.audio.speech.create({
model,
// @ts-ignore
......
......@@ -7,7 +7,10 @@ import {
} from '@fastgpt/global/support/user/team/constant';
import { DatasetCollectionName } from '../schema';
import { DatasetColCollectionName } from '../collection/schema';
import { DatasetDataIndexTypeMap } from '@fastgpt/global/core/dataset/constant';
import {
DatasetDataIndexTypeEnum,
DatasetDataIndexTypeMap
} from '@fastgpt/global/core/dataset/constant';
export const DatasetDataCollectionName = 'dataset.datas';
......@@ -50,7 +53,7 @@ const DatasetDataSchema = new Schema({
type: {
type: String,
enum: Object.keys(DatasetDataIndexTypeMap),
required: true
default: DatasetDataIndexTypeEnum.custom
},
dataId: {
type: String,
......
......@@ -118,8 +118,6 @@
"model": "tts-1",
"name": "OpenAI TTS1",
"price": 0,
"baseUrl": "",
"key": "",
"voices": [
{ "label": "Alloy", "value": "alloy", "bufferId": "openai-Alloy" },
{ "label": "Echo", "value": "echo", "bufferId": "openai-Echo" },
......
......@@ -286,7 +286,7 @@ ${images.map((img) => JSON.stringify({ src: img.src })).join('\n')}
transform={'translateY(1px)'}
onClick={() => {
if (isSpeaking) return;
onOpenSelectFile;
onOpenSelectFile();
}}
>
<MyTooltip label={t('core.chat.Select File')}>
......
......@@ -174,7 +174,7 @@ const Navbar = ({ unread }: { unread: number }) => {
</Link>
</Box>
)}
{feConfigs?.show_doc && (
{feConfigs?.docUrl && (
<MyTooltip label={t('home.Docs')} placement={'right-end'}>
<Box
{...itemStyles}
......
......@@ -27,7 +27,6 @@ const MySelect = (
selectRef: any
) => {
const ref = useRef<HTMLButtonElement>(null);
const SelectRef = useRef<HTMLDivElement>(null);
const menuItemStyles = {
borderRadius: 'sm',
py: 2,
......@@ -40,13 +39,6 @@ const MySelect = (
const { isOpen, onOpen, onClose } = useDisclosure();
const selectItem = useMemo(() => list.find((item) => item.value === value), [list, value]);
useOutsideClick({
ref: SelectRef,
handler: () => {
onClose();
}
});
return (
<Menu
autoSelect={false}
......@@ -56,13 +48,6 @@ const MySelect = (
strategy={'fixed'}
matchWidth
>
{/* <Box
ref={SelectRef}
position={'relative'}
onClick={() => {
isOpen ? onClose() : onOpen();
}}
> */}
<MenuButton
as={Button}
ref={ref}
......
......@@ -66,7 +66,7 @@ const AIChatSettingsModal = ({
title={
<Flex alignItems={'flex-end'}>
{t('app.AI Advanced Settings')}
{feConfigs?.show_doc && (
{feConfigs?.docUrl && (
<Link
href={`${feConfigs.docUrl}/docs/use-cases/ai_settings/`}
target={'_blank'}
......
......@@ -247,7 +247,7 @@ const UserInfo = () => {
)}
</Flex>
</Box>
{feConfigs?.show_doc && (
{feConfigs?.docUrl && (
<>
<Flex
mt={4}
......
......@@ -52,11 +52,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
model: ttsConfig.model,
voice: ttsConfig.voice,
speed: ttsConfig.speed,
props: {
// temp code
baseUrl: ttsModel.baseUrl || '',
key: ttsModel.key || ''
},
onSuccess: async ({ model, buffer }) => {
try {
pushAudioSpeechBill({
......
......@@ -49,9 +49,8 @@ const defaultFeConfigs: FeConfigsType = {
show_emptyChat: true,
show_contact: true,
show_git: true,
show_doc: true,
docUrl: 'https://docs.fastgpt.run',
openAPIDocUrl: 'https://doc.fastgpt.run/docs/development/openapi',
docUrl: 'https://docs.fastgpt.in',
openAPIDocUrl: 'https://doc.fastgpt.in/docs/development/openapi',
systemTitle: 'FastGPT',
authorText: 'Made by FastGPT Team.',
limit: {
......
......@@ -353,7 +353,7 @@ function EditLinkModal({
/>
</Flex>
<Link
href={`${feConfigs.docUrl}/docs/development/openapi/#分享链接中增加额外-query`}
href={`${feConfigs.docUrl}/docs/development/openapi/share`}
target={'_blank'}
fontSize={'sm'}
color={'myGray.500'}
......
......@@ -41,7 +41,7 @@ const Navbar = () => {
}
]
: []),
...(feConfigs?.show_doc
...(feConfigs?.docUrl
? [
{
label: t('home.Docs'),
......
......@@ -141,7 +141,7 @@ const LoginForm = ({ setPageType, loginSuccess }: Props) => {
注册账号
</Box>
</Flex>
{feConfigs?.show_doc && (
{feConfigs?.docUrl && (
<Box textAlign={'center'} mt={2} fontSize={'sm'}>
使用即代表你同意我们的{' '}
<Link
......
......@@ -39,7 +39,7 @@ const Tools = () => {
}
]
: []),
...(feConfigs?.show_doc
...(feConfigs?.docUrl
? [
{
icon: 'courseLight',
......
......@@ -128,7 +128,7 @@ export const dispatchChatCompletion = async (props: ChatProps): Promise<ChatResp
temperature,
max_tokens,
stream,
seed: temperature < 0.3 ? 1 : undefined,
// seed: temperature < 0.3 ? 1 : undefined,
messages: concatMessages
},
{
......
......@@ -9,7 +9,7 @@ export const postUploadFiles = (
onUploadProgress: (progressEvent: AxiosProgressEvent) => void
) =>
POST<string[]>('/common/file/upload', data, {
timeout: 60000,
timeout: 48000,
onUploadProgress,
headers: {
'Content-Type': 'multipart/form-data; charset=utf-8'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment