Skip to content

Commit 16a74c9

Browse files
authored
fix: doc preview action;update doc (#5383)
* fix: doc preview action * update doc * dpc
1 parent 61899d9 commit 16a74c9

File tree

10 files changed

+293
-326
lines changed

10 files changed

+293
-326
lines changed

.github/workflows/docs-preview.yml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,8 @@ jobs:
1919
steps:
2020
- name: Checkout
2121
uses: actions/checkout@v4
22-
23-
- name: Rewrite image paths
24-
run: |
25-
find document/content/docs -name "*.mdx" -type f | while read file; do
26-
sed -i 's|](/imgs/|](https://cdn.jsdelivr.net/gh/labring/fastgpt-img@main/|g' "$file"
27-
done
22+
with:
23+
ref: ${{ github.event.pull_request.head.sha }}
2824

2925
- name: Get current datetime
3026
id: datetime

document/content/docs/introduction/development/openapi/share.mdx

Lines changed: 86 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ import { Alert } from '@/components/docs/Alert';
1919

2020
```json
2121
{
22-
"success": true,
23-
"message": "错误提示",
24-
"msg": "同message, 错误提示",
25-
"data": {
26-
"uid": "用户唯一凭证"
27-
}
22+
"success": true,
23+
"message": "错误提示",
24+
"msg": "同message, 错误提示",
25+
"data": {
26+
"uid": "用户唯一凭证"
27+
}
2828
}
2929
```
3030

@@ -37,21 +37,20 @@ import { Alert } from '@/components/docs/Alert';
3737
![](/imgs/sharelink_process.png)
3838

3939
## 配置教程
40+
4041
### 1. 配置身份校验地址
4142

4243
![](/imgs/share-setlink.png)
4344

4445
配置校验地址后,在每次分享链接使用时,都会向对应的地址发起校验和上报请求。
4546

46-
<Alert icon="🤖" >
47-
这里仅需配置根地址,无需具体到完整请求路径。
48-
</Alert>
47+
<Alert icon="🤖">这里仅需配置根地址,无需具体到完整请求路径。</Alert>
4948

5049
### 2. 分享链接中增加额外 query
5150

5251
在分享链接的地址中,增加一个额外的参数: authToken。例如:
5352

54-
原始的链接:`https://share.tryfastgpt.ai/chat/share?shareId=648aaf5ae121349a16d62192`
53+
原始的链接:`https://share.tryfastgpt.ai/chat/share?shareId=648aaf5ae121349a16d62192`
5554

5655
完整链接: `https://share.tryfastgpt.ai/chat/share?shareId=648aaf5ae121349a16d62192&authToken=userid12345`
5756

@@ -62,7 +61,6 @@ import { Alert } from '@/components/docs/Alert';
6261
<Tabs items={['请求示例','鉴权成功','鉴权失败']}>
6362
<Tab value="请求示例" >
6463

65-
6664
```bash
6765
curl --location --request POST '{{host}}/shareAuth/init' \
6866
--header 'Content-Type: application/json' \
@@ -71,48 +69,40 @@ curl --location --request POST '{{host}}/shareAuth/init' \
7169
}'
7270
```
7371

74-
7572
</Tab>
7673

7774
<Tab value="鉴权成功" >
7875

79-
8076
```json
8177
{
82-
"success": true,
83-
"data": {
84-
"uid": "用户唯一凭证"
85-
}
78+
"success": true,
79+
"data": {
80+
"uid": "用户唯一凭证"
81+
}
8682
}
8783
```
8884

8985
系统会拉取该分享链接下,uid 为 username123 的对话记录。
9086

91-
9287
</Tab>
9388

9489
<Tab value="鉴权失败" >
9590

96-
9791
```json
9892
{
99-
"success": false,
100-
"message": "身份错误",
93+
"success": false,
94+
"message": "身份错误"
10195
}
10296
```
10397

104-
10598
</Tab>
10699
</Tabs>
107100

108-
109-
110101
### 4. 编写对话前校验接口
111102

112103
<Tabs items={['请求示例','鉴权成功','鉴权失败']}>
113104
<Tab value="请求示例" >
114105

115-
116106
```bash
117107
curl --location --request POST '{{host}}/shareAuth/start' \
118108
--header 'Content-Type: application/json' \
@@ -122,50 +112,45 @@ curl --location --request POST '{{host}}/shareAuth/start' \
122112
}'
123113
```
124114

125-
126115
</Tab>
127116

128117
<Tab value="鉴权成功" >
129118

130-
131119
```json
132120
{
133-
"success": true,
134-
"data": {
135-
"uid": "用户唯一凭证"
136-
}
121+
"success": true,
122+
"data": {
123+
"uid": "用户唯一凭证"
124+
}
137125
}
138126
```
139127

140-
141128
</Tab>
142129

143130
<Tab value="鉴权失败" >
144131

145-
146132
```json
147133
{
148-
"success": false,
149-
"message": "身份验证失败",
134+
"success": false,
135+
"message": "身份验证失败"
150136
}
151137
```
152138

153139
```json
154140
{
155-
"success": false,
156-
"message": "存在违规词",
141+
"success": false,
142+
"message": "存在违规词"
157143
}
158144
```
159145

160-
161146
</Tab>
162147
</Tabs>
163148

164149
### 5. 编写对话结果上报接口(可选)
165150

166151
该接口无规定返回值。
167152

168-
响应值与[chat 接口格式相同](/docs/development/openapi/chat/#响应),仅多了一个`token`
153+
响应值与[chat 接口格式相同](/docs/introduction/development/openapi/intro/#响应),仅多了一个`token`
169154

170155
重点关注:`totalPoints`(总消耗AI积分),`token`(Token消耗总数)
171156

@@ -236,56 +221,56 @@ curl --location --request POST '{{host}}/shareAuth/finish' \
236221
"runningTime": 1.32
237222
}
238223
]
239-
240-
224+
225+
241226
}'
242227
```
243228

244229
**responseData 完整字段说明:**
245230

246231
```ts
247232
type ResponseType = {
248-
moduleType: FlowNodeTypeEnum; // 模块类型
249-
moduleName: string; // 模块名
250-
moduleLogo?: string; // logo
251-
runningTime?: number; // 运行时间
252-
query?: string; // 用户问题/检索词
253-
textOutput?: string; // 文本输出
254-
255-
tokens?: number; // 上下文总Tokens
256-
model?: string; // 使用到的模型
257-
contextTotalLen?: number; // 上下文总长度
258-
totalPoints?: number; // 总消耗AI积分
259-
260-
temperature?: number; // 温度
261-
maxToken?: number; // 模型的最大token
262-
quoteList?: SearchDataResponseItemType[]; // 引用列表
263-
historyPreview?: ChatItemType[]; // 上下文预览(历史记录会被裁剪)
264-
265-
similarity?: number; // 最低相关度
266-
limit?: number; // 引用上限token
267-
searchMode?: `${DatasetSearchModeEnum}`; // 搜索模式
268-
searchUsingReRank?: boolean; // 是否使用rerank
269-
extensionModel?: string; // 问题扩展模型
270-
extensionResult?: string; // 问题扩展结果
271-
extensionTokens?: number; // 问题扩展总字符长度
272-
273-
cqList?: ClassifyQuestionAgentItemType[]; // 分类问题列表
274-
cqResult?: string; // 分类问题结果
275-
276-
extractDescription?: string; // 内容提取描述
277-
extractResult?: Record<string, any>; // 内容提取结果
278-
279-
params?: Record<string, any>; // HTTP模块params
280-
body?: Record<string, any>; // HTTP模块body
281-
headers?: Record<string, any>; // HTTP模块headers
282-
httpResult?: Record<string, any>; // HTTP模块结果
283-
284-
pluginOutput?: Record<string, any>; // 插件输出
285-
pluginDetail?: ChatHistoryItemResType[]; // 插件详情
286-
287-
isElseResult?: boolean; // 判断器结果
288-
}
233+
moduleType: FlowNodeTypeEnum; // 模块类型
234+
moduleName: string; // 模块名
235+
moduleLogo?: string; // logo
236+
runningTime?: number; // 运行时间
237+
query?: string; // 用户问题/检索词
238+
textOutput?: string; // 文本输出
239+
240+
tokens?: number; // 上下文总Tokens
241+
model?: string; // 使用到的模型
242+
contextTotalLen?: number; // 上下文总长度
243+
totalPoints?: number; // 总消耗AI积分
244+
245+
temperature?: number; // 温度
246+
maxToken?: number; // 模型的最大token
247+
quoteList?: SearchDataResponseItemType[]; // 引用列表
248+
historyPreview?: ChatItemType[]; // 上下文预览(历史记录会被裁剪)
249+
250+
similarity?: number; // 最低相关度
251+
limit?: number; // 引用上限token
252+
searchMode?: `${DatasetSearchModeEnum}`; // 搜索模式
253+
searchUsingReRank?: boolean; // 是否使用rerank
254+
extensionModel?: string; // 问题扩展模型
255+
extensionResult?: string; // 问题扩展结果
256+
extensionTokens?: number; // 问题扩展总字符长度
257+
258+
cqList?: ClassifyQuestionAgentItemType[]; // 分类问题列表
259+
cqResult?: string; // 分类问题结果
260+
261+
extractDescription?: string; // 内容提取描述
262+
extractResult?: Record<string, any>; // 内容提取结果
263+
264+
params?: Record<string, any>; // HTTP模块params
265+
body?: Record<string, any>; // HTTP模块body
266+
headers?: Record<string, any>; // HTTP模块headers
267+
httpResult?: Record<string, any>; // HTTP模块结果
268+
269+
pluginOutput?: Record<string, any>; // 插件输出
270+
pluginDetail?: ChatHistoryItemResType[]; // 插件详情
271+
272+
isElseResult?: boolean; // 判断器结果
273+
};
289274
```
290275

291276
## 实践案例
@@ -296,87 +281,75 @@ type ResponseType = {
296281

297282
![](/imgs/share-auth1.png)
298283

299-
300-
301284
<Tabs items={['/shareAuth/init','/shareAuth/start','/shareAuth/finish']}>
302285
<Tab value="/shareAuth/init" >
303286

304-
305287
这个接口中,我们设置了`token`必须等于`fastgpt`才能通过校验。(实际生产中不建议固定写死)
306288

307289
```ts
308-
import cloud from '@lafjs/cloud'
290+
import cloud from '@lafjs/cloud';
309291

310292
export default async function (ctx: FunctionContext) {
311-
const { token } = ctx.body
312-
313-
// 此处省略 token 解码过程
293+
const { token } = ctx.body;
294+
295+
// 此处省略 token 解码过程
314296
if (token === 'fastgpt') {
315-
return { success: true, data: { uid: "user1" } }
297+
return { success: true, data: { uid: 'user1' } };
316298
}
317299

318-
return { success: false,message:"身份错误" }
300+
return { success: false, message: '身份错误' };
319301
}
320-
321302
```
322303

323-
324304
</Tab>
325305

326306
<Tab value="/shareAuth/start" >
327307

328-
329308
这个接口中,我们设置了`token`必须等于`fastgpt`才能通过校验。并且如果问题中包含了``字,则会报错,用于模拟敏感校验。
330309

331310
```ts
332-
import cloud from '@lafjs/cloud'
311+
import cloud from '@lafjs/cloud';
333312

334313
export default async function (ctx: FunctionContext) {
335-
const { token, question } = ctx.body
314+
const { token, question } = ctx.body;
336315

337-
// 此处省略 token 解码过程
316+
// 此处省略 token 解码过程
338317
if (token !== 'fastgpt') {
339-
return { success: false, message: "身份错误" }
340-
318+
return { success: false, message: '身份错误' };
341319
}
342320

343-
if(question.includes("")){
344-
return { success: false, message: "内容不合规" }
321+
if (question.includes('')) {
322+
return { success: false, message: '内容不合规' };
345323
}
346324

347-
return { success: true, data: { uid: "user1" } }
325+
return { success: true, data: { uid: 'user1' } };
348326
}
349-
350327
```
351328

352-
353329
</Tab>
354330

355331
<Tab value="/shareAuth/finish" >
356332

357-
358333
结果上报接口可自行进行逻辑处理。
359334

360335
```ts
361-
import cloud from '@lafjs/cloud'
336+
import cloud from '@lafjs/cloud';
362337

363338
export default async function (ctx: FunctionContext) {
364-
const { token, responseData } = ctx.body
365-
366-
const total = responseData.reduce((sum,item) => sum + item.price,0)
367-
const amount = total / 100000
339+
const { token, responseData } = ctx.body;
340+
341+
const total = responseData.reduce((sum, item) => sum + item.price, 0);
342+
const amount = total / 100000;
368343

369344
// 省略数据库操作
370345

371-
return { }
346+
return {};
372347
}
373348
```
374349

375-
376350
</Tab>
377351
</Tabs>
378352

379-
380353
### 2. 配置校验地址
381354

382355
我们随便复制3个地址中一个接口: `https://d8dns0.laf.dev/shareAuth/finish`, 去除`/shareAuth/finish`后填入`身份校验`:`https://d8dns0.laf.dev`
@@ -394,7 +367,6 @@ export default async function (ctx: FunctionContext) {
394367
1. 打开源链接或者`authToken`不等于`fastgpt`的链接会提示身份错误。
395368
2. 发送内容中包含你字,会提示内容不合规。
396369

397-
398370
## 使用场景
399371

400372
这个鉴权方式通常是帮助你直接嵌入`分享链接`到你的应用中,在你的应用打开分享链接前,应做`authToken`的拼接后再打开。

0 commit comments

Comments
 (0)