<h1><span style="font-size: 24px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";">数字分身搭建</span>
</h1><p>FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!</p><p>GitHub地址:https://github.com/labring/FastGPT</p><p>体验地址:https://fastgpt.run/</p><h3>AI知识库原理</h3><p>核心流程图如下:</p><p>
</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7061861-8c81cad905590e44.jpeg" img-data="{"format":"jpeg","size":89448,"height":1054,"width":2274}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><ol>
<li>把私有数据进行切分后,使用模型进行向量化,然后存储到向量库中。</li><li>用户提问时先在向量库中进行向量搜索,匹配相关联的n条数据。</li><li>把用户的问题和向量库匹配结果格式化成一个Prompt,发送给大模型,得到最终结果。</li></ol><h3>知识库搭建</h3><ol>
<li><p>创建知识库</p>
<p>默认使用GPT的embedding模型把文本转成向量(不懂什么是向量也不影响使用哈)。</p>
<p>还可以设置标签,方便知识库进行分类</p>
<div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7061861-cd3555c7ce586a28.jpeg" img-data="{"format":"jpeg","size":72724,"height":1096,"width":2780}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
</li><li><p>导入私有数据</p>
<p>支持丰富的导入方式。
可以手动输入QA,也可以从网络/本地文件中提取文本的方式导入</p>
<div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7061861-79476f0b0d5835cd.jpeg" img-data="{"format":"jpeg","size":139372,"height":1476,"width":2836}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
</li><li><p>测试向量搜索</p>
<p>可以输入文本测试向量库的搜索,下面<strong>0.8884</strong>就是文本和知识库片段的相似度。</p>
<div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7061861-b547658d97863044.jpeg" img-data="{"format":"jpeg","size":427690,"height":1488,"width":2698}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
</li></ol><h3>应用搭建</h3><ol>
<li><p>创建应用</p>
<p>我们选<strong>知识库+对话引导</strong>这个最经典的场景</p>
<div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7061861-8e5f07bdab6c992f.jpeg" img-data="{"format":"jpeg","size":135852,"height":1330,"width":2808}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
</li><li><p>关联知识库</p>
<p>关联刚创建的知识库,填写Prompt控制GPT的输出。</p>
<p>想要用好GPT,重之重就是<strong>Prompt</strong>。由于篇幅限制后续逐渐展开</p>
<div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7061861-b66ebfca0154af94.jpeg" img-data="{"format":"jpeg","size":183206,"height":1458,"width":2800}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
</li><li><p>测试知识库问答</p>
<p>这里就跟我们正常使用GPT一样,通过文本的方式对话,也支持聊天上下文。</p>
<p>同时还会显示向量搜索的结果,上下文情况,token消耗,完整响应日志,帮助我们优化应用。</p>
<div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7061861-3a381641b3cf2558.jpeg" img-data="{"format":"jpeg","size":299010,"height":1470,"width":2826}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
</li></ol><h2>飞书集成</h2><p>由于 FastGPT 的 OpenAPI 功能和 GPT 的对齐,可以无需变更原来的应用即可使用 FastGPT 上编排好的应用。API 使用,可 参考这篇文章。编排示例,可参考 <strong>高级编排介绍</strong></p><p>所以可以很方便的把fastgpt的对话能力通过API,对接到飞书机器人中。</p><p>GitHub地址:https://github.com/ConnectAI-E/Feishu-OpenAI</p><ol>
<li><p>获取API秘钥</p>
<p>依次选择应用 -> 「API访问」,然后点击「API 密钥」来创建密钥。</p>
<div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7061861-bc688675ddcc726f.jpeg" img-data="{"format":"jpeg","size":369365,"height":1974,"width":3840}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
<p>利用刚复制的 API 秘钥加上 AppId 组合成一个新的秘钥,格式为:API 秘钥-AppId,例如:fastgpt-z51pkjqm9nrk03a1rx2funoy-642adec15f04d67d4613efdb。</p>
</li><li><p>服务部署</p>
<p>推荐使用Railway一键部署:https://railway.app/template/10D-TF?referralCode=oMcVS2</p>
<p>参考配置文件:</p>
<div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7061861-7a720f7b72e17a1d.jpeg" img-data="{"format":"jpeg","size":98148,"height":1166,"width":1310}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
<p>fastgpt集成<strong>重点参数:</strong></p>
OPENAI_KEY=fastgpt-z51pkjqm9nrk03a1rx2funoy-642adec15f04d67d4613efdb
API_URL=https://fastgpt.run/api/openapi
</li><li><p>创建飞书机器人</p>
<ol>
<li>前往开发者平台创建应用,并获取到 APPID 和 Secret</li><li>前往应用功能-机器人, 创建机器人</li><li>从 cpolar、serverless 或 Railway 获得公网地址,在飞书机器人后台的 事件订阅 板块填写。例如,
<ol>
<li>http://xxxx.r6.cpolar.top为 cpolar 暴露的公网地址</li><li>/webhook/event为统一的应用路由</li><li>最终的回调地址为 http://xxxx.r6.cpolar.top/webhook/event</li></ol>
</li><li>在飞书机器人后台的 机器人 板块,填写消息卡片请求网址。例如,
<ol>
<li>http://xxxx.r6.cpolar.top为 cpolar 暴露的公网地址</li><li>/webhook/card为统一的应用路由</li><li>最终的消息卡片请求网址为 http://xxxx.r6.cpolar.top/webhook/card</li></ol>
</li><li>在事件订阅板块,搜索三个词机器人进群、 接收消息、 消息已读, 把他们后面所有的权限全部勾选。 进入权限管理界面,搜索图片, 勾选获取与上传图片或文件资源。 最终会添加下列回调事件
<ol>
<li>im:resource(获取与上传图片或文件资源)</li><li>im:message</li><li>im:message.group_at_msg(获取群组中所有消息)</li><li>im:message.group_at_msg:readonly(接收群聊中@机器人消息事件)</li><li>im:message.p2p_msg(获取用户发给机器人的单聊消息)</li><li>im:message.p2p_msg:readonly(读取用户发给机器人的单聊消息)</li><li>im:message:send_as_bot(获取用户在群组中@机器人的消息)</li><li>im:chat:readonly(获取群组信息)</li><li>im:chat(获取与更新群组信息)</li></ol>
</li></ol>
</li><li><p>测试机器人问答</p>
<p>私聊机器人,或者群里艾特它,就可以基于导入的知识库进行回答啦。nice</p>
<div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/7061861-1b683400174c33f7.jpeg" img-data="{"format":"jpeg","size":83282,"height":872,"width":1446}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div>
</li></ol><h2>总结</h2><p>使用<strong>高级编排</strong>功能可以做出非常复杂应用,后续会出教程敬请期待</p><h2>
</h2>