Compare commits
31 Commits
v4.6.2-alp
...
v4.6.5-alp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd682d4275 | ||
|
|
41115a96c0 | ||
|
|
b14a1db2f9 | ||
|
|
703583fff7 | ||
|
|
d33c99f564 | ||
|
|
05bf1b2265 | ||
|
|
dd7b4b98ae | ||
|
|
34656dfda0 | ||
|
|
7b5c35018b | ||
|
|
7630417679 | ||
|
|
63ce76413e | ||
|
|
1c1305fcb6 | ||
|
|
c3437b9367 | ||
|
|
e18c79ca71 | ||
|
|
d2d7eac9e0 | ||
|
|
84cf6b5658 | ||
|
|
b58249fc3a | ||
|
|
54d52d8d25 | ||
|
|
f298b90b69 | ||
|
|
e01c38efe0 | ||
|
|
71afe71192 | ||
|
|
62e87551ac | ||
|
|
c3ae38df8b | ||
|
|
9c77dfbddd | ||
|
|
7fc05af09e | ||
|
|
a9ae270335 | ||
|
|
b916183848 | ||
|
|
007fce2deb | ||
|
|
abc1e576b7 | ||
|
|
a74e1d7166 | ||
|
|
e765c3bf95 |
@@ -8,4 +8,5 @@ README.md
|
||||
|
||||
.yalc/
|
||||
yalc.lock
|
||||
testApi/
|
||||
testApi/
|
||||
*.local.*
|
||||
3
.gitignore
vendored
@@ -35,4 +35,5 @@ dist/
|
||||
**/.hugo_build.lock
|
||||
docSite/public/
|
||||
docSite/resources/_gen/
|
||||
docSite/.vercel
|
||||
docSite/.vercel
|
||||
*.local.*
|
||||
73
Dockerfile
@@ -1,59 +1,86 @@
|
||||
# Install dependencies only when needed
|
||||
FROM node:18.15-alpine AS deps
|
||||
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
|
||||
RUN apk add --no-cache libc6-compat && npm install -g pnpm
|
||||
# --------- install dependence -----------
|
||||
FROM node:18.17-alpine AS mainDeps
|
||||
WORKDIR /app
|
||||
|
||||
ARG name
|
||||
ARG proxy
|
||||
|
||||
RUN [ -z "$proxy" ] || sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
|
||||
RUN apk add --no-cache libc6-compat && npm install -g pnpm@8.6.0
|
||||
# if proxy exists, set proxy
|
||||
RUN [ -z "$proxy" ] || pnpm config set registry https://registry.npm.taobao.org
|
||||
|
||||
# copy packages and one project
|
||||
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
COPY pnpm-lock.yaml pnpm-workspace.yaml ./
|
||||
COPY ./packages ./packages
|
||||
COPY ./projects/$name/package.json ./projects/$name/package.json
|
||||
|
||||
RUN [ -f pnpm-lock.yaml ] || (echo "Lockfile not found." && exit 1)
|
||||
|
||||
RUN pnpm install
|
||||
RUN pnpm i
|
||||
|
||||
# Rebuild the source code only when needed
|
||||
FROM node:18.15-alpine AS builder
|
||||
# --------- install dependence -----------
|
||||
FROM node:18.17-alpine AS workerDeps
|
||||
WORKDIR /app
|
||||
|
||||
ARG proxy
|
||||
|
||||
RUN [ -z "$proxy" ] || sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
|
||||
RUN apk add --no-cache libc6-compat && npm install -g pnpm@8.6.0
|
||||
# if proxy exists, set proxy
|
||||
RUN [ -z "$proxy" ] || pnpm config set registry https://registry.npm.taobao.org
|
||||
|
||||
COPY ./worker /app/worker
|
||||
RUN cd /app/worker && pnpm i --production --ignore-workspace
|
||||
|
||||
# --------- builder -----------
|
||||
FROM node:18.17-alpine AS builder
|
||||
WORKDIR /app
|
||||
|
||||
ARG name
|
||||
ARG proxy
|
||||
|
||||
# copy common node_modules and one project node_modules
|
||||
COPY package.json pnpm-workspace.yaml ./
|
||||
COPY --from=deps /app/node_modules ./node_modules
|
||||
COPY --from=deps /app/packages ./packages
|
||||
COPY --from=mainDeps /app/node_modules ./node_modules
|
||||
COPY --from=mainDeps /app/packages ./packages
|
||||
COPY ./projects/$name ./projects/$name
|
||||
COPY --from=deps /app/projects/$name/node_modules ./projects/$name/node_modules
|
||||
COPY --from=mainDeps /app/projects/$name/node_modules ./projects/$name/node_modules
|
||||
|
||||
# Uncomment the following line in case you want to disable telemetry during the build.
|
||||
ENV NEXT_TELEMETRY_DISABLED 1
|
||||
RUN npm install -g pnpm
|
||||
RUN pnpm --filter=$name run build
|
||||
RUN [ -z "$proxy" ] || sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
|
||||
|
||||
FROM node:18.15-alpine AS runner
|
||||
RUN apk add --no-cache libc6-compat && npm install -g pnpm@8.6.0
|
||||
RUN pnpm --filter=$name build
|
||||
|
||||
# --------- runner -----------
|
||||
FROM node:18.17-alpine AS runner
|
||||
WORKDIR /app
|
||||
|
||||
ARG name
|
||||
ARG proxy
|
||||
|
||||
# create user and use it
|
||||
RUN addgroup --system --gid 1001 nodejs
|
||||
RUN adduser --system --uid 1001 nextjs
|
||||
|
||||
RUN sed -i 's/https/http/' /etc/apk/repositories
|
||||
RUN apk add curl \
|
||||
&& apk add ca-certificates \
|
||||
RUN [ -z "$proxy" ] || sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
|
||||
RUN apk add --no-cache curl ca-certificates \
|
||||
&& update-ca-certificates
|
||||
|
||||
# copy running files
|
||||
COPY --from=builder /app/projects/$name/public ./projects/$name/public
|
||||
COPY --from=builder /app/projects/$name/next.config.js ./projects/$name/next.config.js
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/projects/$name/.next/standalone ./
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/projects/$name/.next/static ./projects/$name/.next/static
|
||||
COPY --from=builder /app/projects/$name/public /app/projects/$name/public
|
||||
COPY --from=builder /app/projects/$name/next.config.js /app/projects/$name/next.config.js
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/projects/$name/.next/standalone /app/
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/projects/$name/.next/static /app/projects/$name/.next/static
|
||||
# copy package.json to version file
|
||||
COPY --from=builder /app/projects/$name/package.json ./package.json
|
||||
# copy woker
|
||||
COPY --from=workerDeps /app/worker /app/worker
|
||||
# copy config
|
||||
COPY ./projects/$name/data/config.json /app/data/config.json
|
||||
COPY ./projects/$name/data/pluginTemplates /app/data/pluginTemplates
|
||||
COPY ./projects/$name/data/simpleTemplates /app/data/simpleTemplates
|
||||
|
||||
|
||||
ENV NODE_ENV production
|
||||
ENV NEXT_TELEMETRY_DISABLED 1
|
||||
|
||||
71
README.md
@@ -50,19 +50,20 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b
|
||||
|
||||
## 💡 功能
|
||||
|
||||
1. 强大的可视化编排,轻松构建 AI 应用
|
||||
`1` 强大的可视化编排,轻松构建 AI 应用
|
||||
- [x] 提供简易模式,无需操作编排
|
||||
- [x] 用户对话前引导,全局字符串变量
|
||||
- [x] 知识库搜索
|
||||
- [x] 多 LLM 模型对话
|
||||
- [x] 文本内容提取成结构化数据
|
||||
- [x] HTTP 扩展
|
||||
- [ ] 嵌入 Laf,实现在线编写 HTTP 模块
|
||||
- [ ] 嵌入 [Laf](https://github.com/labring/laf),实现在线编写 HTTP 模块
|
||||
- [x] 对话下一步指引
|
||||
- [ ] 对话多路线选择
|
||||
- [x] 源文件引用追踪
|
||||
- [x] 模块封装,实现多级复用
|
||||
2. 丰富的知识库预处理
|
||||
|
||||
`2` 丰富的知识库预处理
|
||||
- [x] 多库复用,混用
|
||||
- [x] chunk 记录修改和删除
|
||||
- [x] 支持手动输入,直接分段,QA 拆分导入
|
||||
@@ -70,15 +71,18 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b
|
||||
- [x] 支持知识库单独设置向量模型
|
||||
- [x] 源文件存储
|
||||
- [ ] 文件学习 Agent
|
||||
3. 多种效果测试渠道
|
||||
|
||||
`3` 多种效果测试渠道
|
||||
- [x] 知识库单点搜索测试
|
||||
- [x] 对话时反馈引用并可修改与删除
|
||||
- [x] 完整上下文呈现
|
||||
- [x] 完整模块中间值呈现
|
||||
4. OpenAPI
|
||||
|
||||
`4` OpenAPI
|
||||
- [x] completions 接口 (对齐 GPT 接口)
|
||||
- [ ] 知识库 CRUD
|
||||
5. 运营功能
|
||||
|
||||
`5` 运营功能
|
||||
- [x] 免登录分享窗口
|
||||
- [x] Iframe 一键嵌入
|
||||
- [x] 统一查阅对话记录,并对数据进行标注
|
||||
@@ -93,17 +97,17 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b
|
||||
|
||||
- **⚡ 快速部署**
|
||||
|
||||
> Sealos 的服务器在国外,不需要额外处理网络问题,无需服务器、无需魔法、无需域名,支持高并发 & 动态伸缩。点击以下按钮即可一键部署 👇
|
||||
> [Sealos](https://sealos.io) 的服务器在国外,不需要额外处理网络问题,无需服务器、无需魔法、无需域名,支持高并发 & 动态伸缩。点击以下按钮即可一键部署 👇
|
||||
|
||||
[](https://cloud.sealos.io/?openapp=system-fastdeploy%3FtemplateName%3Dfastgpt)
|
||||
|
||||
由于需要部署数据库,部署完后需要等待 2~4 分钟才能正常访问。默认用了最低配置,首次访问时会有些慢。
|
||||
|
||||
* [快开始本地开发](https://doc.fastgpt.in/docs/development/intro/)
|
||||
* [部署 FastGPT](https://doc.fastgpt.in/docs/installation)
|
||||
* [部署 FastGPT](https://doc.fastgpt.in/docs/development/sealos)
|
||||
* [系统配置文件说明](https://doc.fastgpt.in/docs/development/configuration/)
|
||||
* [多模型配置](https://doc.fastgpt.in/docs/installation/one-api/)
|
||||
* [版本更新/升级介绍](https://doc.fastgpt.in/docs/installation/upgrading)
|
||||
* [多模型配置](https://doc.fastgpt.in/docs/development/one-api/)
|
||||
* [版本更新/升级介绍](https://doc.fastgpt.in/docs/development/upgrading)
|
||||
* [OpenAPI API 文档](https://doc.fastgpt.in/docs/development/openapi/)
|
||||
* [知识库结构详解](https://doc.fastgpt.in/docs/use-cases/datasetengine/)
|
||||
|
||||
@@ -142,7 +146,7 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b
|
||||
<img src="https://img.shields.io/badge/-返回顶部-7d09f1.svg" alt="#" align="right">
|
||||
</a>
|
||||
|
||||
## 🤝 第三方生态
|
||||
## 🌿 第三方生态
|
||||
|
||||
- [OnWeChat 个人微信/企微机器人](https://doc.fastgpt.in/docs/use-cases/onwechat/)
|
||||
|
||||
@@ -150,9 +154,50 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b
|
||||
<img src="https://img.shields.io/badge/-返回顶部-7d09f1.svg" alt="#" align="right">
|
||||
</a>
|
||||
|
||||
## 🤝 参与贡献
|
||||
|
||||
我们非常欢迎各种形式的贡献。如果你对贡献代码感兴趣,可以查看我们的 GitHub [Issues](https://github.com/labring/FastGPT/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc),大展身手,向我们展示你的奇思妙想。
|
||||
|
||||
<a href="https://github.com/labring/FastGPT/graphs/contributors" target="_blank">
|
||||
<table>
|
||||
<tr>
|
||||
<th colspan="2">
|
||||
<br><img src="https://contrib.rocks/image?repo=labring/FastGPT"><br><br>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/compose-org-active-contributors/thumbnail.png?activity=active&period=past_28_days&owner_id=102226726&repo_ids=605673387&image_size=2x3&color_scheme=dark">
|
||||
<img alt="Active participants of labring - past 28 days" src="https://next.ossinsight.io/widgets/official/compose-org-active-contributors/thumbnail.png?activity=active&period=past_28_days&owner_id=102226726&repo_ids=605673387&image_size=2x3&color_scheme=light">
|
||||
</picture>
|
||||
</td>
|
||||
<td rowspan="2">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/compose-org-participants-growth/thumbnail.png?activity=new&period=past_28_days&owner_id=102226726&repo_ids=605673387&image_size=4x7&color_scheme=dark">
|
||||
<img alt="New trends of labring" src="https://next.ossinsight.io/widgets/official/compose-org-participants-growth/thumbnail.png?activity=new&period=past_28_days&owner_id=102226726&repo_ids=605673387&image_size=4x7&color_scheme=light">
|
||||
</picture>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/compose-org-active-contributors/thumbnail.png?activity=new&period=past_28_days&owner_id=102226726&repo_ids=605673387&image_size=2x3&color_scheme=dark">
|
||||
<img alt="New participants of labring - past 28 days" src="https://next.ossinsight.io/widgets/official/compose-org-active-contributors/thumbnail.png?activity=new&period=past_28_days&owner_id=102226726&repo_ids=605673387&image_size=2x3&color_scheme=light">
|
||||
</picture>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</a>
|
||||
|
||||
## 🌟 Star History
|
||||
|
||||
[](https://star-history.com/#labring/FastGPT&Date)
|
||||
<a href="https://github.com/labring/FastGPT/stargazers" target="_blank" style="display: block" align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://next.ossinsight.io/widgets/official/analyze-repo-stars-history/thumbnail.png?repo_id=605673387&image_size=auto&color_scheme=dark">
|
||||
<img alt="Star History of labring/FastGPT" src="https://next.ossinsight.io/widgets/official/analyze-repo-stars-history/thumbnail.png?repo_id=605673387&image_size=auto&color_scheme=light">
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
<a href="#readme">
|
||||
<img src="https://img.shields.io/badge/-返回顶部-7d09f1.svg" alt="#" align="right">
|
||||
@@ -165,4 +210,4 @@ https://github.com/labring/FastGPT/assets/15308462/7d3a38df-eb0e-4388-9250-2409b
|
||||
1. 允许作为后台服务直接商用,但不允许提供 SaaS 服务。
|
||||
2. 未经商业授权,任何形式的商用服务均需保留相关版权信息。
|
||||
3. 完整请查看 [FastGPT Open Source License](./LICENSE)
|
||||
4. 联系方式:yujinlong@sealos.io,[点击查看商业版定价策略](https://doc.fastgpt.in/docs/commercial)
|
||||
4. 联系方式:yujinlong@sealos.io,[点击查看商业版定价策略](https://doc.fastgpt.in/docs/commercial)
|
||||
BIN
docSite/assets/imgs/coreferenceResolution1.png
Normal file
|
After Width: | Height: | Size: 136 KiB |
BIN
docSite/assets/imgs/coreferenceResolution2.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
docSite/assets/imgs/coreferenceResolution3.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
docSite/assets/imgs/customfeedback1.png
Normal file
|
After Width: | Height: | Size: 459 KiB |
BIN
docSite/assets/imgs/customfeedback2.png
Normal file
|
After Width: | Height: | Size: 599 KiB |
BIN
docSite/assets/imgs/customfeedback3.png
Normal file
|
After Width: | Height: | Size: 267 KiB |
BIN
docSite/assets/imgs/customfeedback4.png
Normal file
|
After Width: | Height: | Size: 252 KiB |
BIN
docSite/assets/imgs/data_search1.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 485 KiB After Width: | Height: | Size: 2.4 MiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 2.1 MiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 353 KiB |
|
Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 178 KiB |
BIN
docSite/assets/imgs/demo-appointment8.png
Normal file
|
After Width: | Height: | Size: 118 KiB |
BIN
docSite/assets/imgs/demo-appointment9.png
Normal file
|
After Width: | Height: | Size: 291 KiB |
|
Before Width: | Height: | Size: 294 KiB |
|
Before Width: | Height: | Size: 175 KiB |
|
Before Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 336 KiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 162 KiB |
BIN
docSite/assets/imgs/judgement1.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
docSite/assets/imgs/onSealos1.png
Normal file
|
After Width: | Height: | Size: 174 KiB |
BIN
docSite/assets/imgs/onsealos10.png
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
docSite/assets/imgs/onsealos12.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
docSite/assets/imgs/onsealos2.png
Normal file
|
After Width: | Height: | Size: 247 KiB |
BIN
docSite/assets/imgs/onsealos3.png
Normal file
|
After Width: | Height: | Size: 286 KiB |
BIN
docSite/assets/imgs/onsealos4.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
docSite/assets/imgs/onsealos5.png
Normal file
|
After Width: | Height: | Size: 97 KiB |
BIN
docSite/assets/imgs/onsealos6.png
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
docSite/assets/imgs/onsealos7.png
Normal file
|
After Width: | Height: | Size: 97 KiB |
BIN
docSite/assets/imgs/onsealos8.png
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
docSite/assets/imgs/onsealos9.png
Normal file
|
After Width: | Height: | Size: 120 KiB |
BIN
docSite/assets/imgs/onsealosl11.PNG
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
docSite/assets/imgs/sealos13.png
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
docSite/assets/imgs/string.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
docSite/assets/imgs/updateImageSealos1.jpg
Normal file
|
After Width: | Height: | Size: 201 KiB |
BIN
docSite/assets/imgs/updateImageSealos2.jpg
Normal file
|
After Width: | Height: | Size: 202 KiB |
BIN
docSite/assets/imgs/updateImageSealos3.jpg
Normal file
|
After Width: | Height: | Size: 232 KiB |
BIN
docSite/assets/imgs/updateImageSealos4.jpg
Normal file
|
After Width: | Height: | Size: 257 KiB |
BIN
docSite/assets/imgs/webSync1.jpg
Normal file
|
After Width: | Height: | Size: 268 KiB |
BIN
docSite/assets/imgs/webSync10.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
docSite/assets/imgs/webSync2.jpg
Normal file
|
After Width: | Height: | Size: 123 KiB |
BIN
docSite/assets/imgs/webSync3.jpg
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
docSite/assets/imgs/webSync4.jpg
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
docSite/assets/imgs/webSync5.jpg
Normal file
|
After Width: | Height: | Size: 322 KiB |
BIN
docSite/assets/imgs/webSync6.jpg
Normal file
|
After Width: | Height: | Size: 836 KiB |
BIN
docSite/assets/imgs/webSync7.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
docSite/assets/imgs/webSync8.jpg
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
docSite/assets/imgs/webSync9.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
@@ -1,5 +1,5 @@
|
||||
---
|
||||
weight: 10
|
||||
weight: 0
|
||||
title: '文档'
|
||||
description: 'FastGPT 官方文档'
|
||||
icon: menu_book
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
weight: 1100
|
||||
title: '社区'
|
||||
weight: 1200
|
||||
title: '协议'
|
||||
description: '社区相关内容'
|
||||
icon: 'forum'
|
||||
icon: 'handshake'
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
38
docSite/content/docs/agreement/disclaimer.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: '免责声明'
|
||||
description: ' FastGPT 免责声明'
|
||||
icon: 'gavel'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 1220
|
||||
---
|
||||
|
||||
由于生成式 AI 的特性,其在不同国家的管控措施也会有所不同。请所有使用者务必遵守所在地的相关法律。
|
||||
|
||||
免责声明:以任何违反 FastGPT 可接受使用政策的方式使用,包括但不限于法律、法规、政府命令或法令禁止的任何用途,或任何侵犯他人权利的使用;由使用者自行承担。我们对由客户使用产生的问题概不负责。
|
||||
|
||||
下面是各国对生成式AI的管控条例的链接:
|
||||
|
||||
[中国生成式人工智能服务管理办法(征求意见稿)](http://www.cac.gov.cn/2023-04/11/c_1682854275475410.htm)
|
||||
|
||||
## 内容要求
|
||||
|
||||
我们禁止使用我们对接的模型服务生成可能对个人或社会造成伤害的内容。保障平台的安全性,是长期稳定运营的关键。如发现任何利用平台接入模型能力进行违规内容生成和使用,将立即封号,账号余额不退。
|
||||
|
||||
- 剥削和虐待
|
||||
- 禁止描述、展示或宣扬儿童性剥削或性虐待的内容,无论法律是否禁止。这包括涉及儿童或使儿童色情的内容。
|
||||
- 禁止描述或用于培养儿童的内容。修饰是成年人以剥削,特别是性剥削为目的与儿童建立关系的行为。这包括以性剥削、贩运或其他形式剥削为目的与儿童交流。
|
||||
- 未经同意的私密内容
|
||||
- 服务禁止描述、提供或宣传未经同意的亲密活动的内容。
|
||||
- 禁止描述、提供特征或宣传或用于招揽商业性活动和性服务的内容。这包括鼓励和协调真正的性活动。
|
||||
- 禁止描述或用于人口贩运目的的内容。这包括招募人员、便利交通、支付和助长对人的剥削,如强迫劳动、家庭奴役、役、强迫婚姻和强迫医疗程序。
|
||||
- 自杀和自残,禁止描述、赞美、支持、促进、美化、鼓励和/或指导个人自残或自杀的内容。
|
||||
- 暴力内容和行为
|
||||
- 禁止描述、展示或宣扬血腥暴力或血腥的内容。
|
||||
- 禁止描绘恐怖主义行为的内容;赞扬或支持恐怖组织、恐怖行为者或暴力恐怖意识形态;鼓励恐怖活动;向恐怖组织或恐怖事业提供援助;或协助恐怖组织招募成员。
|
||||
- 禁止通过暴力威胁或煽动来鼓吹或宣扬对他人的暴力行为的内容。
|
||||
- 仇恨言论和歧视
|
||||
- 禁止基于实际或感知的种族、民族、国籍、性别、性别认同、性取向、宗教信仰、年龄、残疾状况、种姓或与系统性偏见或边缘化相关的任何其他特征等特征攻击、诋毁、恐吓、降级、针对或排斥个人或群体的内容。
|
||||
- 禁止针对个人或群体进行威胁、恐吓、侮辱、贬低或贬低的语言或图像、宣扬身体伤害或其他虐待行为(如跟踪)的内容。
|
||||
- 禁止故意欺骗并可能对公共利益产生不利影响的内容,包括与健康、安全、选举诚信或公民参与相关的欺骗性或不真实内容。
|
||||
- 直接支持非法主动攻击或造成技术危害的恶意软件活动的内容,例如提供恶意可执行文件、组织拒绝服务攻击或管理命令和控制服务器。
|
||||
@@ -4,7 +4,7 @@ description: ' FastGPT 开源许可证'
|
||||
icon: 'verified_user'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 1120
|
||||
weight: 1210
|
||||
---
|
||||
|
||||
FastGPT 项目在 Apache License 2.0 许可下开源,同时包含以下附加条件:
|
||||
9
docSite/content/docs/commercial/_index.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
weight: 1100
|
||||
title: '商业版介绍'
|
||||
description: 'FastGPT 商业版介绍'
|
||||
icon: 'shopping_cart'
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
<!-- 1100 ~ 1200 -->
|
||||
@@ -4,7 +4,7 @@ description: 'FastGPT 商业版相关说明'
|
||||
icon: 'shopping_cart'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 20
|
||||
weight: 1001
|
||||
---
|
||||
|
||||
## FastGPT 线上服务
|
||||
@@ -4,7 +4,7 @@ description: ' 加入 FastGPT 开发者社区和我们一起成长'
|
||||
icon: 'forum'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 1110
|
||||
weight: 1300
|
||||
---
|
||||
|
||||
FastGPT 是一个由用户和贡献者参与推动的开源项目,如果您对产品使用存在疑问和建议,可尝试以下方式寻求支持。我们的团队与社区会竭尽所能为您提供帮助。
|
||||
9
docSite/content/docs/course/_index.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
weight: 100
|
||||
title: '基础教程'
|
||||
description: 'FastGPT 基础教程'
|
||||
icon: 'import_contacts'
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
<!-- 100 ~ 300 -->
|
||||
40
docSite/content/docs/course/data_search.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: '知识库搜索参数'
|
||||
description: '知识库搜索原理'
|
||||
icon: 'language'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 106
|
||||
---
|
||||
|
||||
在知识库搜索的方式上,FastGPT提供了三种方式,分别为“语义检索”“增强语义检索”“混合检索”。
|
||||
|
||||

|
||||
|
||||
## 语义检索
|
||||
|
||||
语义检索就是向量检索,同时把用户的问题和知识库内容向量化,然后通过“语义相关度匹配”的方式从知识库中查找到匹配的知识点。
|
||||
|
||||
优点:
|
||||
- 相近语义理解
|
||||
- 跨多语言理解(例如输入中文问题匹配英文知识点)
|
||||
- 多模态理解(文本,图片,音视频等)
|
||||
|
||||
## 增强语义检索
|
||||
|
||||
在语义检索的基础上,增强“语义相关度匹配”并在搜索结束后进行 Rerank(重排)。
|
||||
|
||||
Rerank(重排):把检索结果按“与用户问题语义”相关性,从高到低排序,简单的说就是把最匹配用户问题的检索结果排在前面。
|
||||
|
||||
## 混合检索(推荐)
|
||||
|
||||
|
||||
在向量检索的同时进行全文检索,并把两项检索的结果混合一起重排,以便选中匹配用户问题的最佳结果。
|
||||
|
||||
全文检索:理解为全文关键词检索,通过关键词查询知识库,并返回包含关键词的文本片段。
|
||||
|
||||
优点:
|
||||
- 精确匹配(姓名,编号,ID等)
|
||||
- 少量关键词匹配(当用户问题字数过少时向量检索效果非常不好)
|
||||
|
||||
混合检索结合了向量检索和全文检索的优点,并且对查询结果进行了重排,大大提高了命中率,推荐使用。
|
||||
@@ -4,7 +4,7 @@ description: '快速体验 FastGPT 基础功能'
|
||||
icon: 'rocket_launch'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 30
|
||||
weight: 101
|
||||
---
|
||||
|
||||
更多使用技巧,[查看视屏教程](https://www.bilibili.com/video/BV1n34y1A7Bo/?spm_id_from=333.337.search-card.all.click&vd_source=903c2b09b7412037c2eddc6a8fb9828b)
|
||||
78
docSite/content/docs/course/websync.md
Normal file
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: 'Web 站点同步'
|
||||
description: 'FastGPT Web 站点同步功能介绍和使用方式'
|
||||
icon: 'language'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 105
|
||||
---
|
||||
|
||||

|
||||
|
||||
## 什么是 Web 站点同步
|
||||
|
||||
Web 站点同步利用爬虫的技术,可以通过一个入口网站,自动捕获`同域名`下的所有网站,目前最多支持`200`个子页面。出于合规与安全角度,FastGPT 仅支持`静态站点`的爬取,主要用于各个文档站点快速构建知识库。
|
||||
|
||||
Tips: 国内的媒体站点基本不可用,公众号、csdn、知乎等。可以通过终端发送`curl`请求检测是否为静态站点,例如:
|
||||
|
||||
```bash
|
||||
curl ai.fastgpt.in
|
||||
```
|
||||
|
||||
## 如何使用
|
||||
|
||||
### 1. 新建知识库,选择 Web 站点同步
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 2. 点击配置站点信息
|
||||
|
||||

|
||||
|
||||
### 3. 填写网址和选择器
|
||||
|
||||

|
||||
|
||||
好了, 现在点击开始同步,静等系统自动抓取网站信息即可。
|
||||
|
||||
|
||||
## 创建应用,绑定知识库
|
||||
|
||||

|
||||
|
||||
## 选择器如何使用
|
||||
|
||||
选择器是 HTML CSS JS 的产物,你可以通过选择器来定位到你需要抓取的具体内容,而不是整个站点。使用方式为:
|
||||
|
||||
### 首先打开浏览器调试面板(通常是 F12,或者【右键 - 检查】)
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 输入对应元素的选择器
|
||||
|
||||
[菜鸟教程 css 选择器](https://www.runoob.com/cssref/css-selectors.html),具体选择器的使用方式可以参考菜鸟教程。
|
||||
|
||||
上图中,我们选中了一个区域,对应的是`div`标签,它有 `data-prismjs-copy`, `data-prismjs-copy-success`, `data-prismjs-copy-error` 三个属性,这里我们用到一个就够。所以选择器是:
|
||||
**`div[data-prismjs-copy]`**
|
||||
|
||||
除了属性选择器,常见的还有类和ID选择器。例如:
|
||||
|
||||

|
||||
|
||||
上图 class 里的是类名(可能包含多个类名,都是空格隔开的,选择一个即可),选择器可以为:**`.docs-content`**
|
||||
|
||||
### 多选择器使用
|
||||
|
||||
在开头的演示中,我们对 FastGPT 文档是使用了多选择器的方式来选择,通过逗号隔开了两个选择器。
|
||||
|
||||

|
||||
|
||||
我们希望选中上图两个标签中的内容,此时就需要两组选择器。一组是:`.docs-content .mb-0.d-flex`,含义是 `docs-content` 类下同时包含 `mb-0`和`d-flex` 两个类的子元素;
|
||||
|
||||
另一组是`.docs-content div[data-prismjs-copy]`,含义是`docs-content` 类下包含`data-prismjs-copy`属性的`div`元素。
|
||||
|
||||
把两组选择器用逗号隔开即可:`.docs-content .mb-0.d-flex, .docs-content div[data-prismjs-copy]`
|
||||
@@ -1,8 +1,9 @@
|
||||
---
|
||||
weight: 500
|
||||
title: '开发指南'
|
||||
weight: 700
|
||||
title: '开发与部署指南'
|
||||
description: '本地开发 FastGPT 必看'
|
||||
icon: 'code_blocks'
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
<!-- 700 ~ 1100 -->
|
||||
|
||||
@@ -4,10 +4,10 @@ description: 'FastGPT 配置参数介绍'
|
||||
icon: 'settings'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 520
|
||||
weight: 708
|
||||
---
|
||||
|
||||
由于环境变量不利于配置复杂的内容,新版 FastGPT 采用了 ConfigMap 的形式挂载配置文件,你可以在 `projects/app/data/config.json` 看到默认的配置文件。可以参考 [docker-compose 快速部署](/docs/installation/docker/) 来挂载配置文件。
|
||||
由于环境变量不利于配置复杂的内容,新版 FastGPT 采用了 ConfigMap 的形式挂载配置文件,你可以在 `projects/app/data/config.json` 看到默认的配置文件。可以参考 [docker-compose 快速部署](/docs/development/docker/) 来挂载配置文件。
|
||||
|
||||
**开发环境下**,你需要将示例配置文件 `config.json` 复制成 `config.local.json` 文件才会生效。
|
||||
|
||||
@@ -92,7 +92,7 @@ weight: 520
|
||||
"maxContext": 16000,
|
||||
"maxResponse": 4000,
|
||||
"price": 0,
|
||||
"functionCall": true, // 是否支持function call, 不支持的模型需要设置为 false,会走提示词生成
|
||||
"toolChoice": true, // 是否支持openai的 toolChoice, 不支持的模型需要设置为 false,会走提示词生成
|
||||
"functionPrompt": ""
|
||||
},
|
||||
{
|
||||
@@ -101,7 +101,7 @@ weight: 520
|
||||
"maxContext": 8000,
|
||||
"maxResponse": 8000,
|
||||
"price": 0,
|
||||
"functionCall": true,
|
||||
"toolChoice": true,
|
||||
"functionPrompt": ""
|
||||
}
|
||||
],
|
||||
@@ -112,7 +112,7 @@ weight: 520
|
||||
"maxContext": 16000,
|
||||
"maxResponse": 4000,
|
||||
"price": 0,
|
||||
"functionCall": true,
|
||||
"toolChoice": true,
|
||||
"functionPrompt": ""
|
||||
}
|
||||
],
|
||||
|
||||
@@ -6,3 +6,4 @@ icon: 'model_training'
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
<!-- 900~950 -->
|
||||
@@ -23,7 +23,7 @@ FastGPT 默认使用了 OpenAI 的 LLM 模型和向量模型,如果想要私
|
||||
也可以通过环境变量引入:sk-key。有关docker环境变量引入的方法请自寻教程,此处不再赘述。
|
||||
```
|
||||
|
||||
## 接入 [One API](/docs/installation/one-api/)
|
||||
## 接入 [One API](/docs/development/one-api/)
|
||||
|
||||
为 chatglm2 和 m3e-large 各添加一个渠道,参数如下:
|
||||
|
||||
@@ -59,7 +59,7 @@ Authorization 为 sk-aaabbbcccdddeeefffggghhhiiijjjkkk。model 为刚刚在 One
|
||||
|
||||
## 接入 FastGPT
|
||||
|
||||
修改 config.json 配置文件,在 VectorModels 中加入 chatglm2 和 M3E 模型:
|
||||
修改 config.json 配置文件,在 ChatModels 中加入 chatglm2, 在 VectorModels 中加入 M3E 模型:
|
||||
|
||||
```json
|
||||
"ChatModels": [
|
||||
@@ -99,7 +99,7 @@ Authorization 为 sk-aaabbbcccdddeeefffggghhhiiijjjkkk。model 为刚刚在 One
|
||||
|
||||
## 接入 FastGPT
|
||||
|
||||
修改 config.json 配置文件,在 VectorModels 中加入 chatglm2 模型:
|
||||
修改 config.json 配置文件,在 ChatModels 中加入 chatglm2 模型:
|
||||
|
||||
```json
|
||||
"ChatModels": [
|
||||
@@ -107,10 +107,11 @@ Authorization 为 sk-aaabbbcccdddeeefffggghhhiiijjjkkk。model 为刚刚在 One
|
||||
{
|
||||
"model": "chatglm2",
|
||||
"name": "chatglm2",
|
||||
"maxToken": 8000,
|
||||
"price": 0,
|
||||
"quoteMaxToken": 4000,
|
||||
"maxTemperature": 1.2,
|
||||
"maxContext": 4000,
|
||||
"maxResponse": 4000,
|
||||
"quoteMaxToken": 2000,
|
||||
"maxTemperature": 1,
|
||||
"vision": false,
|
||||
"defaultSystemChatPrompt": ""
|
||||
}
|
||||
]
|
||||
@@ -1,8 +1,9 @@
|
||||
---
|
||||
weight: 540
|
||||
weight: 960
|
||||
title: "设计方案"
|
||||
description: "FastGPT 部分设计方案"
|
||||
icon: public
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
---
|
||||
<!-- 960~1050 -->
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
weight: 541
|
||||
weight: 961
|
||||
title: "数据集"
|
||||
description: "FastGPT 数据集中文件与数据的设计方案"
|
||||
icon: dataset
|
||||
|
||||
@@ -4,7 +4,7 @@ description: '使用 Docker Compose 快速部署 FastGPT'
|
||||
icon: ''
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 720
|
||||
weight: 707
|
||||
---
|
||||
|
||||
## 准备条件
|
||||
@@ -13,13 +13,13 @@ weight: 720
|
||||
|
||||
### 1. 准备好代理环境(国外服务器可忽略)
|
||||
|
||||
确保可以访问 OpenAI,具体方案可以参考:[代理方案](/docs/installation/proxy/)。或直接在 Sealos 上 [部署 OneAPI](/docs/installation/one-api),既解决代理问题也能实现多 Key 轮询、接入其他大模型。
|
||||
确保可以访问 OpenAI,具体方案可以参考:[代理方案](/docs/development/proxy/)。或直接在 Sealos 上 [部署 OneAPI](/docs/development/one-api),既解决代理问题也能实现多 Key 轮询、接入其他大模型。
|
||||
|
||||
### 2. 多模型支持
|
||||
|
||||
FastGPT 使用了 one-api 项目来管理模型池,其可以兼容 OpenAI 、Azure 、国内主流模型和本地模型等。
|
||||
|
||||
可选择 [Sealos 快速部署 OneAPI](/docs/installation/one-api),更多部署方法可参考该项目的 [README](https://github.com/songquanpeng/one-api),也可以直接通过以下按钮一键部署:
|
||||
可选择 [Sealos 快速部署 OneAPI](/docs/development/one-api),更多部署方法可参考该项目的 [README](https://github.com/songquanpeng/one-api),也可以直接通过以下按钮一键部署:
|
||||
|
||||
[](https://cloud.sealos.io/?openapp=system-fastdeploy%3FtemplateName%3Done-api)
|
||||
|
||||
@@ -86,7 +86,7 @@ curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data
|
||||
|
||||
## 三、启动容器
|
||||
|
||||
修改`docker-compose.yml`中的`OPENAI_BASE_URL`和`CHAT_API_KEY`即可,对应为 API 的地址和 key。
|
||||
修改`docker-compose.yml`中的`OPENAI_BASE_URL`和`CHAT_API_KEY`即可,对应为 API 的地址(别忘记加/v1)和 key。
|
||||
|
||||
```bash
|
||||
# 在 docker-compose.yml 同级目录下执行
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
title: '快速开始'
|
||||
title: '快速开始本地开发'
|
||||
description: '对 FastGPT 进行开发调试'
|
||||
icon: 'developer_guide'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 510
|
||||
weight: 705
|
||||
---
|
||||
|
||||
本文档介绍了如何设置开发环境以构建和测试 [FastGPT](https://fastgpt.run)。
|
||||
@@ -46,7 +46,7 @@ git clone git@github.com:<github_username>/FastGPT.git
|
||||
|
||||
### 3. 安装数据库
|
||||
|
||||
第一次开发,需要先部署数据库,建议本地开发可以随便找一台 2C2G 的轻量小数据库实践。数据库部署教程:[Docker 快速部署](/docs/installation/docker/)。部署完了,可以本地访问其数据库。
|
||||
第一次开发,需要先部署数据库,建议本地开发可以随便找一台 2C2G 的轻量小数据库实践。数据库部署教程:[Docker 快速部署](/docs/development/docker/)。部署完了,可以本地访问其数据库。
|
||||
|
||||
### 4. 初始配置
|
||||
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
---
|
||||
title: '接入微软、ChatGLM、本地模型等'
|
||||
description: '通过接入 One API 来实现对各种大模型的支持'
|
||||
description: '部署和接入 OneAPI,实现对各种大模型的支持'
|
||||
icon: 'Api'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 730
|
||||
weight: 708
|
||||
---
|
||||
|
||||
* 默认情况下,FastGPT 只配置了 GPT 的 3 个模型,如果你需要接入其他模型,需要进行一些额外配置。
|
||||
* 默认情况下,FastGPT 只配置了 GPT 的模型,如果你需要接入其他模型,需要进行一些额外配置。
|
||||
* [One API](https://github.com/songquanpeng/one-api) 是一个 OpenAI 接口管理 & 分发系统,可以通过标准的 OpenAI API 格式访问所有的大模型,开箱即用。
|
||||
|
||||
FastGPT 可以通过接入 One API 来实现对各种大模型的支持。部署方法也很简单。
|
||||
* FastGPT 可以通过接入 OneAPI 来实现对不同大模型的支持。OneAPI 的部署方法也很简单。
|
||||
|
||||
## MySQL 版本
|
||||
|
||||
@@ -51,7 +50,7 @@ BATCH_UPDATE_ENABLED=true
|
||||
BATCH_UPDATE_INTERVAL=60
|
||||
```
|
||||
|
||||
## 使用步骤
|
||||
## One API使用步骤
|
||||
|
||||
### 1. 登录 One API
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
---
|
||||
weight: 560
|
||||
weight: 850
|
||||
title: "OpenAPI 接口文档"
|
||||
description: "FastGPT OpenAPI 文档"
|
||||
icon: api
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
---
|
||||
<!-- 850~900 -->
|
||||
@@ -4,7 +4,7 @@ description: 'FastGPT Api Key 使用与鉴权'
|
||||
icon: 'key'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 561
|
||||
weight: 851
|
||||
---
|
||||
|
||||
## 使用说明
|
||||
|
||||
@@ -4,7 +4,7 @@ description: 'FastGPT OpenAPI 对话接口'
|
||||
icon: 'chat'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 562
|
||||
weight: 852
|
||||
---
|
||||
|
||||
## 发起对话
|
||||
|
||||
@@ -4,7 +4,7 @@ description: 'FastGPT OpenAPI 知识库接口'
|
||||
icon: 'dataset'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 563
|
||||
weight: 853
|
||||
---
|
||||
|
||||
| 如何获取知识库ID(datasetId) | 如何获取文件集合ID(collection_id) |
|
||||
@@ -21,7 +21,9 @@ weight: 563
|
||||
curl --location --request POST 'https://fastgpt.run/api/support/wallet/bill/createTrainingBill' \
|
||||
--header 'Authorization: Bearer {{apikey}}' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data-raw ''
|
||||
--data-raw '{
|
||||
"name": "可选,自定义订单名称,例如:文档训练-fastgpt.docx"
|
||||
}'
|
||||
```
|
||||
|
||||
**响应结果**
|
||||
@@ -177,7 +179,7 @@ curl --location --request POST 'https://fastgpt.run/api/core/dataset/searchTest'
|
||||
{{< tab tabName="响应示例" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
返回 top limit 结果
|
||||
返回 top k 结果, limit 为预估条数,会按每条数据 800 tokens 的长度进行预估,20条也就是返回 16000 tokens 长度的数据,最多测试 30000 tokens 的数据。
|
||||
|
||||
```bash
|
||||
{
|
||||
|
||||
@@ -1,94 +1,181 @@
|
||||
---
|
||||
title: '分享链接鉴权'
|
||||
description: 'FastGPT 分享链接鉴权'
|
||||
title: '分享链接身份鉴权'
|
||||
description: 'FastGPT 分享链接身份鉴权'
|
||||
icon: 'share'
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 564
|
||||
weight: 860
|
||||
---
|
||||
|
||||
## 介绍
|
||||
|
||||
在 FastGPT V4.6.4 中,我们修改了分享链接的数据读取方式,为每个用户生成一个 localId,用于标识用户,从云端拉取对话记录。但是这种方式仅能保障用户在同一设备同一浏览器中使用,如果切换设备或者清空浏览器缓存则会丢失这些记录。这种方式存在一定的风险,因此我们仅允许用户拉取近`30天`的`20条`记录。
|
||||
|
||||
分享链接身份鉴权设计的目的在于,将 FastGPT 的对话框快速、安全的接入到你现有的系统中,仅需 2 个接口即可实现。
|
||||
|
||||
## 使用说明
|
||||
|
||||
分享链接鉴权设计的目的在于,将 FastGPT 的对话框安全的接入你现有的系统中。
|
||||
免登录链接配置中,你可以选择填写`身份验证`栏。这是一个`POST`请求的根地址。在填写该地址后,分享链接的初始化、开始对话以及对话结束都会向该地址的特定接口发送一条请求。下面以`host`来表示`凭身份验证根地址`。服务器接口仅需返回是否校验成功即可,不需要返回其他数据,格式如下:
|
||||
|
||||
免登录链接配置中,增加了`凭证校验服务器`后,使用分享链接时会向服务器发起请求,校验链接是否可用,并在每次对话结束后,向服务器发送对话结果。下面以`host`来表示`凭证校验服务器`。服务器接口仅需返回是否校验成功即可,不需要返回其他数据,格式如下:
|
||||
### 接口统一响应格式
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "错误提示",
|
||||
"msg": "同message, 错误提示"
|
||||
"msg": "同message, 错误提示",
|
||||
"data": {
|
||||
"uid": "用户唯一凭证"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`FastGPT` 将会判断`success`是否为`true`决定是允许用户继续操作。`message`与`msg`是等同的,你可以选择返回其中一个,当`success`不为`true`时,将会提示这个错误。
|
||||
|
||||
`uid`是用户的唯一凭证,将会用于拉取对话记录以及保存对话记录。可参考下方实践案例。
|
||||
|
||||
### 触发流程
|
||||
|
||||

|
||||
|
||||
## 配置校验地址和校验token
|
||||
|
||||
### 1. 配置校验地址的`BaseURL`、
|
||||
## 配置教程
|
||||
### 1. 配置身份校验地址
|
||||
|
||||

|
||||
|
||||
配置校验地址后,在每次分享链接使用时,都会向对应的地址发起校验和上报请求。
|
||||
|
||||
{{% alert icon="🤖" %}}
|
||||
这里仅需配置根地址,无需具体到完整请求路径。
|
||||
{{% /alert %}}
|
||||
|
||||
### 2. 分享链接中增加额外 query
|
||||
|
||||
在分享链接的地址中,增加一个额外的参数: authToken。例如:
|
||||
|
||||
原始的链接:https://fastgpt.run/chat/share?shareId=648aaf5ae121349a16d62192
|
||||
完整链接: https://fastgpt.run/chat/share?shareId=648aaf5ae121349a16d62192&authToken=userid12345
|
||||
原始的链接:`https://fastgpt.run/chat/share?shareId=648aaf5ae121349a16d62192`
|
||||
|
||||
这个`token`通常是你系统生成的,在发出校验请求时,FastGPT 会在`body`中携带 token={{authToken}} 的参数。
|
||||
完整链接: `https://fastgpt.run/chat/share?shareId=648aaf5ae121349a16d62192&authToken=userid12345`
|
||||
|
||||
## 聊天初始化校验
|
||||
这个`authToken`通常是你系统生成的用户唯一凭证(Token之类的)。FastGPT 会在鉴权接口的`body`中携带 token={{authToken}} 的参数。
|
||||
|
||||
**FastGPT 发出的请求**
|
||||
### 3. 编写聊天初始化校验接口
|
||||
|
||||
{{< tabs tabTotal="3" >}}
|
||||
{{< tab tabName="请求示例" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
```bash
|
||||
curl --location --request POST '{{host}}/shareAuth/init' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data-raw '{
|
||||
"token": "sintdolore"
|
||||
"token": "{{authToken}}"
|
||||
}'
|
||||
```
|
||||
|
||||
**响应示例**
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
|
||||
{{< tab tabName="鉴权成功" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"uid": "用户唯一凭证"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
系统会拉取该分享链接下,uid 为 username123 的对话记录。
|
||||
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
|
||||
{{< tab tabName="鉴权失败" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "分享链接无效",
|
||||
"message": "身份错误",
|
||||
}
|
||||
```
|
||||
|
||||
## 对话前校验
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
{{< /tabs >}}
|
||||
|
||||
**FastGPT 发出的请求**
|
||||
|
||||
|
||||
### 4. 编写对话前校验接口
|
||||
|
||||
{{< tabs tabTotal="3" >}}
|
||||
{{< tab tabName="请求示例" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
```bash
|
||||
curl --location --request POST '{{host}}/shareAuth/start' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data-raw '{
|
||||
"token": "sintdolore",
|
||||
"token": "{{authToken}}",
|
||||
"question": "用户问题",
|
||||
}'
|
||||
```
|
||||
|
||||
**响应示例**
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
|
||||
{{< tab tabName="鉴权成功" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true
|
||||
"success": true,
|
||||
"data": {
|
||||
"uid": "用户唯一凭证"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 对话结果上报
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
|
||||
{{< tab tabName="鉴权失败" >}}
|
||||
{{< markdownify >}}
|
||||
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "身份验证失败",
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "存在违规词",
|
||||
}
|
||||
```
|
||||
|
||||
{{< /markdownify >}}
|
||||
{{< /tab >}}
|
||||
{{< /tabs >}}
|
||||
|
||||
### 5. 编写对话结果上报接口(可选)
|
||||
|
||||
该接口无规定返回值。
|
||||
|
||||
响应值与[chat 接口格式相同](/docs/development/openapi/chat/#响应),仅多了一个`token`。
|
||||
|
||||
可以重点关注`responseData`里的`price`值,`price`与实际价格的倍率为`100000`,即 100000=1元。
|
||||
|
||||
```bash
|
||||
curl --location --request POST '{{host}}/shareAuth/finish' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data-raw '{
|
||||
"token": "sint dolore",
|
||||
"token": "{{authToken}}",
|
||||
"responseData": [
|
||||
{
|
||||
"moduleName": "KB Search",
|
||||
@@ -156,18 +243,18 @@ curl --location --request POST '{{host}}/shareAuth/finish' \
|
||||
}'
|
||||
```
|
||||
|
||||
响应值与 chat 接口相同,增加了一个 token。可以重点关注`responseData`里的值,price 与实际价格的倍率为`100000`。
|
||||
|
||||
**此接口无需响应值**
|
||||
|
||||
## 使用示例
|
||||
## 实践案例
|
||||
|
||||
我们以[Laf作为服务器为例](https://laf.dev/),展示这 3 个接口的使用方式。
|
||||
我们以[Laf作为服务器为例](https://laf.dev/),简单展示这 3 个接口的使用方式。
|
||||
|
||||
### 1. 创建3个Laf接口
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
{{< tabs tabTotal="3" >}}
|
||||
{{< tab tabName="/shareAuth/init" >}}
|
||||
{{< markdownify >}}
|
||||
@@ -179,13 +266,15 @@ import cloud from '@lafjs/cloud'
|
||||
|
||||
export default async function (ctx: FunctionContext) {
|
||||
const { token } = ctx.body
|
||||
|
||||
|
||||
// 此处省略 token 解码过程
|
||||
if (token === 'fastgpt') {
|
||||
return { success: true }
|
||||
return { success: true, data: { uid: "user1" } }
|
||||
}
|
||||
|
||||
return { success: false,message: "身份错误" }
|
||||
return { success: false,message:"身份错误" }
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
{{< /markdownify >}}
|
||||
@@ -201,8 +290,8 @@ import cloud from '@lafjs/cloud'
|
||||
|
||||
export default async function (ctx: FunctionContext) {
|
||||
const { token, question } = ctx.body
|
||||
console.log(token, question, 'start')
|
||||
|
||||
// 此处省略 token 解码过程
|
||||
if (token !== 'fastgpt') {
|
||||
return { success: false, message: "身份错误" }
|
||||
|
||||
@@ -212,8 +301,9 @@ export default async function (ctx: FunctionContext) {
|
||||
return { success: false, message: "内容不合规" }
|
||||
}
|
||||
|
||||
return { success: true }
|
||||
return { success: true, data: { uid: "user1" } }
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
{{< /markdownify >}}
|
||||
@@ -229,7 +319,12 @@ import cloud from '@lafjs/cloud'
|
||||
|
||||
export default async function (ctx: FunctionContext) {
|
||||
const { token, responseData } = ctx.body
|
||||
console.log(token,responseData,'=====')
|
||||
|
||||
const total = responseData.reduce((sum,item) => sum + item.price,0)
|
||||
const amount = total / 100000
|
||||
|
||||
// 省略数据库操作
|
||||
|
||||
return { }
|
||||
}
|
||||
```
|
||||
@@ -241,17 +336,24 @@ export default async function (ctx: FunctionContext) {
|
||||
|
||||
### 2. 配置校验地址
|
||||
|
||||
我们随便复制3个地址中一个接口:https://d8dns0.laf.dev/shareAuth/finish , 去除 /shareAuth/finish 后填入 FastGPT 中: https://d8dns0.laf.dev
|
||||
我们随便复制3个地址中一个接口: `https://d8dns0.laf.dev/shareAuth/finish`, 去除`/shareAuth/finish`后填入`身份校验`:`https://d8dns0.laf.dev`
|
||||
|
||||

|
||||
|
||||
### 3. 修改分享链接参数
|
||||
|
||||
源分享链接:[https://fastgpt.run/chat/share?shareId=64be36376a438af0311e599c](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)
|
||||
修改后:`https://fastgpt.run/chat/share?shareId=64be36376a438af0311e599c&authToken=fastgpt`
|
||||
|
||||
### 4. 测试效果
|
||||
|
||||
1. 打开源链接或者`authToken`不等于 `fastgpt`的链接会提示身份错误。
|
||||
2. 发送内容中包含你字,会提示内容不合规。
|
||||
1. 打开源链接或者`authToken`不等于`fastgpt`的链接会提示身份错误。
|
||||
2. 发送内容中包含你字,会提示内容不合规。
|
||||
|
||||
|
||||
## 使用场景
|
||||
|
||||
这个鉴权方式通常是帮助你直接嵌入`分享链接`到你的应用中,在你的应用打开分享链接前,应做`authToken`的拼接后再打开。
|
||||
|
||||
除了对接已有系统的用户外,你还可以对接`余额`功能,通过`结果上报`接口扣除用户余额,通过`对话前校验`接口检查用户的余额。
|
||||
9
docSite/content/docs/development/proxy/_index.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
weight: 950
|
||||
title: "代理方案"
|
||||
description: "FastGPT 私有化部署代理方案"
|
||||
icon: wify_proxy
|
||||
draft: false
|
||||
images: []
|
||||
---
|
||||
<!-- 950~960 -->
|
||||
@@ -4,7 +4,7 @@ description: "使用 Cloudflare Worker 实现中转"
|
||||
icon: "foggy"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 742
|
||||
weight: 953
|
||||
---
|
||||
|
||||
[参考 "不做了睡觉" 的教程](https://gravel-twister-d32.notion.site/FastGPT-API-ba7bb261d5fd4fd9bbb2f0607dacdc9e)
|
||||
@@ -4,7 +4,7 @@ description: "使用 HTTP 代理实现中转"
|
||||
icon: "http"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 743
|
||||
weight: 952
|
||||
---
|
||||
|
||||
如果你有代理工具(例如 [Clash](https://github.com/Dreamacro/clash) 或者 [sing-box](https://github.com/SagerNet/sing-box)),也可以使用 HTTP 代理来访问 OpenAI。只需要添加以下两个环境变量即可:
|
||||
@@ -4,7 +4,7 @@ description: "使用 Sealos 部署 Nginx 实现中转"
|
||||
icon: "cloud_sync"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 741
|
||||
weight: 951
|
||||
---
|
||||
|
||||
## 登录 Sealos
|
||||
194
docSite/content/docs/development/sealos.md
Normal file
@@ -0,0 +1,194 @@
|
||||
---
|
||||
title: "Sealos 一键部署"
|
||||
description: "使用 Sealos 一键部署 FastGPT"
|
||||
icon: "cloud"
|
||||
draft: false
|
||||
toc: true
|
||||
weight: 706
|
||||
---
|
||||
|
||||
Sealos 的服务器在国外,不需要额外处理网络问题,无需服务器、无需魔法、无需域名,支持高并发 & 动态伸缩。点击以下按钮即可一键部署 👇
|
||||
|
||||
[](https://cloud.sealos.io/?openapp=system-fastdeploy%3FtemplateName%3Dfastgpt)
|
||||
|
||||
由于需要部署数据库,部署完后需要等待 2~4 分钟才能正常访问。默认用了最低配置,首次访问时会有些慢。
|
||||
|
||||

|
||||
|
||||
点击 Sealos 提供的外网地址即可打开 FastGPT 的可视化界面。
|
||||
|
||||

|
||||
|
||||
> 用户名:`root`
|
||||
>
|
||||
> 密码就是刚刚一键部署时设置的环境变量
|
||||
|
||||
## 修改配置文件和环境变量
|
||||
|
||||
在 Sealos 中,你可以打开`应用管理`(App Launchpad)看到部署的 FastGPT,可以打开`数据库`(Database)看到对应的数据库。
|
||||
|
||||
在`应用管理`中,选中 FastGPT,点击变更,可以看到对应的环境变量和配置文件。
|
||||
|
||||

|
||||
|
||||
{{% alert icon="🤖 " context="success" %}}
|
||||
在 Sealos 上,FastGPT 一共运行了 1 个服务和 2 个数据库,如暂停和删除请注意数据库一同操作。(你可以白天启动,晚上暂停它们,省钱大法)
|
||||
{{% /alert %}}
|
||||
|
||||
## 更新
|
||||
|
||||
点击重启会自动拉取最新镜像更新,请确保镜像`tag`正确。
|
||||
|
||||
## 部署架构图
|
||||
|
||||

|
||||
|
||||
## Sealos 使用
|
||||
|
||||
### 简介
|
||||
|
||||
FastGPT 商业版共包含了3个应用(fastgpt, fastgpt-plus, fastgpt-admin)和2个数据库,使用多 Api Key 时候需要安装 OneAPI(一个应用和一个数据库),总计4个应用和3个数据库。
|
||||
|
||||

|
||||
|
||||
点击右侧的详情,可以查看对应应用的详细信息。
|
||||
|
||||
### 如何更新/升级 FastGPT
|
||||
[升级脚本文档](https://doc.fastgpt.in/docs/development/upgrading/)先看下文档,看下需要升级哪个版本。注意,不要跨版本升级!!!!!
|
||||
|
||||
例如,目前是4.5 版本,要升级到4.5.1,就先把镜像版本改成v4.5.1,执行一下升级脚本,等待完成后再继续升级。如果目标版本不需要执行初始化,则可以跳过。
|
||||
|
||||
升级步骤:
|
||||
1. 打开sealos的应用管理
|
||||
2. 有3个应用 fastgpt , fastgpt-plugin 和 fastgpt-admin
|
||||
3. 点击对应应用右边3个点,变更。或者点详情后右上角的变更。
|
||||
4. 修改镜像名栏
|
||||

|
||||
|
||||
5. 点击变更/重启,会自动拉取最新镜像进行更新
|
||||
6. 执行对应版本的初始化脚本
|
||||
|
||||
### 如何获取 FastGPT 访问链接
|
||||
|
||||
打开对应的应用,点击外网访问地址。
|
||||
|
||||

|
||||
|
||||
### 配置自定义域名
|
||||
|
||||
点击对应应用的变更->点击自定义域名->填写域名-> 操作域名 Cname -> 确认 -> 确认变。
|
||||
|
||||

|
||||
|
||||
### 如何修改配置文件
|
||||
|
||||
打开 Sealos 的应用管理 -> 找到对应的应用 -> 变更 -> 往下拉到高级配置,里面有个配置文件 -> 新增或点击对应的配置文件可以进行编辑 -> 点击右上角确认变。
|
||||
|
||||

|
||||
|
||||
[配置文件参考](https://doc.fastgpt.in/docs/development/configuration/)
|
||||
|
||||
FeConfig 参考下面(目前未做可视化)
|
||||
```
|
||||
"FeConfig": {
|
||||
"show_emptyChat": false, // 是否展示聊天时空白的内容
|
||||
"show_register": true, // 展示注册按键
|
||||
"show_appStore": false, // 应用市场(暂时不可用)
|
||||
"show_contact": false, // 联系方式(目前不可配置,直接false)
|
||||
"show_git": false, // 展示 github
|
||||
"show_doc": false, // 展示文档
|
||||
"show_pay": true, // 展示支付
|
||||
"show_openai_account": false, // 用户可自定义 openai key
|
||||
"show_promotion": false, // 邀请好友机制
|
||||
"docUrl": "https://doc.fastgpt.in", // 文档基本地址
|
||||
"systemTitle": "FastGPT", // 系统的 title
|
||||
"googleClientVerKey": "", // 谷歌 v3 校验前端凭证
|
||||
"isPlus": true, // 直接设置 true
|
||||
"oauth": { // oauth登录
|
||||
"github": "",
|
||||
"google": ""
|
||||
},
|
||||
"limit": {
|
||||
"exportLimitMinutes": 0 // 导出间隔限制
|
||||
},
|
||||
"scripts": [
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 修改站点名称以及 favicon
|
||||
修改应用的环境变量,增加
|
||||
|
||||
```
|
||||
SYSTEM_NAME=FastGPT
|
||||
SYSTEM_FAVICON=/favicon.ico
|
||||
HOME_URL=/app/list
|
||||
```
|
||||
|
||||
SYSTEM_FAVICON 可以是一个网络地址
|
||||
|
||||

|
||||
|
||||
### 挂载logo
|
||||
目前暂时无法 把浏览器上的logo替换。仅支持svg,待后续可视化做了后可以全部替换。
|
||||
新增一个挂载文件,文件名为:/app/projects/app/public/icon/logo.svg ,值为 svg 对应的值。
|
||||
|
||||

|
||||

|
||||
|
||||
### 管理后台
|
||||
|
||||

|
||||
|
||||
|
||||
### 商业版镜像配置文件
|
||||
|
||||
```
|
||||
{
|
||||
"license": "",
|
||||
"system": {
|
||||
"title": "" // 系统名称
|
||||
},
|
||||
"censor": {
|
||||
"BAIDU_TEXT_CENSOR_CLIENTID": "", // 百度文本安全校验
|
||||
"BAIDU_TEXT_CENSOR_CLIENTSECRET": "" // 百度文本安全校验
|
||||
},
|
||||
"auth": {
|
||||
"googleServiceVerKey": "", // 谷歌 v3 校验
|
||||
"github": { // github oauth
|
||||
"clientId": "",
|
||||
"secret": ""
|
||||
},
|
||||
"google": { // google oauth
|
||||
"clientId": "",
|
||||
"secret": ""
|
||||
},
|
||||
"email": { // 注册邮箱配置
|
||||
"service": "qq",
|
||||
"user": "",
|
||||
"pass": ""
|
||||
},
|
||||
"phone": { // 阿里短信配置
|
||||
"SNED_PHONE_ACCESSKEYID": "",
|
||||
"SNED_PHONE_ACCESSSECRET": "",
|
||||
"SNED_PHONE_SIGNNAME": "",
|
||||
"SNED_PHONE_TEMPLATE": ""
|
||||
}
|
||||
},
|
||||
"pay": { // 微信支付配置
|
||||
"wx": {
|
||||
"WX_APPID": "",
|
||||
"WX_MCHID": "",
|
||||
"WX_V3_CODE": "",
|
||||
"WX_NOTIFY_URL": "",
|
||||
"WX_SERIAL_NO": "",
|
||||
"WX_PRIVATE_KEY": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### One API 使用
|
||||
|
||||
[参考 OneAPI 使用步骤](/docs/development/one-api/)
|
||||