This commit is contained in:
c121914yu
2025-04-17 05:08:06 +00:00
parent 1ac54b002e
commit 2a17afff73
12 changed files with 21615 additions and 223 deletions

View File

@@ -47,7 +47,7 @@ ollama serve #安装完成后,使用该命令启动服务</code>
ollama serve #安装完成后,同样启动服务</code> ollama serve #安装完成后,同样启动服务</code>
</pre></div><h4 id=windows>Windows <a href=#windows class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h4><p>在 Windows 系统中,你可以从 Ollama 官方网站 下载 Windows 版本的安装程序。下载完成后,运行安装程序,按照安装向导的提示完成安装。安装完成后,在命令提示符或 PowerShell 中启动服务:</p><div class=prism-codeblock><pre id=f9708e1 class=language-bash> </pre></div><h4 id=windows>Windows <a href=#windows class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h4><p>在 Windows 系统中,你可以从 Ollama 官方网站 下载 Windows 版本的安装程序。下载完成后,运行安装程序,按照安装向导的提示完成安装。安装完成后,在命令提示符或 PowerShell 中启动服务:</p><div class=prism-codeblock><pre id=f9708e1 class=language-bash>
<code>ollama serve #安装完成并启动服务后,你可以在浏览器中访问 http://localhost:11434 来验证 Ollama 是否安装成功。</code> <code>ollama serve #安装完成并启动服务后,你可以在浏览器中访问 http://localhost:11434 来验证 Ollama 是否安装成功。</code>
</pre></div><h4 id=补充说明>补充说明 <a href=#%e8%a1%a5%e5%85%85%e8%af%b4%e6%98%8e class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h4><p>如果你是采用的主机应用 Ollama 而不是镜像,需要确保你的 Ollama 可以监听0.0.0.0。</p><h5 id=1-linxu-系统>1. Linxu 系统 <a href=#1-linxu-%e7%b3%bb%e7%bb%9f class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h5><p>如果 Ollama 作为 systemd 服务运行,打开终端,编辑 Ollama 的 systemd 服务文件使用命令sudo systemctl edit ollama.service在[Service]部分添加Environment=&ldquo;OLLAMA_HOST=0.0.0.0&rdquo;。保存并退出编辑器然后执行sudo systemctl daemon - reload和sudo systemctl restart ollama使配置生效。</p><h5 id=2-macos-系统>2. MacOS 系统 <a href=#2-macos-%e7%b3%bb%e7%bb%9f class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h5><p>打开终端使用launchctl setenv ollama_host &ldquo;0.0.0.0"命令设置环境变量,然后重启 Ollama 应用程序以使更改生效。</p><h5 id=3-windows-系统>3. Windows 系统 <a href=#3-windows-%e7%b3%bb%e7%bb%9f class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h5><p>通过 “开始” 菜单或搜索栏打开 “编辑系统环境变量”,在 “系统属性” 窗口中点击 “环境变量”,在 “系统变量” 部分点击 “新建”创建一个名为OLLAMA_HOST的变量变量值设置为0.0.0.0,点击 “确定” 保存更改,最后从 “开始” 菜单重启 Ollama 应用程序。</p><h3 id=ollama-拉取模型镜像>Ollama 拉取模型镜像 <a href=#ollama-%e6%8b%89%e5%8f%96%e6%a8%a1%e5%9e%8b%e9%95%9c%e5%83%8f class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p>在安装 Ollama 后,本地是没有模型镜像的,需要自己去拉取 Ollama 中的模型镜像。命令如下:</p><div class=prism-codeblock><pre id=c725436 class=language-bash> </pre></div><h4 id=补充说明>补充说明 <a href=#%e8%a1%a5%e5%85%85%e8%af%b4%e6%98%8e class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h4><p>如果你是采用的主机应用 Ollama 而不是镜像,需要确保你的 Ollama 可以监听0.0.0.0。</p><h5 id=1-linxu-系统>1. Linxu 系统 <a href=#1-linxu-%e7%b3%bb%e7%bb%9f class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h5><p>如果 Ollama 作为 systemd 服务运行,打开终端,编辑 Ollama 的 systemd 服务文件使用命令sudo systemctl edit ollama.service在[Service]部分添加Environment=&ldquo;OLLAMA_HOST=0.0.0.0&rdquo;。保存并退出编辑器然后执行sudo systemctl daemon - reload和sudo systemctl restart ollama使配置生效。</p><h5 id=2-macos-系统>2. MacOS 系统 <a href=#2-macos-%e7%b3%bb%e7%bb%9f class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h5><p>打开终端使用launchctl setenv ollama_host &ldquo;0.0.0.0"命令设置环境变量,然后重启 Ollama 应用程序以使更改生效。</p><h5 id=3-windows-系统>3. Windows 系统 <a href=#3-windows-%e7%b3%bb%e7%bb%9f class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h5><p>通过 “开始” 菜单或搜索栏打开 “编辑系统环境变量”,在 “系统属性” 窗口中点击 “环境变量”,在 “系统变量” 部分点击 “新建”创建一个名为OLLAMA_HOST的变量变量值设置为0.0.0.0,点击 “确定” 保存更改,最后从 “开始” 菜单重启 Ollama 应用程序。</p><h3 id=ollama-拉取模型镜像>Ollama 拉取模型镜像 <a href=#ollama-%e6%8b%89%e5%8f%96%e6%a8%a1%e5%9e%8b%e9%95%9c%e5%83%8f class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p>在安装 Ollama 后,本地是没有模型镜像的,需要自己去拉取 Ollama 中的模型镜像。命令如下:</p><div class=prism-codeblock><pre id=c725436 class=language-bash>
<code># Docker 部署需要先进容器,命令为: docker exec -it &lt; Ollama 容器名 &gt; /bin/sh <code># Docker 部署需要先进容器,命令为: docker exec -it &lt; Ollama 容器名 &gt; /bin/sh
ollama pull &lt;模型名&gt;</code> ollama pull &lt;模型名&gt;</code>
</pre></div><p><img src=https://cdn.jsdelivr.net/gh/yangchuansheng/fastgpt-imgs@main/imgs/Ollama-pull.png alt loading=lazy class=medium-zoom-image></p><h3 id=测试通信>测试通信 <a href=#%e6%b5%8b%e8%af%95%e9%80%9a%e4%bf%a1 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p>在安装完成后,需要进行检测测试,首先进入 FastGPT 所在的容器,尝试访问自己的 Ollama ,命令如下:</p><div class=prism-codeblock><pre id=e834756 class=language-bash> </pre></div><p><img src=https://cdn.jsdelivr.net/gh/yangchuansheng/fastgpt-imgs@main/imgs/Ollama-pull.png alt loading=lazy class=medium-zoom-image></p><h3 id=测试通信>测试通信 <a href=#%e6%b5%8b%e8%af%95%e9%80%9a%e4%bf%a1 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p>在安装完成后,需要进行检测测试,首先进入 FastGPT 所在的容器,尝试访问自己的 Ollama ,命令如下:</p><div class=prism-codeblock><pre id=e834756 class=language-bash>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -43,43 +43,43 @@ Table of Contents</button><nav id=toc-mobile><ul class=dropdown-menu><li><ul><li
&#34;uid&#34;: &#34;用户唯一凭证&#34; &#34;uid&#34;: &#34;用户唯一凭证&#34;
} }
}</code> }</code>
</pre></div><p><code>FastGPT</code> 将会判断<code>success</code>是否为<code>true</code>决定是允许用户继续操作。<code>message</code><code>msg</code>是等同的,你可以选择返回其中一个,当<code>success</code>不为<code>true</code>时,将会提示这个错误。</p><p><code>uid</code>是用户的唯一凭证,将会用于拉取对话记录以及保存对话记录。可参考下方实践案例。</p><h3 id=触发流程>触发流程 <a href=#%e8%a7%a6%e5%8f%91%e6%b5%81%e7%a8%8b class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p><img src=https://cdn.jsdelivr.net/gh/yangchuansheng/fastgpt-imgs@main/imgs/sharelink_process.png alt loading=lazy class=medium-zoom-image></p><h2 id=配置教程>配置教程 <a href=#%e9%85%8d%e7%bd%ae%e6%95%99%e7%a8%8b class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h2><h3 id=1-配置身份校验地址>1. 配置身份校验地址 <a href=#1-%e9%85%8d%e7%bd%ae%e8%ba%ab%e4%bb%bd%e6%a0%a1%e9%aa%8c%e5%9c%b0%e5%9d%80 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p><img src=https://cdn.jsdelivr.net/gh/yangchuansheng/fastgpt-imgs@main/imgs/share-setlink.png alt loading=lazy class=medium-zoom-image></p><p>配置校验地址后,在每次分享链接使用时,都会向对应的地址发起校验和上报请求。</p><div class="alert alert-default d-flex" role=alert><div class="flex-shrink-1 alert-icon"><p>🤖</p></div><div class=w-100><p>这里仅需配置根地址,无需具体到完整请求路径。</p></div></div><h3 id=2-分享链接中增加额外-query>2. 分享链接中增加额外 query <a href=#2-%e5%88%86%e4%ba%ab%e9%93%be%e6%8e%a5%e4%b8%ad%e5%a2%9e%e5%8a%a0%e9%a2%9d%e5%a4%96-query class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p>在分享链接的地址中,增加一个额外的参数: authToken。例如</p><p>原始的链接:<code>https://share.tryfastgpt.ai/chat/share?shareId=648aaf5ae121349a16d62192</code></p><p>完整链接: <code>https://share.tryfastgpt.ai/chat/share?shareId=648aaf5ae121349a16d62192&amp;authToken=userid12345</code></p><p>这个<code>authToken</code>通常是你系统生成的用户唯一凭证Token之类的。FastGPT 会在鉴权接口的<code>body</code>中携带 token={{authToken}} 的参数。</p><h3 id=3-编写聊天初始化校验接口>3. 编写聊天初始化校验接口 <a href=#3-%e7%bc%96%e5%86%99%e8%81%8a%e5%a4%a9%e5%88%9d%e5%a7%8b%e5%8c%96%e6%a0%a1%e9%aa%8c%e6%8e%a5%e5%8f%a3 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=febcadTab data-bs-toggle=tab data-bs-target=#febcad type=button role=tab aria-controls=febcad aria-selected=true>请求示例</a> </pre></div><p><code>FastGPT</code> 将会判断<code>success</code>是否为<code>true</code>决定是允许用户继续操作。<code>message</code><code>msg</code>是等同的,你可以选择返回其中一个,当<code>success</code>不为<code>true</code>时,将会提示这个错误。</p><p><code>uid</code>是用户的唯一凭证,将会用于拉取对话记录以及保存对话记录。可参考下方实践案例。</p><h3 id=触发流程>触发流程 <a href=#%e8%a7%a6%e5%8f%91%e6%b5%81%e7%a8%8b class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p><img src=https://cdn.jsdelivr.net/gh/yangchuansheng/fastgpt-imgs@main/imgs/sharelink_process.png alt loading=lazy class=medium-zoom-image></p><h2 id=配置教程>配置教程 <a href=#%e9%85%8d%e7%bd%ae%e6%95%99%e7%a8%8b class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h2><h3 id=1-配置身份校验地址>1. 配置身份校验地址 <a href=#1-%e9%85%8d%e7%bd%ae%e8%ba%ab%e4%bb%bd%e6%a0%a1%e9%aa%8c%e5%9c%b0%e5%9d%80 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p><img src=https://cdn.jsdelivr.net/gh/yangchuansheng/fastgpt-imgs@main/imgs/share-setlink.png alt loading=lazy class=medium-zoom-image></p><p>配置校验地址后,在每次分享链接使用时,都会向对应的地址发起校验和上报请求。</p><div class="alert alert-default d-flex" role=alert><div class="flex-shrink-1 alert-icon"><p>🤖</p></div><div class=w-100><p>这里仅需配置根地址,无需具体到完整请求路径。</p></div></div><h3 id=2-分享链接中增加额外-query>2. 分享链接中增加额外 query <a href=#2-%e5%88%86%e4%ba%ab%e9%93%be%e6%8e%a5%e4%b8%ad%e5%a2%9e%e5%8a%a0%e9%a2%9d%e5%a4%96-query class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p>在分享链接的地址中,增加一个额外的参数: authToken。例如</p><p>原始的链接:<code>https://share.tryfastgpt.ai/chat/share?shareId=648aaf5ae121349a16d62192</code></p><p>完整链接: <code>https://share.tryfastgpt.ai/chat/share?shareId=648aaf5ae121349a16d62192&amp;authToken=userid12345</code></p><p>这个<code>authToken</code>通常是你系统生成的用户唯一凭证Token之类的。FastGPT 会在鉴权接口的<code>body</code>中携带 token={{authToken}} 的参数。</p><h3 id=3-编写聊天初始化校验接口>3. 编写聊天初始化校验接口 <a href=#3-%e7%bc%96%e5%86%99%e8%81%8a%e5%a4%a9%e5%88%9d%e5%a7%8b%e5%8c%96%e6%a0%a1%e9%aa%8c%e6%8e%a5%e5%8f%a3 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=baefdcTab data-bs-toggle=tab data-bs-target=#baefdc type=button role=tab aria-controls=baefdc aria-selected=true>请求示例</a>
<a class=nav-link id=edcabfTab data-bs-toggle=tab data-bs-target=#edcabf type=button role=tab aria-controls=edcabf aria-selected=true>鉴权成功</a> <a class=nav-link id=febdcaTab data-bs-toggle=tab data-bs-target=#febdca type=button role=tab aria-controls=febdca aria-selected=true>鉴权成功</a>
<a class=nav-link id=becdafTab data-bs-toggle=tab data-bs-target=#becdaf type=button role=tab aria-controls=becdaf aria-selected=true>鉴权失败</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=febcad role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=39d214b class=language-bash> <a class=nav-link id=cafedbTab data-bs-toggle=tab data-bs-target=#cafedb type=button role=tab aria-controls=cafedb aria-selected=true>鉴权失败</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=baefdc role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=39d214b class=language-bash>
<code>curl --location --request POST &#39;{{host}}/shareAuth/init&#39; \ <code>curl --location --request POST &#39;{{host}}/shareAuth/init&#39; \
--header &#39;Content-Type: application/json&#39; \ --header &#39;Content-Type: application/json&#39; \
--data-raw &#39;{ --data-raw &#39;{
&#34;token&#34;: &#34;{{authToken}}&#34; &#34;token&#34;: &#34;{{authToken}}&#34;
}&#39;</code> }&#39;</code>
</pre></div></div><div class="tab-pane fade" id=edcabf role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=d6c7899 class=language-json> </pre></div></div><div class="tab-pane fade" id=febdca role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=d6c7899 class=language-json>
<code>{ <code>{
&#34;success&#34;: true, &#34;success&#34;: true,
&#34;data&#34;: { &#34;data&#34;: {
&#34;uid&#34;: &#34;用户唯一凭证&#34; &#34;uid&#34;: &#34;用户唯一凭证&#34;
} }
}</code> }</code>
</pre></div><p>系统会拉取该分享链接下uid 为 username123 的对话记录。</p></div><div class="tab-pane fade" id=becdaf role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=3297f92 class=language-json> </pre></div><p>系统会拉取该分享链接下uid 为 username123 的对话记录。</p></div><div class="tab-pane fade" id=cafedb role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=3297f92 class=language-json>
<code>{ <code>{
&#34;success&#34;: false, &#34;success&#34;: false,
&#34;message&#34;: &#34;身份错误&#34;, &#34;message&#34;: &#34;身份错误&#34;,
}</code> }</code>
</pre></div></div></div><h3 id=4-编写对话前校验接口>4. 编写对话前校验接口 <a href=#4-%e7%bc%96%e5%86%99%e5%af%b9%e8%af%9d%e5%89%8d%e6%a0%a1%e9%aa%8c%e6%8e%a5%e5%8f%a3 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=aecdbfTab data-bs-toggle=tab data-bs-target=#aecdbf type=button role=tab aria-controls=aecdbf aria-selected=true>请求示例</a> </pre></div></div></div><h3 id=4-编写对话前校验接口>4. 编写对话前校验接口 <a href=#4-%e7%bc%96%e5%86%99%e5%af%b9%e8%af%9d%e5%89%8d%e6%a0%a1%e9%aa%8c%e6%8e%a5%e5%8f%a3 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=ecfbdaTab data-bs-toggle=tab data-bs-target=#ecfbda type=button role=tab aria-controls=ecfbda aria-selected=true>请求示例</a>
<a class=nav-link id=ecbadfTab data-bs-toggle=tab data-bs-target=#ecbadf type=button role=tab aria-controls=ecbadf aria-selected=true>鉴权成功</a> <a class=nav-link id=bcfdaeTab data-bs-toggle=tab data-bs-target=#bcfdae type=button role=tab aria-controls=bcfdae aria-selected=true>鉴权成功</a>
<a class=nav-link id=bafdceTab data-bs-toggle=tab data-bs-target=#bafdce type=button role=tab aria-controls=bafdce aria-selected=true>鉴权失败</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=aecdbf role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=40c1d59 class=language-bash> <a class=nav-link id=fbedacTab data-bs-toggle=tab data-bs-target=#fbedac type=button role=tab aria-controls=fbedac aria-selected=true>鉴权失败</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=ecfbda role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=40c1d59 class=language-bash>
<code>curl --location --request POST &#39;{{host}}/shareAuth/start&#39; \ <code>curl --location --request POST &#39;{{host}}/shareAuth/start&#39; \
--header &#39;Content-Type: application/json&#39; \ --header &#39;Content-Type: application/json&#39; \
--data-raw &#39;{ --data-raw &#39;{
&#34;token&#34;: &#34;{{authToken}}&#34;, &#34;token&#34;: &#34;{{authToken}}&#34;,
&#34;question&#34;: &#34;用户问题&#34;, &#34;question&#34;: &#34;用户问题&#34;,
}&#39;</code> }&#39;</code>
</pre></div></div><div class="tab-pane fade" id=ecbadf role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=d6c7899 class=language-json> </pre></div></div><div class="tab-pane fade" id=bcfdae role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=d6c7899 class=language-json>
<code>{ <code>{
&#34;success&#34;: true, &#34;success&#34;: true,
&#34;data&#34;: { &#34;data&#34;: {
&#34;uid&#34;: &#34;用户唯一凭证&#34; &#34;uid&#34;: &#34;用户唯一凭证&#34;
} }
}</code> }</code>
</pre></div></div><div class="tab-pane fade" id=bafdce role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=23a56e7 class=language-json> </pre></div></div><div class="tab-pane fade" id=fbedac role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=23a56e7 class=language-json>
<code>{ <code>{
&#34;success&#34;: false, &#34;success&#34;: false,
&#34;message&#34;: &#34;身份验证失败&#34;, &#34;message&#34;: &#34;身份验证失败&#34;,
@@ -202,9 +202,9 @@ Table of Contents</button><nav id=toc-mobile><ul class=dropdown-menu><li><ul><li
isElseResult?: boolean; // 判断器结果 isElseResult?: boolean; // 判断器结果
}</code> }</code>
</pre></div><h2 id=实践案例>实践案例 <a href=#%e5%ae%9e%e8%b7%b5%e6%a1%88%e4%be%8b class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h2><p>我们以<a href=https://laf.dev/ rel=external target=_blank>Laf作为服务器为例<svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentcolor" d="M14 5c-.552.0-1-.448-1-1s.448-1 1-1h6c.552.0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1V6.414l-7.293 7.293c-.391.39-1.024.39-1.414.0-.391-.391-.391-1.024.0-1.414L17.586 5H14zM5 7c-.552.0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552.0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1V19c0 1.657-1.343 3-3 3H5c-1.657.0-3-1.343-3-3V8c0-1.657 1.343-3 3-3h4.563c.552.0 1 .448 1 1s-.448 1-1 1H5z"/></svg></a>,简单展示这 3 个接口的使用方式。</p><h3 id=1-创建3个laf接口>1. 创建3个Laf接口 <a href=#1-%e5%88%9b%e5%bb%ba3%e4%b8%aalaf%e6%8e%a5%e5%8f%a3 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p><img src=https://cdn.jsdelivr.net/gh/yangchuansheng/fastgpt-imgs@main/imgs/share-auth1.png alt loading=lazy class=medium-zoom-image></p><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=fedbacTab data-bs-toggle=tab data-bs-target=#fedbac type=button role=tab aria-controls=fedbac aria-selected=true>/shareAuth/init</a> </pre></div><h2 id=实践案例>实践案例 <a href=#%e5%ae%9e%e8%b7%b5%e6%a1%88%e4%be%8b class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h2><p>我们以<a href=https://laf.dev/ rel=external target=_blank>Laf作为服务器为例<svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentcolor" d="M14 5c-.552.0-1-.448-1-1s.448-1 1-1h6c.552.0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1V6.414l-7.293 7.293c-.391.39-1.024.39-1.414.0-.391-.391-.391-1.024.0-1.414L17.586 5H14zM5 7c-.552.0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552.0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1V19c0 1.657-1.343 3-3 3H5c-1.657.0-3-1.343-3-3V8c0-1.657 1.343-3 3-3h4.563c.552.0 1 .448 1 1s-.448 1-1 1H5z"/></svg></a>,简单展示这 3 个接口的使用方式。</p><h3 id=1-创建3个laf接口>1. 创建3个Laf接口 <a href=#1-%e5%88%9b%e5%bb%ba3%e4%b8%aalaf%e6%8e%a5%e5%8f%a3 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p><img src=https://cdn.jsdelivr.net/gh/yangchuansheng/fastgpt-imgs@main/imgs/share-auth1.png alt loading=lazy class=medium-zoom-image></p><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=cdefbaTab data-bs-toggle=tab data-bs-target=#cdefba type=button role=tab aria-controls=cdefba aria-selected=true>/shareAuth/init</a>
<a class=nav-link id=fedcabTab data-bs-toggle=tab data-bs-target=#fedcab type=button role=tab aria-controls=fedcab aria-selected=true>/shareAuth/start</a> <a class=nav-link id=aefcdbTab data-bs-toggle=tab data-bs-target=#aefcdb type=button role=tab aria-controls=aefcdb aria-selected=true>/shareAuth/start</a>
<a class=nav-link id=acbefdTab data-bs-toggle=tab data-bs-target=#acbefd type=button role=tab aria-controls=acbefd aria-selected=true>/shareAuth/finish</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=fedbac role=tabpanel aria-labelledby=nav-1><p>这个接口中,我们设置了<code>token</code>必须等于<code>fastgpt</code>才能通过校验。(实际生产中不建议固定写死)</p><div class=prism-codeblock><pre id=ba0b6c9 class=language-ts> <a class=nav-link id=bdafecTab data-bs-toggle=tab data-bs-target=#bdafec type=button role=tab aria-controls=bdafec aria-selected=true>/shareAuth/finish</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=cdefba role=tabpanel aria-labelledby=nav-1><p>这个接口中,我们设置了<code>token</code>必须等于<code>fastgpt</code>才能通过校验。(实际生产中不建议固定写死)</p><div class=prism-codeblock><pre id=ba0b6c9 class=language-ts>
<code>import cloud from &#39;@lafjs/cloud&#39; <code>import cloud from &#39;@lafjs/cloud&#39;
export default async function (ctx: FunctionContext) { export default async function (ctx: FunctionContext) {
@@ -217,7 +217,7 @@ export default async function (ctx: FunctionContext) {
return { success: false,message:&#34;身份错误&#34; } return { success: false,message:&#34;身份错误&#34; }
}</code> }</code>
</pre></div></div><div class="tab-pane fade" id=fedcab role=tabpanel aria-labelledby=nav-1><p>这个接口中,我们设置了<code>token</code>必须等于<code>fastgpt</code>才能通过校验。并且如果问题中包含了<code></code>字,则会报错,用于模拟敏感校验。</p><div class=prism-codeblock><pre id=cf82db5 class=language-ts> </pre></div></div><div class="tab-pane fade" id=aefcdb role=tabpanel aria-labelledby=nav-1><p>这个接口中,我们设置了<code>token</code>必须等于<code>fastgpt</code>才能通过校验。并且如果问题中包含了<code></code>字,则会报错,用于模拟敏感校验。</p><div class=prism-codeblock><pre id=cf82db5 class=language-ts>
<code>import cloud from &#39;@lafjs/cloud&#39; <code>import cloud from &#39;@lafjs/cloud&#39;
export default async function (ctx: FunctionContext) { export default async function (ctx: FunctionContext) {
@@ -235,7 +235,7 @@ export default async function (ctx: FunctionContext) {
return { success: true, data: { uid: &#34;user1&#34; } } return { success: true, data: { uid: &#34;user1&#34; } }
}</code> }</code>
</pre></div></div><div class="tab-pane fade" id=acbefd role=tabpanel aria-labelledby=nav-1><p>结果上报接口可自行进行逻辑处理。</p><div class=prism-codeblock><pre id=b3696df class=language-ts> </pre></div></div><div class="tab-pane fade" id=bdafec role=tabpanel aria-labelledby=nav-1><p>结果上报接口可自行进行逻辑处理。</p><div class=prism-codeblock><pre id=b3696df class=language-ts>
<code>import cloud from &#39;@lafjs/cloud&#39; <code>import cloud from &#39;@lafjs/cloud&#39;
export default async function (ctx: FunctionContext) { export default async function (ctx: FunctionContext) {

View File

@@ -160,12 +160,12 @@ Table of Contents</button><nav id=toc-mobile><ul class=dropdown-menu><li><ul><li
- OAUTH2_MEMBER_NAME_MAP= - OAUTH2_MEMBER_NAME_MAP=
# OAuth2 联系方式字段映射(选填) # OAuth2 联系方式字段映射(选填)
- OAUTH2_CONTACT_MAP=</code> - OAUTH2_CONTACT_MAP=</code>
</pre></div><h2 id=标准接口文档>标准接口文档 <a href=#%e6%a0%87%e5%87%86%e6%8e%a5%e5%8f%a3%e6%96%87%e6%a1%a3 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h2><p>以下是 FastGPT-pro 中SSO 和成员同步的标准接口文档,如果需要对接非标准系统,可以参考该章节进行开发。</p><p><img src=https://cdn.jsdelivr.net/gh/yangchuansheng/fastgpt-imgs@main/imgs/sso18.png alt loading=lazy class=medium-zoom-image></p><p>FastGPT 提供如下标准接口支持:</p><ol><li><a href=https://example.com/login/oauth/getAuthURL rel=external target=_blank>https://example.com/login/oauth/getAuthURL<svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentcolor" d="M14 5c-.552.0-1-.448-1-1s.448-1 1-1h6c.552.0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1V6.414l-7.293 7.293c-.391.39-1.024.39-1.414.0-.391-.391-.391-1.024.0-1.414L17.586 5H14zM5 7c-.552.0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552.0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1V19c0 1.657-1.343 3-3 3H5c-1.657.0-3-1.343-3-3V8c0-1.657 1.343-3 3-3h4.563c.552.0 1 .448 1 1s-.448 1-1 1H5z"/></svg></a> 获取鉴权重定向地址</li><li><a href="https://example.com/login/oauth/getUserInfo?code=xxxxx" rel=external target=_blank>https://example.com/login/oauth/getUserInfo?code=xxxxx<svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentcolor" d="M14 5c-.552.0-1-.448-1-1s.448-1 1-1h6c.552.0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1V6.414l-7.293 7.293c-.391.39-1.024.39-1.414.0-.391-.391-.391-1.024.0-1.414L17.586 5H14zM5 7c-.552.0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552.0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1V19c0 1.657-1.343 3-3 3H5c-1.657.0-3-1.343-3-3V8c0-1.657 1.343-3 3-3h4.563c.552.0 1 .448 1 1s-.448 1-1 1H5z"/></svg></a> 消费 code换取用户信息</li><li><a href=https://example.com/org/list rel=external target=_blank>https://example.com/org/list<svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentcolor" d="M14 5c-.552.0-1-.448-1-1s.448-1 1-1h6c.552.0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1V6.414l-7.293 7.293c-.391.39-1.024.39-1.414.0-.391-.391-.391-1.024.0-1.414L17.586 5H14zM5 7c-.552.0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552.0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1V19c0 1.657-1.343 3-3 3H5c-1.657.0-3-1.343-3-3V8c0-1.657 1.343-3 3-3h4.563c.552.0 1 .448 1 1s-.448 1-1 1H5z"/></svg></a> 获取组织列表</li><li><a href=https://example.com/user/list rel=external target=_blank>https://example.com/user/list<svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentcolor" d="M14 5c-.552.0-1-.448-1-1s.448-1 1-1h6c.552.0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1V6.414l-7.293 7.293c-.391.39-1.024.39-1.414.0-.391-.391-.391-1.024.0-1.414L17.586 5H14zM5 7c-.552.0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552.0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1V19c0 1.657-1.343 3-3 3H5c-1.657.0-3-1.343-3-3V8c0-1.657 1.343-3 3-3h4.563c.552.0 1 .448 1 1s-.448 1-1 1H5z"/></svg></a> 获取成员列表</li></ol><h3 id=获取-sso-登录重定向地址>获取 SSO 登录重定向地址 <a href=#%e8%8e%b7%e5%8f%96-sso-%e7%99%bb%e5%bd%95%e9%87%8d%e5%ae%9a%e5%90%91%e5%9c%b0%e5%9d%80 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p>返回一个重定向登录地址fastgpt 会自动重定向到该地址。redirect_uri 会自动拼接到该地址的 query中。</p><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=fdebacTab data-bs-toggle=tab data-bs-target=#fdebac type=button role=tab aria-controls=fdebac aria-selected=true>请求示例</a> </pre></div><h2 id=标准接口文档>标准接口文档 <a href=#%e6%a0%87%e5%87%86%e6%8e%a5%e5%8f%a3%e6%96%87%e6%a1%a3 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h2><p>以下是 FastGPT-pro 中SSO 和成员同步的标准接口文档,如果需要对接非标准系统,可以参考该章节进行开发。</p><p><img src=https://cdn.jsdelivr.net/gh/yangchuansheng/fastgpt-imgs@main/imgs/sso18.png alt loading=lazy class=medium-zoom-image></p><p>FastGPT 提供如下标准接口支持:</p><ol><li><a href=https://example.com/login/oauth/getAuthURL rel=external target=_blank>https://example.com/login/oauth/getAuthURL<svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentcolor" d="M14 5c-.552.0-1-.448-1-1s.448-1 1-1h6c.552.0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1V6.414l-7.293 7.293c-.391.39-1.024.39-1.414.0-.391-.391-.391-1.024.0-1.414L17.586 5H14zM5 7c-.552.0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552.0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1V19c0 1.657-1.343 3-3 3H5c-1.657.0-3-1.343-3-3V8c0-1.657 1.343-3 3-3h4.563c.552.0 1 .448 1 1s-.448 1-1 1H5z"/></svg></a> 获取鉴权重定向地址</li><li><a href="https://example.com/login/oauth/getUserInfo?code=xxxxx" rel=external target=_blank>https://example.com/login/oauth/getUserInfo?code=xxxxx<svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentcolor" d="M14 5c-.552.0-1-.448-1-1s.448-1 1-1h6c.552.0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1V6.414l-7.293 7.293c-.391.39-1.024.39-1.414.0-.391-.391-.391-1.024.0-1.414L17.586 5H14zM5 7c-.552.0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552.0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1V19c0 1.657-1.343 3-3 3H5c-1.657.0-3-1.343-3-3V8c0-1.657 1.343-3 3-3h4.563c.552.0 1 .448 1 1s-.448 1-1 1H5z"/></svg></a> 消费 code换取用户信息</li><li><a href=https://example.com/org/list rel=external target=_blank>https://example.com/org/list<svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentcolor" d="M14 5c-.552.0-1-.448-1-1s.448-1 1-1h6c.552.0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1V6.414l-7.293 7.293c-.391.39-1.024.39-1.414.0-.391-.391-.391-1.024.0-1.414L17.586 5H14zM5 7c-.552.0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552.0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1V19c0 1.657-1.343 3-3 3H5c-1.657.0-3-1.343-3-3V8c0-1.657 1.343-3 3-3h4.563c.552.0 1 .448 1 1s-.448 1-1 1H5z"/></svg></a> 获取组织列表</li><li><a href=https://example.com/user/list rel=external target=_blank>https://example.com/user/list<svg width="16" height="16" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path fill="currentcolor" d="M14 5c-.552.0-1-.448-1-1s.448-1 1-1h6c.552.0 1 .448 1 1v6c0 .552-.448 1-1 1s-1-.448-1-1V6.414l-7.293 7.293c-.391.39-1.024.39-1.414.0-.391-.391-.391-1.024.0-1.414L17.586 5H14zM5 7c-.552.0-1 .448-1 1v11c0 .552.448 1 1 1h11c.552.0 1-.448 1-1v-4.563c0-.552.448-1 1-1s1 .448 1 1V19c0 1.657-1.343 3-3 3H5c-1.657.0-3-1.343-3-3V8c0-1.657 1.343-3 3-3h4.563c.552.0 1 .448 1 1s-.448 1-1 1H5z"/></svg></a> 获取成员列表</li></ol><h3 id=获取-sso-登录重定向地址>获取 SSO 登录重定向地址 <a href=#%e8%8e%b7%e5%8f%96-sso-%e7%99%bb%e5%bd%95%e9%87%8d%e5%ae%9a%e5%90%91%e5%9c%b0%e5%9d%80 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p>返回一个重定向登录地址fastgpt 会自动重定向到该地址。redirect_uri 会自动拼接到该地址的 query中。</p><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=afedcbTab data-bs-toggle=tab data-bs-target=#afedcb type=button role=tab aria-controls=afedcb aria-selected=true>请求示例</a>
<a class=nav-link id=dfeacbTab data-bs-toggle=tab data-bs-target=#dfeacb type=button role=tab aria-controls=dfeacb aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=fdebac role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=3970eeb class=language-bash> <a class=nav-link id=bcdaefTab data-bs-toggle=tab data-bs-target=#bcdaef type=button role=tab aria-controls=bcdaef aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=afedcb role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=3970eeb class=language-bash>
<code>curl -X GET &#34;https://redict.example/login/oauth/getAuthURL?redirect_uri=xxx&amp;state=xxxx&#34; \ <code>curl -X GET &#34;https://redict.example/login/oauth/getAuthURL?redirect_uri=xxx&amp;state=xxxx&#34; \
-H &#34;Authorization: Bearer your_token_here&#34; \ -H &#34;Authorization: Bearer your_token_here&#34; \
-H &#34;Content-Type: application/json&#34;</code> -H &#34;Content-Type: application/json&#34;</code>
</pre></div></div><div class="tab-pane fade" id=dfeacb role=tabpanel aria-labelledby=nav-1><p>成功:</p><div class=prism-codeblock><pre id=8296736 class=language-JSON> </pre></div></div><div class="tab-pane fade" id=bcdaef role=tabpanel aria-labelledby=nav-1><p>成功:</p><div class=prism-codeblock><pre id=8296736 class=language-JSON>
<code>{ <code>{
&#34;success&#34;: true, &#34;success&#34;: true,
&#34;message&#34;: &#34;&#34;, &#34;message&#34;: &#34;&#34;,
@@ -177,12 +177,12 @@ Table of Contents</button><nav id=toc-mobile><ul class=dropdown-menu><li><ul><li
&#34;message&#34;: &#34;错误信息&#34;, &#34;message&#34;: &#34;错误信息&#34;,
&#34;authURL&#34;: &#34;&#34; &#34;authURL&#34;: &#34;&#34;
}</code> }</code>
</pre></div></div></div><h3 id=sso-获取用户信息>SSO 获取用户信息 <a href=#sso-%e8%8e%b7%e5%8f%96%e7%94%a8%e6%88%b7%e4%bf%a1%e6%81%af class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p>该接口接受一个 code 参数作为鉴权,消费 code 返回用户信息。</p><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=acdefbTab data-bs-toggle=tab data-bs-target=#acdefb type=button role=tab aria-controls=acdefb aria-selected=true>请求示例</a> </pre></div></div></div><h3 id=sso-获取用户信息>SSO 获取用户信息 <a href=#sso-%e8%8e%b7%e5%8f%96%e7%94%a8%e6%88%b7%e4%bf%a1%e6%81%af class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><p>该接口接受一个 code 参数作为鉴权,消费 code 返回用户信息。</p><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=badecfTab data-bs-toggle=tab data-bs-target=#badecf type=button role=tab aria-controls=badecf aria-selected=true>请求示例</a>
<a class=nav-link id=dbaecfTab data-bs-toggle=tab data-bs-target=#dbaecf type=button role=tab aria-controls=dbaecf aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=acdefb role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=532f1a3 class=language-bash> <a class=nav-link id=bfaecdTab data-bs-toggle=tab data-bs-target=#bfaecd type=button role=tab aria-controls=bfaecd aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=badecf role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=532f1a3 class=language-bash>
<code>curl -X GET &#34;https://oauth.example/login/oauth/getUserInfo?code=xxxxxx&#34; \ <code>curl -X GET &#34;https://oauth.example/login/oauth/getUserInfo?code=xxxxxx&#34; \
-H &#34;Authorization: Bearer your_token_here&#34; \ -H &#34;Authorization: Bearer your_token_here&#34; \
-H &#34;Content-Type: application/json&#34;</code> -H &#34;Content-Type: application/json&#34;</code>
</pre></div></div><div class="tab-pane fade" id=dbaecf role=tabpanel aria-labelledby=nav-1><p>成功:</p><div class=prism-codeblock><pre id=71afe34 class=language-JSON> </pre></div></div><div class="tab-pane fade" id=bfaecd role=tabpanel aria-labelledby=nav-1><p>成功:</p><div class=prism-codeblock><pre id=71afe34 class=language-JSON>
<code>{ <code>{
&#34;success&#34;: true, &#34;success&#34;: true,
&#34;message&#34;: &#34;&#34;, &#34;message&#34;: &#34;&#34;,
@@ -199,12 +199,12 @@ Table of Contents</button><nav id=toc-mobile><ul class=dropdown-menu><li><ul><li
&#34;avatar&#34;: &#34;&#34;, &#34;avatar&#34;: &#34;&#34;,
&#34;contact&#34;: &#34;&#34; &#34;contact&#34;: &#34;&#34;
}</code> }</code>
</pre></div></div></div><h3 id=获取组织>获取组织 <a href=#%e8%8e%b7%e5%8f%96%e7%bb%84%e7%bb%87 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=becafdTab data-bs-toggle=tab data-bs-target=#becafd type=button role=tab aria-controls=becafd aria-selected=true>请求示例</a> </pre></div></div></div><h3 id=获取组织>获取组织 <a href=#%e8%8e%b7%e5%8f%96%e7%bb%84%e7%bb%87 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=facdbeTab data-bs-toggle=tab data-bs-target=#facdbe type=button role=tab aria-controls=facdbe aria-selected=true>请求示例</a>
<a class=nav-link id=aebdfcTab data-bs-toggle=tab data-bs-target=#aebdfc type=button role=tab aria-controls=aebdfc aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=becafd role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=d289d9a class=language-bash> <a class=nav-link id=dfebcaTab data-bs-toggle=tab data-bs-target=#dfebca type=button role=tab aria-controls=dfebca aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=facdbe role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=d289d9a class=language-bash>
<code>curl -X GET &#34;https://example.com/org/list&#34; \ <code>curl -X GET &#34;https://example.com/org/list&#34; \
-H &#34;Authorization: Bearer your_token_here&#34; \ -H &#34;Authorization: Bearer your_token_here&#34; \
-H &#34;Content-Type: application/json&#34;</code> -H &#34;Content-Type: application/json&#34;</code>
</pre></div></div><div class="tab-pane fade" id=aebdfc role=tabpanel aria-labelledby=nav-1><p>⚠️注意:只能存在一个根部门。如果你的系统中存在多个根部门,需要先进行处理,加一个虚拟的根部门。返回值类型:</p><div class=prism-codeblock><pre id=5634349 class=language-ts> </pre></div></div><div class="tab-pane fade" id=dfebca role=tabpanel aria-labelledby=nav-1><p>⚠️注意:只能存在一个根部门。如果你的系统中存在多个根部门,需要先进行处理,加一个虚拟的根部门。返回值类型:</p><div class=prism-codeblock><pre id=5634349 class=language-ts>
<code>type OrgListResponseType = { <code>type OrgListResponseType = {
message?: string; // 报错信息 message?: string; // 报错信息
success: boolean; success: boolean;
@@ -231,12 +231,12 @@ Table of Contents</button><nav id=toc-mobile><ul class=dropdown-menu><li><ul><li
} }
] ]
}</code> }</code>
</pre></div></div></div><h3 id=获取成员>获取成员 <a href=#%e8%8e%b7%e5%8f%96%e6%88%90%e5%91%98 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=eacdfbTab data-bs-toggle=tab data-bs-target=#eacdfb type=button role=tab aria-controls=eacdfb aria-selected=true>请求示例</a> </pre></div></div></div><h3 id=获取成员>获取成员 <a href=#%e8%8e%b7%e5%8f%96%e6%88%90%e5%91%98 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=feabdcTab data-bs-toggle=tab data-bs-target=#feabdc type=button role=tab aria-controls=feabdc aria-selected=true>请求示例</a>
<a class=nav-link id=fedcbaTab data-bs-toggle=tab data-bs-target=#fedcba type=button role=tab aria-controls=fedcba aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=eacdfb role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=bc9e9ec class=language-bash> <a class=nav-link id=cadbfeTab data-bs-toggle=tab data-bs-target=#cadbfe type=button role=tab aria-controls=cadbfe aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=feabdc role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=bc9e9ec class=language-bash>
<code>curl -X GET &#34;https://example.com/user/list&#34; \ <code>curl -X GET &#34;https://example.com/user/list&#34; \
-H &#34;Authorization: Bearer your_token_here&#34; \ -H &#34;Authorization: Bearer your_token_here&#34; \
-H &#34;Content-Type: application/json&#34;</code> -H &#34;Content-Type: application/json&#34;</code>
</pre></div></div><div class="tab-pane fade" id=fedcba role=tabpanel aria-labelledby=nav-1><p>返回值类型:</p><div class=prism-codeblock><pre id=3f6bc41 class=language-typescript> </pre></div></div><div class="tab-pane fade" id=cadbfe role=tabpanel aria-labelledby=nav-1><p>返回值类型:</p><div class=prism-codeblock><pre id=3f6bc41 class=language-typescript>
<code>type UserListResponseListType = { <code>type UserListResponseListType = {
message?: string; // 报错信息 message?: string; // 报错信息
success: boolean; success: boolean;

File diff suppressed because one or more lines are too long

View File

@@ -50,8 +50,8 @@ type FileListItem = {
updateTime: Date; updateTime: Date;
createTime: Date; createTime: Date;
}</code> }</code>
</pre></div><h3 id=1-获取文件树>1. 获取文件树 <a href=#1-%e8%8e%b7%e5%8f%96%e6%96%87%e4%bb%b6%e6%a0%91 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=bceafdTab data-bs-toggle=tab data-bs-target=#bceafd type=button role=tab aria-controls=bceafd aria-selected=true>请求示例</a> </pre></div><h3 id=1-获取文件树>1. 获取文件树 <a href=#1-%e8%8e%b7%e5%8f%96%e6%96%87%e4%bb%b6%e6%a0%91 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=ebfcdaTab data-bs-toggle=tab data-bs-target=#ebfcda type=button role=tab aria-controls=ebfcda aria-selected=true>请求示例</a>
<a class=nav-link id=abecfdTab data-bs-toggle=tab data-bs-target=#abecfd type=button role=tab aria-controls=abecfd aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=bceafd role=tabpanel aria-labelledby=nav-1><div class="alert alert-success d-flex" role=alert><div class="flex-shrink-1 alert-icon"></div><div class=w-100><ul><li>parentId - 父级 id可选或者 null。</li><li>searchKey - 检索词,可选</li></ul></div></div><div class=prism-codeblock><pre id=04b20e5 class=language-bash> <a class=nav-link id=ebdacfTab data-bs-toggle=tab data-bs-target=#ebdacf type=button role=tab aria-controls=ebdacf aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=ebfcda role=tabpanel aria-labelledby=nav-1><div class="alert alert-success d-flex" role=alert><div class="flex-shrink-1 alert-icon"></div><div class=w-100><ul><li>parentId - 父级 id可选或者 null。</li><li>searchKey - 检索词,可选</li></ul></div></div><div class=prism-codeblock><pre id=04b20e5 class=language-bash>
<code>curl --location --request POST &#39;{{baseURL}}/v1/file/list&#39; \ <code>curl --location --request POST &#39;{{baseURL}}/v1/file/list&#39; \
--header &#39;Authorization: Bearer {{authorization}}&#39; \ --header &#39;Authorization: Bearer {{authorization}}&#39; \
--header &#39;Content-Type: application/json&#39; \ --header &#39;Content-Type: application/json&#39; \
@@ -59,7 +59,7 @@ type FileListItem = {
&#34;parentId&#34;: null, &#34;parentId&#34;: null,
&#34;searchKey&#34;: &#34;&#34; &#34;searchKey&#34;: &#34;&#34;
}&#39;</code> }&#39;</code>
</pre></div></div><div class="tab-pane fade" id=abecfd role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=ee58785 class=language-json> </pre></div></div><div class="tab-pane fade" id=ebdacf role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=ee58785 class=language-json>
<code>{ <code>{
&#34;code&#34;: 200, &#34;code&#34;: 200,
&#34;success&#34;: true, &#34;success&#34;: true,
@@ -75,12 +75,12 @@ type FileListItem = {
} }
] ]
}</code> }</code>
</pre></div></div></div><h3 id=2-获取单个文件内容文本内容或访问链接>2. 获取单个文件内容(文本内容或访问链接) <a href=#2-%e8%8e%b7%e5%8f%96%e5%8d%95%e4%b8%aa%e6%96%87%e4%bb%b6%e5%86%85%e5%ae%b9%e6%96%87%e6%9c%ac%e5%86%85%e5%ae%b9%e6%88%96%e8%ae%bf%e9%97%ae%e9%93%be%e6%8e%a5 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=eacdfbTab data-bs-toggle=tab data-bs-target=#eacdfb type=button role=tab aria-controls=eacdfb aria-selected=true>请求示例</a> </pre></div></div></div><h3 id=2-获取单个文件内容文本内容或访问链接>2. 获取单个文件内容(文本内容或访问链接) <a href=#2-%e8%8e%b7%e5%8f%96%e5%8d%95%e4%b8%aa%e6%96%87%e4%bb%b6%e5%86%85%e5%ae%b9%e6%96%87%e6%9c%ac%e5%86%85%e5%ae%b9%e6%88%96%e8%ae%bf%e9%97%ae%e9%93%be%e6%8e%a5 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=ebdcfaTab data-bs-toggle=tab data-bs-target=#ebdcfa type=button role=tab aria-controls=ebdcfa aria-selected=true>请求示例</a>
<a class=nav-link id=adfcebTab data-bs-toggle=tab data-bs-target=#adfceb type=button role=tab aria-controls=adfceb aria-selected=true>响应示例</a> <a class=nav-link id=fedcabTab data-bs-toggle=tab data-bs-target=#fedcab type=button role=tab aria-controls=fedcab aria-selected=true>响应示例</a>
<a class=nav-link id=Tab data-bs-toggle=tab data-bs-target=# type=button role=tab aria-controls aria-selected=true></a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=eacdfb role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=1de88d3 class=language-bash> <a class=nav-link id=Tab data-bs-toggle=tab data-bs-target=# type=button role=tab aria-controls aria-selected=true></a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=ebdcfa role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=1de88d3 class=language-bash>
<code>curl --location --request GET &#39;{{baseURL}}/v1/file/content?id=xx&#39; \ <code>curl --location --request GET &#39;{{baseURL}}/v1/file/content?id=xx&#39; \
--header &#39;Authorization: Bearer {{authorization}}&#39;</code> --header &#39;Authorization: Bearer {{authorization}}&#39;</code>
</pre></div></div><div class="tab-pane fade" id=adfceb role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=bcbc70a class=language-json> </pre></div></div><div class="tab-pane fade" id=fedcab role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=bcbc70a class=language-json>
<code>{ <code>{
&#34;code&#34;: 200, &#34;code&#34;: 200,
&#34;success&#34;: true, &#34;success&#34;: true,
@@ -91,11 +91,11 @@ type FileListItem = {
&#34;previewUrl&#34;: &#34;xxxx&#34; &#34;previewUrl&#34;: &#34;xxxx&#34;
} }
}</code> }</code>
</pre></div><div class="alert alert-success d-flex" role=alert><div class="flex-shrink-1 alert-icon"></div><div class=w-100><ul><li>title - 文件标题。</li><li>content - 文件内容,直接拿来用。</li><li>previewUrl - 文件链接,系统会请求该地址获取文件内容。</li></ul><p><code>content</code><code>previewUrl</code>二选一返回,如果同时返回则 <code>content</code> 优先级更高,返回 <code>previewUrl</code>时,则会访问该链接进行文档内容读取。</p></div></div></div></div><h3 id=3-获取文件阅读链接用于查看原文>3. 获取文件阅读链接(用于查看原文) <a href=#3-%e8%8e%b7%e5%8f%96%e6%96%87%e4%bb%b6%e9%98%85%e8%af%bb%e9%93%be%e6%8e%a5%e7%94%a8%e4%ba%8e%e6%9f%a5%e7%9c%8b%e5%8e%9f%e6%96%87 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=bfacedTab data-bs-toggle=tab data-bs-target=#bfaced type=button role=tab aria-controls=bfaced aria-selected=true>请求示例</a> </pre></div><div class="alert alert-success d-flex" role=alert><div class="flex-shrink-1 alert-icon"></div><div class=w-100><ul><li>title - 文件标题。</li><li>content - 文件内容,直接拿来用。</li><li>previewUrl - 文件链接,系统会请求该地址获取文件内容。</li></ul><p><code>content</code><code>previewUrl</code>二选一返回,如果同时返回则 <code>content</code> 优先级更高,返回 <code>previewUrl</code>时,则会访问该链接进行文档内容读取。</p></div></div></div></div><h3 id=3-获取文件阅读链接用于查看原文>3. 获取文件阅读链接(用于查看原文) <a href=#3-%e8%8e%b7%e5%8f%96%e6%96%87%e4%bb%b6%e9%98%85%e8%af%bb%e9%93%be%e6%8e%a5%e7%94%a8%e4%ba%8e%e6%9f%a5%e7%9c%8b%e5%8e%9f%e6%96%87 class=anchor aria-hidden=true><i class="material-icons align-middle">link</i></a></h3><nav><div class="nav nav-tabs" id=nav-tab role=tablist><a class="nav-link active" id=fcedabTab data-bs-toggle=tab data-bs-target=#fcedab type=button role=tab aria-controls=fcedab aria-selected=true>请求示例</a>
<a class=nav-link id=cbdeafTab data-bs-toggle=tab data-bs-target=#cbdeaf type=button role=tab aria-controls=cbdeaf aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=bfaced role=tabpanel aria-labelledby=nav-1><p>id 为文件的 id。</p><div class=prism-codeblock><pre id=3291e95 class=language-bash> <a class=nav-link id=cbeadfTab data-bs-toggle=tab data-bs-target=#cbeadf type=button role=tab aria-controls=cbeadf aria-selected=true>响应示例</a></div></nav><div class=tab-content id=nav-tab-content><div class="tab-pane fade show active" id=fcedab role=tabpanel aria-labelledby=nav-1><p>id 为文件的 id。</p><div class=prism-codeblock><pre id=3291e95 class=language-bash>
<code>curl --location --request GET &#39;{{baseURL}}/v1/file/read?id=xx&#39; \ <code>curl --location --request GET &#39;{{baseURL}}/v1/file/read?id=xx&#39; \
--header &#39;Authorization: Bearer {{authorization}}&#39;</code> --header &#39;Authorization: Bearer {{authorization}}&#39;</code>
</pre></div></div><div class="tab-pane fade" id=cbdeaf role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=9102b7d class=language-json> </pre></div></div><div class="tab-pane fade" id=cbeadf role=tabpanel aria-labelledby=nav-1><div class=prism-codeblock><pre id=9102b7d class=language-json>
<code>{ <code>{
&#34;code&#34;: 200, &#34;code&#34;: 200,
&#34;success&#34;: true, &#34;success&#34;: true,

108
js/doc-generate-llms.js Normal file
View File

@@ -0,0 +1,108 @@
const fs = require('fs');
const path = require('path');
const yaml = require('js-yaml');
// 项目名称和描述
const projectName = "FastGPT";
const projectDescription = "FastGPT 文档";
// 文档目录,使用相对路径
const docsDir = path.join(__dirname, '../../content/zh-cn/docs');
// 基础 URL
const baseUrl = "https://doc.fastgpt.cn/docs/";
// 生成 llms.txt
let llmsTxtContent = `# ${projectName}\n${projectDescription}\n`;
function getMdInfo(filePath) {
try {
// 读取文件内容
const content = fs.readFileSync(filePath, 'utf8');
// 找到前置元数据的起始和结束位置
const startIndex = content.indexOf('---');
const endIndex = content.indexOf('---', startIndex + 3);
if (startIndex!== -1 && endIndex!== -1) {
const frontMatterStr = content.slice(startIndex + 3, endIndex).trim();
// 使用 yaml 解析前置元数据
const frontMatter = yaml.load(frontMatterStr);
const title = frontMatter.title;
const description = frontMatter.description;
return [title, description];
}
} catch (error) {
if (error.code === 'ENOENT') {
console.log(`文件 ${filePath} 未找到。`);
} else {
console.log(`解析 ${filePath} 的前置元数据时出错:`, error.message);
}
}
return [null, null];
}
// 遍历文档目录
function walkDir(dir) {
const entries = fs.readdirSync(dir, { withFileTypes: true });
for (const entry of entries) {
const entryPath = path.join(dir, entry.name);
if (entry.isDirectory()) {
walkDir(entryPath);
} else if (entry.name.endsWith('.md')) {
const relativePath = path.relative(docsDir, entryPath);
const sectionName = path.dirname(relativePath) || 'Home';
if (!llmsTxtContent.includes(`## ${sectionName}`)) {
llmsTxtContent += `\n## ${sectionName}\n`;
}
const fullUrl = baseUrl + relativePath.replace(/\\/g, '/').replace('.md', '/');
const [title, description] = getMdInfo(entryPath);
const finalTitle = title || path.basename(entry.name, '.md');
const finalDescription = description || '';
llmsTxtContent += `- [${finalTitle}](${fullUrl}) ${finalDescription}\n`;
}
}
}
walkDir(docsDir);
// 保存 llms.txt
const saveDir = path.join(__dirname, '../');
if (!fs.existsSync(saveDir)) {
fs.mkdirSync(saveDir, { recursive: true });
}
const llmsTxtSavePath = path.join(saveDir, 'llms.txt');
fs.writeFileSync(llmsTxtSavePath, llmsTxtContent, 'utf8');
// 生成 llms - full.txt
let llmsFullTxtContent = '';
function collectMdContent(dir) {
const entries = fs.readdirSync(dir, { withFileTypes: true });
for (const entry of entries) {
const entryPath = path.join(dir, entry.name);
if (entry.isDirectory()) {
collectMdContent(entryPath);
} else if (entry.name.endsWith('.md')) {
const content = fs.readFileSync(entryPath, 'utf8');
// 找到前置元数据的起始和结束位置
const startIndex = content.indexOf('---');
const endIndex = content.indexOf('---', startIndex + 3);
if (startIndex!== -1 && endIndex!== -1) {
const frontMatterStr = content.slice(startIndex + 3, endIndex).trim();
// 使用 yaml 解析前置元数据
const frontMatter = yaml.load(frontMatterStr);
const title = frontMatter.title || '';
const description = frontMatter.description || '';
// 提取标题和描述后,删除首部元数据
const newContent = content.slice(endIndex + 3).trim();
llmsFullTxtContent += `# ${title}\n## ${description}\n\n${newContent}\n\n`;
} else {
llmsFullTxtContent += content + '\n\n';
}
}
}
}
collectMdContent(docsDir);
// 保存 llms - full.txt
const llmsFullTxtSavePath = path.join(saveDir, 'llms-full.txt');
fs.writeFileSync(llmsFullTxtSavePath, llmsFullTxtContent, 'utf8');

21053
llms-full.txt Normal file

File diff suppressed because it is too large Load Diff

231
llms.txt Normal file
View File

@@ -0,0 +1,231 @@
# FastGPT
FastGPT 文档
## agreement
- [开源协议](https://doc.fastgpt.cn/docs/agreement/open-source/) FastGPT 开源许可证
- [隐私政策](https://doc.fastgpt.cn/docs/agreement/privacy/) FastGPT 隐私政策
- [服务协议](https://doc.fastgpt.cn/docs/agreement/terms/) FastGPT 服务协议
- [协议](https://doc.fastgpt.cn/docs/agreement/_index/) 社区相关内容
## .
- [加入社区](https://doc.fastgpt.cn/docs/community/) 加入 FastGPT 开发者社区和我们一起成长
## development
- [配置文件介绍](https://doc.fastgpt.cn/docs/development/configuration/) FastGPT 配置参数介绍
## development\custom-models
- [接入 bge-rerank 重排模型](https://doc.fastgpt.cn/docs/development/custom-models/bge-rerank/) 接入 bge-rerank 重排模型
- [接入 ChatGLM2-m3e 模型](https://doc.fastgpt.cn/docs/development/custom-models/chatglm2-m3e/) 将 FastGPT 接入私有化模型 ChatGLM2和m3e-large
- [接入 ChatGLM2-6B](https://doc.fastgpt.cn/docs/development/custom-models/chatglm2/) 将 FastGPT 接入私有化模型 ChatGLM2-6B
- [接入 M3E 向量模型](https://doc.fastgpt.cn/docs/development/custom-models/m3e/) 将 FastGPT 接入私有化模型 M3E
- [接入 Marker PDF 文档解析](https://doc.fastgpt.cn/docs/development/custom-models/marker/) 使用 Marker 解析 PDF 文档,可实现图片提取和布局识别
- [使用 Ollama 接入本地模型 ](https://doc.fastgpt.cn/docs/development/custom-models/ollama/) 采用 Ollama 部署自己的模型
- [使用 Xinference 接入本地模型](https://doc.fastgpt.cn/docs/development/custom-models/xinference/) 一站式本地 LLM 私有化部署
- [本地模型使用](https://doc.fastgpt.cn/docs/development/custom-models/_index/) FastGPT 对接本地模型
## development\design
- [数据集](https://doc.fastgpt.cn/docs/development/design/dataset/) FastGPT 数据集中文件与数据的设计方案
- [设计方案](https://doc.fastgpt.cn/docs/development/design/_index/) FastGPT 部分设计方案
- [Docker Compose 快速部署](https://doc.fastgpt.cn/docs/development/docker/) 使用 Docker Compose 快速部署 FastGPT
- [私有部署常见问题](https://doc.fastgpt.cn/docs/development/faq/) FastGPT 私有部署常见问题
- [快速开始本地开发](https://doc.fastgpt.cn/docs/development/intro/) 对 FastGPT 进行开发调试
## development\migration
- [Docker 数据库迁移(无脑操作)](https://doc.fastgpt.cn/docs/development/migration/docker_db/) FastGPT Docker 数据库备份和迁移
- [Docker Mongo迁移(dump模式)](https://doc.fastgpt.cn/docs/development/migration/docker_mongo/) FastGPT Docker Mongo迁移
- [迁移&备份](https://doc.fastgpt.cn/docs/development/migration/_index/) FastGPT 迁移&备份
## development\modelConfig
- [通过 AI Proxy 接入模型](https://doc.fastgpt.cn/docs/development/modelConfig/ai-proxy/) 通过 AI Proxy 接入模型
- [FastGPT 模型配置说明](https://doc.fastgpt.cn/docs/development/modelConfig/intro/) FastGPT 模型配置说明
- [通过 OneAPI 接入模型](https://doc.fastgpt.cn/docs/development/modelConfig/one-api/) 通过 OneAPI 接入模型
- [通过 PPIO LLM API 接入模型](https://doc.fastgpt.cn/docs/development/modelConfig/ppio/) 通过 PPIO LLM API 接入模型
- [通过 SiliconCloud 体验开源模型](https://doc.fastgpt.cn/docs/development/modelConfig/siliconCloud/) 通过 SiliconCloud 体验开源模型
- [模型配置方案](https://doc.fastgpt.cn/docs/development/modelConfig/_index/) 本模型配置方案
## development\openapi
- [对话接口](https://doc.fastgpt.cn/docs/development/openapi/chat/) FastGPT OpenAPI 对话接口
- [知识库接口](https://doc.fastgpt.cn/docs/development/openapi/dataset/) FastGPT OpenAPI 知识库接口
- [OpenAPI 介绍](https://doc.fastgpt.cn/docs/development/openapi/intro/) FastGPT OpenAPI 介绍
- [分享链接身份鉴权](https://doc.fastgpt.cn/docs/development/openapi/share/) FastGPT 分享链接身份鉴权
- [OpenAPI 接口文档](https://doc.fastgpt.cn/docs/development/openapi/_index/) FastGPT OpenAPI 文档
## development\proxy
- [Cloudflare Worker 中转](https://doc.fastgpt.cn/docs/development/proxy/cloudflare/) 使用 Cloudflare Worker 实现中转
- [HTTP 代理中转](https://doc.fastgpt.cn/docs/development/proxy/http_proxy/) 使用 HTTP 代理实现中转
- [Nginx 中转](https://doc.fastgpt.cn/docs/development/proxy/nginx/) 使用 Sealos 部署 Nginx 实现中转
- [代理方案](https://doc.fastgpt.cn/docs/development/proxy/_index/) FastGPT 私有化部署代理方案
- [Sealos 一键部署](https://doc.fastgpt.cn/docs/development/sealos/) 使用 Sealos 一键部署 FastGPT
## development\upgrading
- [升级到 V4.0](https://doc.fastgpt.cn/docs/development/upgrading/40/) FastGPT 从旧版本升级到 V4.0 操作指南
- [升级到 V4.1](https://doc.fastgpt.cn/docs/development/upgrading/41/) FastGPT 从旧版本升级到 V4.1 操作指南
- [升级到 V4.2](https://doc.fastgpt.cn/docs/development/upgrading/42/) FastGPT 从旧版本升级到 V4.2 操作指南
- [升级到 V4.2.1](https://doc.fastgpt.cn/docs/development/upgrading/421/) FastGPT 从旧版本升级到 V4.2.1 操作指南
- [升级到 V4.3(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/43/) FastGPT 从旧版本升级到 V4.3 操作指南
- [升级到 V4.4(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/44/) FastGPT 从旧版本升级到 V4.4 操作指南
- [升级到 V4.4.1(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/441/) FastGPT 从旧版本升级到 V4.4.1 操作指南
- [升级到 V4.4.2(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/442/) FastGPT 从旧版本升级到 V4.4.2 操作指南
- [V4.4.5(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/445/) FastGPT V4.4.5 更新
- [V4.4.6](https://doc.fastgpt.cn/docs/development/upgrading/446/) FastGPT V4.4.6 更新
- [V4.4.7(需执行升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/447/) FastGPT V4.4.7 更新(需执行升级脚本)
- [V4.5(需进行较为复杂更新)](https://doc.fastgpt.cn/docs/development/upgrading/45/) FastGPT V4.5 更新
- [V4.5.1(需进行初始化)](https://doc.fastgpt.cn/docs/development/upgrading/451/) FastGPT V4.5.1 更新
- [V4.5.2](https://doc.fastgpt.cn/docs/development/upgrading/452/) FastGPT V4.5.2 更新
- [V4.6(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/46/) FastGPT V4.6 更新
- [V4.6.1](https://doc.fastgpt.cn/docs/development/upgrading/461/) FastGPT V4.6 .1
- [V4.6.2(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/462/) FastGPT V4.6.2
- [V4.6.3(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/463/) FastGPT V4.6.3
- [V4.6.4(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/464/) FastGPT V4.6.4
- [V4.6.5(需要改配置文件)](https://doc.fastgpt.cn/docs/development/upgrading/465/) FastGPT V4.6.5
- [V4.6.6(需要改配置文件)](https://doc.fastgpt.cn/docs/development/upgrading/466/) FastGPT V4.6.6
- [V4.6.7(需要初始化)](https://doc.fastgpt.cn/docs/development/upgrading/467/) FastGPT V4.6.7
- [V4.6.8(需要初始化)](https://doc.fastgpt.cn/docs/development/upgrading/468/) FastGPT V4.6.8更新说明
- [V4.6.9(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/469/) FastGPT V4.6.9更新说明
- [V4.7(需要初始化)](https://doc.fastgpt.cn/docs/development/upgrading/47/) FastGPT V4.7更新说明
- [V4.7.1(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/471/) FastGPT V4.7.1 更新说明
- [V4.8](https://doc.fastgpt.cn/docs/development/upgrading/48/) FastGPT V4.8 更新说明
- [V4.8.1(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/481/) FastGPT V4.8.1 更新说明
- [V4.8.10(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/4810/) FastGPT V4.8.10 更新说明
- [V4.8.11(商业版初始化)](https://doc.fastgpt.cn/docs/development/upgrading/4811/) FastGPT V4.8.11 更新说明
- [V4.8.12(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/4812/) FastGPT V4.8.12 更新说明
- [V4.8.13](https://doc.fastgpt.cn/docs/development/upgrading/4813/) FastGPT V4.8.13 更新说明
- [V4.8.14](https://doc.fastgpt.cn/docs/development/upgrading/4814/) FastGPT V4.8.14 更新说明
- [V4.8.15(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/4815/) FastGPT V4.8.15 更新说明
- [V4.8.16(更新配置文件)](https://doc.fastgpt.cn/docs/development/upgrading/4816/) FastGPT V4.8.16 更新说明
- [V4.8.17(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/4817/) FastGPT V4.8.17 更新说明
- [V4.8.18(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/4818/) FastGPT V4.8.18 更新说明
- [V4.8.19(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/4819/) FastGPT V4.8.19 更新说明
- [V4.8.2](https://doc.fastgpt.cn/docs/development/upgrading/482/) FastGPT V4.8.2 更新说明
- [V4.8.20(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/4820/) FastGPT V4.8.20 更新说明
- [V4.8.21](https://doc.fastgpt.cn/docs/development/upgrading/4821/) FastGPT V4.8.21 更新说明
- [V4.8.22(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/4822/) FastGPT V4.8.22 更新说明
- [V4.8.23](https://doc.fastgpt.cn/docs/development/upgrading/4823/) FastGPT V4.8.23 更新说明
- [V4.8.3](https://doc.fastgpt.cn/docs/development/upgrading/483/) FastGPT V4.8.3 更新说明
- [V4.8.4(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/484/) FastGPT V4.8.4 更新说明
- [V4.8.5(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/485/) FastGPT V4.8.5 更新说明
- [V4.8.6(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/486/) FastGPT V4.8.6 更新说明
- [V4.8.7](https://doc.fastgpt.cn/docs/development/upgrading/487/) FastGPT V4.8.7 更新说明
- [V4.8.8(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/488/) FastGPT V4.8.8 更新说明
- [V4.8.9(需要初始化)](https://doc.fastgpt.cn/docs/development/upgrading/489/) FastGPT V4.8.9 更新说明
- [V4.9.0(包含升级脚本)](https://doc.fastgpt.cn/docs/development/upgrading/490/) FastGPT V4.9.0 更新说明
- [V4.9.1](https://doc.fastgpt.cn/docs/development/upgrading/491/) FastGPT V4.9.1 更新说明
- [V4.9.2](https://doc.fastgpt.cn/docs/development/upgrading/492/) FastGPT V4.9.2 更新说明
- [V4.9.3](https://doc.fastgpt.cn/docs/development/upgrading/493/) FastGPT V4.9.3 更新说明
- [V4.9.4](https://doc.fastgpt.cn/docs/development/upgrading/494/) FastGPT V4.9.4 更新说明
- [V4.9.5](https://doc.fastgpt.cn/docs/development/upgrading/495/) FastGPT V4.9.5 更新说明
- [升级说明](https://doc.fastgpt.cn/docs/development/upgrading/intro/) FastGPT 升级说明
- [版本更新/升级操作](https://doc.fastgpt.cn/docs/development/upgrading/_index/) FastGPT 版本更新介绍及升级操作
- [开发与部署指南](https://doc.fastgpt.cn/docs/development/_index/) 本地开发 FastGPT 必看
## faq
- [应用使用问题](https://doc.fastgpt.cn/docs/faq/app/) FastGPT 常见应用使用问题,包括简易应用、工作流和插件
- [聊天框问题](https://doc.fastgpt.cn/docs/faq/chat/) FastGPT 常见聊天框问题
- [知识库使用问题](https://doc.fastgpt.cn/docs/faq/dataset/) 常见知识库使用问题
- [Docker 部署问题](https://doc.fastgpt.cn/docs/faq/docker/) FastGPT Docker 部署问题
- [报错](https://doc.fastgpt.cn/docs/faq/error/)
- [接入外部渠道](https://doc.fastgpt.cn/docs/faq/external_channel_integration/) 如何通过外部渠道与 FastGPT 集成,实现对多种平台的支持
- [其他问题](https://doc.fastgpt.cn/docs/faq/other/)
- [积分消耗](https://doc.fastgpt.cn/docs/faq/points_consumption/) 了解 FastGPT 中的积分消耗机制和使用场景
- [私有部署常见问题](https://doc.fastgpt.cn/docs/faq/privateDeploy/) FastGPT 私有部署常见问题
- [FAQ](https://doc.fastgpt.cn/docs/faq/_index/) 常见问题的解答
## guide\admin
- [SSO & 外部成员同步](https://doc.fastgpt.cn/docs/guide/admin/sso/) FastGPT 外部成员系统接入设计与配置
- [团队模式说明文档](https://doc.fastgpt.cn/docs/guide/admin/teamMode/) FastGPT 团队模式说明文档
- [商业版后台](https://doc.fastgpt.cn/docs/guide/admin/_index/) 商业版后台使用教程
## guide\course
- [AI 相关参数配置说明](https://doc.fastgpt.cn/docs/guide/course/ai_settings/) FastGPT AI 相关参数配置说明
- [对话问题引导](https://doc.fastgpt.cn/docs/guide/course/chat_input_guide/) FastGPT 对话问题引导
- [知识库集合标签](https://doc.fastgpt.cn/docs/guide/course/collection_tags/) FastGPT 知识库集合标签使用说明
- [文件输入功能介绍](https://doc.fastgpt.cn/docs/guide/course/fileInput/) FastGPT 文件输入功能介绍
- [快速上手](https://doc.fastgpt.cn/docs/guide/course/quick-start/) 快速体验 FastGPT 基础功能
- [基础教程](https://doc.fastgpt.cn/docs/guide/course/_index/) FastGPT 基础教程
## guide\DialogBoxes
- [对话框与HTML渲染](https://doc.fastgpt.cn/docs/guide/DialogBoxes/htmlRendering/) 如何在FastGPT中通过Markdown嵌入HTML代码块并提供全屏、源代码切换等交互功能
- [知识库引用分块阅读器](https://doc.fastgpt.cn/docs/guide/DialogBoxes/quoteList/) FastGPT 分块阅读器功能介绍
- [对话框](https://doc.fastgpt.cn/docs/guide/DialogBoxes/_index/) 对话框组件,支持多种交互方式,提升用户在应用中的交互体验。
## guide\knowledge_base
- [API 文件库](https://doc.fastgpt.cn/docs/guide/knowledge_base/api_dataset/) FastGPT API 文件库功能介绍和使用方式
- [知识库搜索方案和参数](https://doc.fastgpt.cn/docs/guide/knowledge_base/dataset_engine/) 本节会详细介绍 FastGPT 知识库结构设计,理解其 QA 的存储格式和多向量映射,以便更好的构建知识库。同时会介绍每个搜索参数的功能。这篇介绍主要以使用为主,详细原理不多介绍。
- [外部文件知识库](https://doc.fastgpt.cn/docs/guide/knowledge_base/externalFile/) FastGPT 外部文件知识库功能介绍和使用方式
- [飞书知识库](https://doc.fastgpt.cn/docs/guide/knowledge_base/lark_dataset/) FastGPT 飞书知识库功能介绍和使用方式
- [知识库基础原理介绍](https://doc.fastgpt.cn/docs/guide/knowledge_base/RAG/) 本节详细介绍RAG模型的核心机制、应用场景及其在生成任务中的优势与局限性。
- [Web 站点同步](https://doc.fastgpt.cn/docs/guide/knowledge_base/websync/) FastGPT Web 站点同步功能介绍和使用方式
- [语雀文件库](https://doc.fastgpt.cn/docs/guide/knowledge_base/yuque_dataset/) FastGPT 语雀文件库功能介绍和使用方式
- [知识库](https://doc.fastgpt.cn/docs/guide/knowledge_base/_index/) 知识库的基础原理、搜索方案、Web站点同步和外部文件知识库的使用方法。
## guide\plugins
- [Bing 搜索插件填写说明](https://doc.fastgpt.cn/docs/guide/plugins/bing_search_plugin/) FastGPT Bing 搜索插件配置步骤详解
- [Doc2x 插件填写说明](https://doc.fastgpt.cn/docs/guide/plugins/doc2x_plugin_guide/) 如何配置和使用 Doc2x 插件
- [Google 搜索插件填写说明](https://doc.fastgpt.cn/docs/guide/plugins/google_search_plugin_guide/) FastGPT Google 搜索插件配置指南
- [如何提交系统插件](https://doc.fastgpt.cn/docs/guide/plugins/how_to_submit_system_plugin/) FastGPT 系统插件提交指南
- [SearXNG 搜索插件配置与使用说明](https://doc.fastgpt.cn/docs/guide/plugins/searxng_plugin_guide/) FastGPT SearXNG 搜索插件配置指南
- [系统插件](https://doc.fastgpt.cn/docs/guide/plugins/_index/) 介绍如何使用和提交系统插件,以及各插件的填写说明
## guide\team_permissions
- [邀请链接说明文档](https://doc.fastgpt.cn/docs/guide/team_permissions/invitation_link/) 如何使用邀请链接来邀请团队成员
- [团队&成员组&权限](https://doc.fastgpt.cn/docs/guide/team_permissions/team_roles_permissions/) 如何管理 FastGPT 团队、成员组及权限设置
- [团队与权限](https://doc.fastgpt.cn/docs/guide/team_permissions/_index/) 团队管理、成员组与权限设置,确保团队协作中的数据安全和权限分配合理。
## guide\workbench
- [简易模式](https://doc.fastgpt.cn/docs/guide/workbench/basic-mode/) 快速了解 FastGPT 工作台的简易模式
- [使用 Gapier 快速导入Agent工具](https://doc.fastgpt.cn/docs/guide/workbench/gapier/) FastGPT 使用 Gapier 快速导入Agent工具
- [工作流&插件](https://doc.fastgpt.cn/docs/guide/workbench/intro/) 快速了解 FastGPT 工作流和插件的使用
## guide\workbench\workflow
- [AI 对话](https://doc.fastgpt.cn/docs/guide/workbench/workflow/ai_chat/) FastGPT AI 对话模块介绍
- [文本内容提取](https://doc.fastgpt.cn/docs/guide/workbench/workflow/content_extract/) FastGPT 内容提取模块介绍
- [问题优化](https://doc.fastgpt.cn/docs/guide/workbench/workflow/coreferenceResolution/) 问题优化模块介绍和使用
- [自定义反馈](https://doc.fastgpt.cn/docs/guide/workbench/workflow/custom_feedback/) 自定义反馈模块介绍
- [知识库搜索](https://doc.fastgpt.cn/docs/guide/workbench/workflow/dataset_search/) FastGPT AI 知识库搜索模块介绍
- [文档解析](https://doc.fastgpt.cn/docs/guide/workbench/workflow/document_parsing/) FastGPT 文档解析模块介绍
- [表单输入](https://doc.fastgpt.cn/docs/guide/workbench/workflow/form_input/) FastGPT 表单输入模块介绍
- [HTTP 请求](https://doc.fastgpt.cn/docs/guide/workbench/workflow/http/) FastGPT HTTP 模块介绍
- [知识库搜索引用合并](https://doc.fastgpt.cn/docs/guide/workbench/workflow/knowledge_base_search_merge/) FastGPT 知识库搜索引用合并模块介绍
- [Laf 函数调用](https://doc.fastgpt.cn/docs/guide/workbench/workflow/laf/) FastGPT Laf 函数调用模块介绍
- [批量运行](https://doc.fastgpt.cn/docs/guide/workbench/workflow/loop/) FastGPT 批量运行节点介绍和使用
- [问题分类](https://doc.fastgpt.cn/docs/guide/workbench/workflow/question_classify/) FastGPT 问题分类模块介绍
- [指定回复](https://doc.fastgpt.cn/docs/guide/workbench/workflow/reply/) FastGPT 指定回复模块介绍
- [代码运行](https://doc.fastgpt.cn/docs/guide/workbench/workflow/sandbox/) FastGPT 代码运行节点介绍
- [文本拼接](https://doc.fastgpt.cn/docs/guide/workbench/workflow/text_editor/) FastGPT 文本加工模块介绍
- [判断器](https://doc.fastgpt.cn/docs/guide/workbench/workflow/tfswitch/) FastGPT 判断器模块介绍
- [工具调用&终止](https://doc.fastgpt.cn/docs/guide/workbench/workflow/tool/) FastGPT 工具调用模块介绍
- [用户选择](https://doc.fastgpt.cn/docs/guide/workbench/workflow/user-selection/) FastGPT 用户选择模块的使用说明
- [变量更新](https://doc.fastgpt.cn/docs/guide/workbench/workflow/variable_update/) FastGPT 变量更新模块介绍
- [工作流节点](https://doc.fastgpt.cn/docs/guide/workbench/workflow/_index/) FastGPT 工作流节点设置和使用指南
- [工作台](https://doc.fastgpt.cn/docs/guide/workbench/_index/) FastGPT 工作台及工作流节点的使用说明
- [功能介绍](https://doc.fastgpt.cn/docs/guide/_index/) FastGPT 的功能和使用指南
- [快速了解 FastGPT](https://doc.fastgpt.cn/docs/intro/) FastGPT 的能力与优势
## shopping_cart
- [商业版](https://doc.fastgpt.cn/docs/shopping_cart/intro/) FastGPT 商业版相关说明
- [线上版定价](https://doc.fastgpt.cn/docs/shopping_cart/saas/) FastGPT 线上版定价
- [收费说明](https://doc.fastgpt.cn/docs/shopping_cart/_index/) FastGPT 收费说明
## use-cases\app-cases
- [Dalle3 绘图](https://doc.fastgpt.cn/docs/use-cases/app-cases/dalle3/) 使用 HTTP 模块绘制图片
- [英语作文纠错机器人](https://doc.fastgpt.cn/docs/use-cases/app-cases/english_essay_correction_bot/) 使用 FastGPT 创建一个用于英语作文纠错的机器人,帮助用户检测并纠正语言错误
- [发送飞书webhook通知](https://doc.fastgpt.cn/docs/use-cases/app-cases/feishu_webhook/) 利用工具调用模块发送一个飞书webhook通知
- [固定开头和结尾内容](https://doc.fastgpt.cn/docs/use-cases/app-cases/fixingEvidence/) 利用指定回复,创建固定的开头和结尾
- [接入谷歌搜索](https://doc.fastgpt.cn/docs/use-cases/app-cases/google_search/) 将 FastGPT 接入谷歌搜索
- [实验室预约](https://doc.fastgpt.cn/docs/use-cases/app-cases/lab_appointment/) 展示高级编排操作数据库的能力
- [多轮翻译机器人](https://doc.fastgpt.cn/docs/use-cases/app-cases/multi_turn_translation_bot/) 如何使用 FastGPT 构建一个多轮翻译机器人,实现连续的对话翻译功能
- [如何提交应用模板](https://doc.fastgpt.cn/docs/use-cases/app-cases/submit_application_template/) 指南:如何向 FastGPT 提交应用模板
- [长字幕翻译](https://doc.fastgpt.cn/docs/use-cases/app-cases/translate-subtitle-using-gpt/) 利用 AI 自我反思提升翻译质量,同时循环迭代执行 AI 工作流来突破 LLM tokens 限制,实现一个高效的长字幕翻译机器人。
- [应用搭建案例](https://doc.fastgpt.cn/docs/use-cases/app-cases/_index/) FastGPT 应用场景及功能实现的搭建案例
## use-cases\external-integration
- [接入钉钉机器人教程](https://doc.fastgpt.cn/docs/use-cases/external-integration/dingtalk/) FastGPT 接入钉钉机器人教程
- [接入飞书机器人教程](https://doc.fastgpt.cn/docs/use-cases/external-integration/feishu/) FastGPT 接入飞书机器人教程
- [iframe 接入](https://doc.fastgpt.cn/docs/use-cases/external-integration/iframe_integration/) 通过 iframe 嵌入 FastGPT 内容到其他网页或应用
- [接入微信公众号教程](https://doc.fastgpt.cn/docs/use-cases/external-integration/official_account/) FastGPT 接入微信公众号教程
- [对接 chatgpt-on-wechat](https://doc.fastgpt.cn/docs/use-cases/external-integration/onwechat/) FastGPT 对接 chatgpt-on-wechat
- [通过 API 访问应用](https://doc.fastgpt.cn/docs/use-cases/external-integration/openapi/) 通过 API 访问 FastGPT 应用
- [接入微信和企业微信 ](https://doc.fastgpt.cn/docs/use-cases/external-integration/wechat/) FastGPT 接入微信和企业微信
- [外部调用 FastGPT](https://doc.fastgpt.cn/docs/use-cases/external-integration/_index/) 外部应用通过多种方式调用 FastGPT 功能的教程
- [使用案例](https://doc.fastgpt.cn/docs/use-cases/_index/) 有关 FastGPT 其他实践案例的更多信息
- [文档](https://doc.fastgpt.cn/docs/_index/) FastGPT 官方文档