本地部署FastGPT使用在线大语言模型
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力,它背后依赖OneApi开源项目来访问各种大语言模型提供的能力。各大语言模型提供的访问接口规范不尽相同,为此OneApi项目提供了统一的API接口去对接各种大语言模型。FastGPT的部署架构如图所示:

本文章将介绍如何部署OneApi和FastGPT,以及两种在线大语言模型(AzureOpenAI和讯飞星火3.5)的配置方法。
我将在Windows系统的WSL子系统上进行部署,WSL子系统安装的是Ubuntu22 Linux系统,WSL的部署方式完全适用于真实的Linux系统。
一、部署OneApi
OneApi项目开源地址:https://github.com/songquanpeng/one-api
1.在/opt目录下创建oneapi目录
cd opt
mkdir oneapi
cd oneapi
2.编辑docker-compose.yml文件
在/opt/oneapi目录下创建docker-compose.yml文件,将下面的内容复制进去并保存
version: '3.8'
services:
oneapi:
container_name: oneapi
image: justsong/one-api:latest
restart: unless-stopped
ports:
- 3001:3000
networks:
- llm_net
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
networks:
llm_net:
name: llm_net
external: true
3.创建llm_net docker网络
docker network create llm_net
4.运行oneapi
docker compose up -d
5.配置AzureOpenAI渠道
登录http://localhost:3001,用户名:root,密码:123456。
如果你没有申请AzureOpenAI,可以直接查看讯飞星火的配置方式。其实申请AzureOpenAI并不难,网上教程很多,只要真实填写相关信息,一般24小时内就可以通过。
接下来我们添加AzureOpenAI渠道,按照图中的方式填写就好了。这里有一个需要注意的地方就是名称那一项填的是Azure上面的部署名称,而这个部署名称必须要和模型名称一致(很奇怪的做法,GitHub上已经有人提了issue,正在解决)


6.测试
渠道添加成功后,可以在渠道列表页面点击“测试”按钮,如果没有问题,会返回测试成功。

7.创建令牌
令牌的名称随便填,由于是测试,可以把额度设置为无限额度。
提交后,可以在令牌列表页面复制刚刚创建的令牌,这个令牌将在部署FastGPT时用到。

二、部署fastgpt
1.在/opt目录下创建fastgpt目录
cd opt
mkdir fastgpt
cd fastgpt
2.编辑docker-compose.yml文件
请先阅读FastGPT官方部署文档:https://doc.fastgpt.in/docs/development/docker/
下载docker-compose.yml文件和config.json文件
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml
curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json
编辑docker-compose.yml文件,主要是更改了容器网络,数据库用户名密码之类的
version: '3.8'
services:
pg:
image: ankane/pgvector:v0.5.0 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.0 # 阿里云
container_name: pg
restart: always
ports:
- 5432:5432
networks:
- llm_net
environment:
- POSTGRES_USER=fastgpt
- POSTGRES_PASSWORD=123456
- POSTGRES_DB=fastgpt
volumes:
- ./pg/data:/var/lib/postgresql/data
mongo:
image: mongo:5.0.18
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
container_name: mongo
ports:
- 27017:27017
networks:
- llm_net
command: mongod --keyFile /data/mongodb.key --replSet rs0
environment:
- MONGO_INITDB_ROOT_USERNAME=fastgpt
- MONGO_INITDB_ROOT_PASSWORD=123456
volumes:
- ./mongo/data:/data/db
- ./mongodb.key:/data/mongodb.key
fastgpt:
container_name: fastgpt
image: ghcr.io/labring/fastgpt:latest # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云
ports:
- 3002:3000
networks:
- llm_net
depends_on:
- mongo
- pg
restart: always
environment:
- DEFAULT_ROOT_PSW=123456
- OPENAI_BASE_URL=http://192.168.2.117:3001/v1
- CHAT_API_KEY=sk-XXXXX # 在OneApi中创建的令牌
- DB_MAX_LINK=5 # database max link
- TOKEN_KEY=any
- ROOT_KEY=root_key
- FILE_TOKEN_KEY=filetoken
# mongo 配置,不需要改. 用户名myname,密码mypassword。
- MONGODB_URI=mongodb://fastgpt:123456@mongo:27017/fastgpt?authSource=admin
# pg配置. 不需要改
- PG_URL=postgresql://fastgpt:123456@pg:5432/fastgpt
volumes:
- ./config.json:/app/data/config.json
networks:
llm_net:
name: llm_net
external: true
这里要注意的 OPENAI_BASE_URL=http://192.168.2.117:3001/v1,我本来想设置成http://oneapi:3000/v1,因为fastgpt与oneapi在同一个docker网络,但fastgpt访问不了这个地址,可能是哪里没有设置对,只好先用本机ip来访问。
3.编辑config.json文件
改动如下,name改成在oneapi配置中的一样

4.运行fastgpt
docker compose up -d
运行成功之后,不要忘了对MongoDb进行配置,直接按官网的步骤进行操作:
# 查看 mongo 容器是否正常运行
docker ps
# 进入容器
docker exec -it mongo bash
# 连接数据库
mongo -u myname -p mypassword --authenticationDatabase admin
# 初始化副本集。如果需要外网访问,mongo:27017 可以改成 ip:27017。但是需要同时修改 FastGPT 连接的参数(MONGODB_URI=mongodb://myname:mypassword@mongo:27017/fastgpt?authSource=admin => MONGODB_URI=mongodb://myname:mypassword@ip:27017/fastgpt?authSource=admin)
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]
})
# 检查状态。如果提示 rs0 状态,则代表运行成功
rs.status()
5.测试
官网说OPENAI_BASE_URL地址后面要加v1,当我加了的时候,测试结果如下,报404:

于是去oneapi容器查看日志,可以看到fastgpt请求已经转到了oneapi,oneapi又去请求AzureOpenAI, AzureOpenAI返回404。于是去Azure上测试部署后的聊天功能,按F12查看网络请求,发现路由里面没有v1
于是更改docker-compose.yml文件,把OPENAI_BASE_URL值中的v1去掉了,重新执行docker-compose up -d ,重启之后继续测试,这次的报错就不一样了,如下图所示:

查看oneapi日志,请求结果是200,但没有响应内容,找了很久的原因,无法得知是OneApi还是Azure OpenAI的问题,于是转而去测试讯飞星火大模型。

三、配置讯飞星火认知大模型
1.创建讯飞模型应用
先去官方领取讯飞星火认知大模型的个人免费试用套餐(我选的是V3.5版本):https://xinghuo.xfyun.cn/sparkapi?scr=price

然后去到讯飞开放平台去创建基于v3.5版本的应用,得到APPID、APISecret、APIKey三个值(在OneApi中需要用到)

2.在oneapi页面添加星火模型渠道

3.编辑fastgpt的config.json文件
增加星火模型的配置

4.重启fastgpt容器
注意:如果你之前的操作把OPENAI_BASE_URL的v1去掉了,请把它补上,然后执行命令:docker-compose up -d
5.测试
AI模型选择上面配置的spark3.5,测试成功

本地部署FastGPT使用在线大语言模型的更多相关文章
- Hugging News #0324: 🤖️ 黑客松结果揭晓、一键部署谷歌最新大语言模型、Gradio 新版发布,更新超多!
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...
- easy-mock 本地部署(挤需体验三番钟,里造会干我一样,爱象节款mock)
前言 很多小伙伴问我怎么在自己公司的项目里面添加配置mock,在vue项目里面都知道怎么配置mock,在大型前端项目里面就一脸疑惑了. 我就回答他,你今天会在vue项目里面用,那天换公司是用angul ...
- 本地推理,单机运行,MacM1芯片系统基于大语言模型C++版本LLaMA部署“本地版”的ChatGPT
OpenAI公司基于GPT模型的ChatGPT风光无两,眼看它起朱楼,眼看它宴宾客,FaceBook终于坐不住了,发布了同样基于LLM的人工智能大语言模型LLaMA,号称包含70亿.130亿.330亿 ...
- pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例)
pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例) Part1知识准备 在PyTorch中加载预训练的模型时,通常的工作流程是这样的: my_model = ModelClass ...
- arcgis api for javascript本地部署加载地图
最近开始学习arcgis api for javascript,发现一头雾水,决定记录下自己的学习过程. 一.下载arcgis api for js 4.2的library和jdk,具体安装包可以去官 ...
- 使用 LoRA 和 Hugging Face 高效训练大语言模型
在本文中,我们将展示如何使用 大语言模型低秩适配 (Low-Rank Adaptation of Large Language Models,LoRA) 技术在单 GPU 上微调 110 亿参数的 F ...
- 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...
- 升级本地部署的CRM到Dynamics 365及部分新特性介绍。
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复241或者20161226可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- virtual judge 本地部署方案
这是一种将自己的电脑当作服务器来部署一个vj的方法,我也是参考前辈们的做法稍作了改动,如果在服务器上部署的话需要在细节上稍作改动: 一.什么是Virtual Judge? vj的工作原理什么? vj ...
- 【Tomcat】使用tomcat manager 管理和部署项目,本地部署项目到服务器
在部署tomcat项目的时候,除了把war文件直接拷贝到tomcat的webapp目录下,还有一种方法可以浏览器中管理和部署项目,那就是使用tomcat manager. 默认情况下,tomcat m ...
随机推荐
- Prompt learning 教学基础篇:prompt基本原则以及使用场景技巧助力你更好使用chatgpt,得到你想要的答案
Prompt learning 教学[基础篇]:prompt基本原则以及使用场景技巧助力你更好使用chatgpt,得到你想要的答案 如果你想系统学习 如果你对 AI 和 Prompt Engineer ...
- python编程中,各种随机种子seed设置总结
python随机种子seed的作用(强化学习常用到)_汀.的博客-CSDN博客先上代码import mathimport gymfrom gym import spaces, loggerfrom g ...
- PaddleHub实战篇{ERNIE实现文新闻本分类、ERNIE3.0 实现序列标注}【四】
相关文章: 基础知识介绍: [一]ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?_汀.的博客-CSDN博客_ernie模型 百度飞桨: ...
- C/C++ 反汇编:数据类型与常量
反汇编即把目标二进制机器码转为汇编代码的过程,该技术常用于软件破解.外挂技术.病毒分析.逆向工程.软件汉化等领域,学习和理解反汇编对软件调试.系统漏洞挖掘.内核原理及理解高级语言代码都有相当大的帮助, ...
- 万字剖析OpenFeign整合Ribbon实现负载均衡的原理
大家好,前面我已经剖析了OpenFeign的动态代理生成原理和Ribbon的运行原理,这篇文章来继续剖析SpringCloud组件原理,来看一看OpenFeign是如何基于Ribbon来实现负载均衡的 ...
- 全流程机器视觉工程开发(三)任务前瞻 - 从opencv的安装编译说起,到图像增强和分割
前言 最近开始做这个裂缝识别的任务了,大大小小的问题我已经摸得差不多了,然后关于识别任务和分割任务我现在也弄的差不多了. 现在开始做正式的业务,也就是我们说的裂缝识别的任务.作为前言,先来说说场景: ...
- Bi-VAEGAN:对TF-VAEGAN提出的视觉到语义进一步改进
论文"Bi-directional Distribution Alignment for Transductive Zero-Shot Learning"提出Bi-VAEGAN,它 ...
- docker 安装的jenkins如何执行宿主机的shell启动jar包
最近在用docker做自动化部署的时候遇到一个问题,就是用docker装的jenkins可以通过映射执行宿主机脚本.但是,却无法通过shell脚本启动宿主机jar包.经排查最终用以下方案完美解决. 一 ...
- .NET Core开发实战(第18课:日志框架:聊聊记日志的最佳姿势)--学习笔记(下)
18 | 日志框架:聊聊记日志的最佳姿势 除了使用 CreateLogger 指定 logger 的名称,实际上还可以借助容器来构造 logger,通常情况下我们会定义自己的类 namespace L ...
- 反悔贪心&模拟费用流
贪心是一种常用的算法,它能够获得局部最优解,但我们往往需要的是全局最优解,所以我们在贪心的时候加入和反悔的机制,让他能够得到全局最优解. 由于网络流中的退流操作本质上也是反悔贪心,所以在实现反悔贪心时 ...