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使用在线大语言模型的更多相关文章

  1. Hugging News #0324: 🤖️ 黑客松结果揭晓、一键部署谷歌最新大语言模型、Gradio 新版发布,更新超多!

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  2. easy-mock 本地部署(挤需体验三番钟,里造会干我一样,爱象节款mock)

    前言 很多小伙伴问我怎么在自己公司的项目里面添加配置mock,在vue项目里面都知道怎么配置mock,在大型前端项目里面就一脸疑惑了. 我就回答他,你今天会在vue项目里面用,那天换公司是用angul ...

  3. 本地推理,单机运行,MacM1芯片系统基于大语言模型C++版本LLaMA部署“本地版”的ChatGPT

    OpenAI公司基于GPT模型的ChatGPT风光无两,眼看它起朱楼,眼看它宴宾客,FaceBook终于坐不住了,发布了同样基于LLM的人工智能大语言模型LLaMA,号称包含70亿.130亿.330亿 ...

  4. pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例)

    pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例) Part1知识准备 在PyTorch中加载预训练的模型时,通常的工作流程是这样的: my_model = ModelClass ...

  5. arcgis api for javascript本地部署加载地图

    最近开始学习arcgis api for javascript,发现一头雾水,决定记录下自己的学习过程. 一.下载arcgis api for js 4.2的library和jdk,具体安装包可以去官 ...

  6. 使用 LoRA 和 Hugging Face 高效训练大语言模型

    在本文中,我们将展示如何使用 大语言模型低秩适配 (Low-Rank Adaptation of Large Language Models,LoRA) 技术在单 GPU 上微调 110 亿参数的 F ...

  7. 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

    导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...

  8. 升级本地部署的CRM到Dynamics 365及部分新特性介绍。

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复241或者20161226可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  9. virtual judge 本地部署方案

    这是一种将自己的电脑当作服务器来部署一个vj的方法,我也是参考前辈们的做法稍作了改动,如果在服务器上部署的话需要在细节上稍作改动: 一.什么是Virtual Judge? vj的工作原理什么?  vj ...

  10. 【Tomcat】使用tomcat manager 管理和部署项目,本地部署项目到服务器

    在部署tomcat项目的时候,除了把war文件直接拷贝到tomcat的webapp目录下,还有一种方法可以浏览器中管理和部署项目,那就是使用tomcat manager. 默认情况下,tomcat m ...

随机推荐

  1. 【MySQL】InnoDB vs MyISAM

      MySQL默认数据库引擎 事务支持 索引类型 索引数据结构 对锁的支持 使用场景 关于count(*) 外键支持 InnoDB 5.1版本后,是 默认为Read committed 聚集索引,叶子 ...

  2. 【一】MADDPG-单智能体|多智能体总结(理论、算法)

    相关文章: [一]MADDPG-单智能体|多智能体总结(理论.算法) [二]MADDPG--单智能体|多智能体总结算法实现--[追逐游戏] [一]-环境配置+python入门教学 [二]-Parl基础 ...

  3. C# 多线程与线程扫描器

    多线程是一种复杂的编程技术,可以同时运行多个独立的线程来处理各种任务.在C#中,可以使用Thread类和ThreadPool类来实现多线程编程.Thread类用于创建和控制线程.可以使用Thread. ...

  4. 驱动开发:运用VAD隐藏R3内存思路

    在进程的_EPROCESS中有一个_RTL_AVL_TREE类型的VadRoot成员,它是一个存放进程内存块的二叉树结构,如果我们找到了这个二叉树中我们想要隐藏的内存,直接将这个内存在二叉树中抹去,其 ...

  5. 28图图解Raft协议,so easy~~

    大家好,我是三友~~ 在之前写的<万字+20张图探秘Nacos注册中心核心实现原理> 这篇文章中我留了一个彩蛋 当文章点赞量突破28个,就单独写一篇关于Raft协议的文章 既然现在文章点赞 ...

  6. MarkDown书写语法(常用格式)

    实际上每个 Markdown 应用程序都实现了稍有不同的 Markdown 语法,熟悉MarkDown书写语法常用格式,满足日常文字编辑需求 1.标题 请在单词或短语前面添加井号 (#) .# 的数量 ...

  7. 练习(Java):将一个数转换为16进制;获得多位数的各个位上的数

    //将一个数转换为十六进制 int num = 60; int i1 = num % 16; int i2 = num % (16*16) / 16; int i3 = num % (16*16*16 ...

  8. Java应用系统监控方法简介

    1. tsar 阿里巴巴开源的实时系统监控工具.其内部的sunfire有部分指标就是基于该工具每分钟采集一次来获取的. github 监控项及数据来源一览 摘自tsar/info.md 监控项 来源 ...

  9. mysql备份导入

    mysqldump -uroot -p --single-transaction --master-data=2 --flush-logs --flush-privileges --routines= ...

  10. Codeforces Round #847 (Div. 3) A-G

    比赛链接 A 题意 判断输入字符串与 \(\pi\) 的最长前缀匹配,不超过 \(30\) 位. 题解 知识点:模拟. 抄样例最后一个 \(30\) 都正确的,直接匹配. 时间复杂度 \(O(1)\) ...