FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!
Llama2 是Facebook 母公司 Meta 发布的开源可商用大模型,国内的开源社区以及个人和机构也纷纷着手基于 Llama2 构建了中文版,并且还利用 GGML 机器学习张量库构建了可以在 CPU 上运行的 Llama2 中文版模型。
今天我们来玩点刺激的! 首先在 CPU 上运行一个开源的 Llama2 中文版模型,然后将这个模型接入到 FastGPT 的知识库中,最后再将 FastGPT 接入第三方任意 GPT 套壳应用。
一键运行 LLama2 中文版
运行模型有很多种方法,但是为了能和各种 GPT 应用兼容,最好能够提供一个对外的 API,并且这个 API 还得对齐 OpenAI 的 API。这就需要用到一个叫做 Text generation web UI 的项目。
Text generation web UI
Text generation web UI 是一个大语言模型启动器,它的终极目标是在 AI 对话领域对标 Stable Diffusion WebUI。引用 GitHub 原文:
A gradio web UI for running Large Language Models like LLaMA, llama.cpp, GPT-J, OPT, and GALACTICA.
Its goal is to become the AUTOMATIC1111/stable-diffusion-webui of text generation.
它可以加载几乎所有的主流模型(支持 llama.cpp 模型),并且在本地运行他们。语言模型能做什么,你就能体验到什么,可以当成离线版 ChatGPT 来使用。再加上 ChatGPT 在国内的审查问题,以及信息泄露风险,客制化的本地模型几乎提供了无限可能。
![](https://jsdelivr.icloudnative.io/gh/yangchuansheng/imghosting5@main/uPic/2023-08-16-00-11-It3XID.png)
值得一提的是,它还支持通过 API 来进行调用,同时还提供插件对齐 OpenAI 的 API,你可以将其接入任意套壳 GPT 应用中。
![](https://jsdelivr.icloudnative.io/gh/yangchuansheng/imghosting5@main/uPic/2023-08-16-00-11-2MKFY5.png)
接下来我们就需要用到这个 openai 插件!
Sealos 国内集群
今年 6 月份,Sealos 正式上线了海外集群,虽然也向国内用户开放,但其机房在新加坡,国内部分线路不太友好。国内很多用户的需求比较特殊,必须要使用魔法,海外集群正好可以满足需求,至于线路到国内是否友好并不是非常重要。
但大部分国内用户的需求还是要保证线路稳定,使用海外集群就有点力不从心了。为了满足国内用户的需求,如今我们正式上线了国内集群,与海外集群功能一致。除此之外,国内集群还新增了一项功能:通过共享存储来加载主流的大模型文件(目前只加载了 LLama2 中文模型)。
运行 Llama2 中文模型
我们可以直接通过以下链接打开 Text generation web UI 的应用部署模板:
然后直接点击「部署应用」,部署完成后跳转到应用详情页面,查看日志:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-29-09-51-mfYbWG.png)
只有出现下面红色方框中的日志,才算是启动完了:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-29-09-51-uIjT5z.png)
这里的外网地址是 openai 插件的 API 地址(因为 Sealos 目前只能暴露一个端口到外网,暂且将 Web UI 端口关闭了,只暴露 API 端口),复制一下外网地址,就可以接入 FastGPT 了。
将 Llama2 中文版接入 FastGPT
首先打开 FastGPT 并登录:https://fastgpt.run
然后进入账号界面,点击「OpenAI 账号」:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-29-09-51-VLzYkt.png)
API Key 的值随便填,BaseUrl 的值填入之前在应用详情页面复制的外网地址,并在结尾加上路径 v1,并点击「确认」:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-29-09-51-ldbFdO.png)
然后就可以在 FastGPT 中和 Llama2 中文大模型进行对话啦~
首先来到「应用界面」,新建一个应用:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-28-21-33-ru85Fc.png)
模板选择「简单的对话」,然后确认创建:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-28-21-33-hzPmQZ.png)
应用设置界面有很多可以自定义的选项,我们暂时先不管它,直接点击「对话」进行对话:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-28-21-36-nE6Cd7.png)
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-28-21-55-Ayruvk.png)
回复速度还是不错的,毕竟给他分配了 15C,勉强能用。而且理解能力也不错,就是有时候胡说八道的能力与 GPT-3.5 有的一拼~
接入知识库
下面来玩一个更花的,将 Llama2 中文版接入 FastGPT 的知识库。
首先创建一个知识库:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-28-22-02-D7bbHZ.png)
然后导入数据开始训练:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-28-22-03-WLhuOB.png)
FastGPT 提供了手动输入、直接分段、LLM 自动处理和 CSV 等多种数据导入途径,其中“直接分段”支持通过 PDF、WORD、Markdown 和 CSV 文档内容作为上下文。FastGPT 会自动对文本数据进行预处理、向量化和 QA 分割,节省手动训练时间,提升效能。
关于知识库的训练方式,可以参考这篇文章:利用 FastGPT 打造高质量 AI 知识库
训练好知识库后,需要到你的「应用」中关联你的知识库:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-29-09-51-k7zZk4.png)
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-29-09-50-DWYG5T.png)
关联完知识库后,再次与应用进行对话,它就会根据知识库内容来回答你的问题。以我训练的本公司 CEO 数字克隆为例:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-29-09-50-XrMrj6.png)
效果还是很不错的👍
将 FastGPT 接入任意套壳 GPT
现在来到了最后一个环节,现在绝大多数的 GPT 应用接入的都是 OpenAI 的 API,所以只要咱们的 API 对齐了 OpenAI,就可以直接接入绝大多数的 GPT 应用。
这不巧了么这不是,FastGPT 现在已经完全对齐了 OpenAI,可以直接接入第三方 GPT 应用了。
首先依次选择应用 -> 「API访问」,然后点击「API 密钥」来创建密钥:
⚠️注意:密钥需要自己保管好,一旦关闭就无法再复制密钥,只能创建新密钥再复制。
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-29-09-50-UiCAo7.png)
组合秘钥
利用刚复制的 API 秘钥加上 AppId 组合成一个新的秘钥,格式为:API 秘钥-AppId
,例如这里的组合密钥就是:fastgpt-z51pkjqm9nrk03a1rx2funoy-6467660e98568613e0525b45
。
替换三方应用的变量
一般只需要替换以下两个变量即可:
OPENAI_API_BASE_URL: https://fastgpt.run/api/openapi (改成自己部署的域名)
OPENAI_API_KEY = 组合秘钥
不同应用的变量名不一样,但都差不多,自己甄别一下。
ChatGPT Next Web 示例:
![](https://cdn.jsdelivr.us/gh/labring/FastGPT@main/docSite/assets/imgs/chatgptnext.png)
ChatGPT Web 示例:
![](https://cdn.jsdelivr.us/gh/labring/FastGPT@main/docSite/assets/imgs/chatgptweb.png)
最后看一下效果:
![](https://cdn.jsdelivr.us/gh/yangchuansheng/imghosting-test@main/uPic/2023-08-29-09-48-r0qhqm.png)