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目录

  1. cd opt
  2. mkdir oneapi
  3. cd oneapi

2.编辑docker-compose.yml文件

在/opt/oneapi目录下创建docker-compose.yml文件,将下面的内容复制进去并保存

  1. version: '3.8'
  2. services:
  3. oneapi:
  4. container_name: oneapi
  5. image: justsong/one-api:latest
  6. restart: unless-stopped
  7. ports:
  8. - 3001:3000
  9. networks:
  10. - llm_net
  11. volumes:
  12. - ./data:/data
  13. environment:
  14. - TZ=Asia/Shanghai
  15. networks:
  16. llm_net:
  17. name: llm_net
  18. external: true

3.创建llm_net docker网络

  1. docker network create llm_net

4.运行oneapi

  1. 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目录

  1. cd opt
  2. mkdir fastgpt
  3. cd fastgpt

2.编辑docker-compose.yml文件

请先阅读FastGPT官方部署文档:https://doc.fastgpt.in/docs/development/docker/

下载docker-compose.yml文件和config.json文件

  1. curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml
  2. curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json

编辑docker-compose.yml文件,主要是更改了容器网络,数据库用户名密码之类的

  1. version: '3.8'
  2. services:
  3. pg:
  4. image: ankane/pgvector:v0.5.0 # git
  5. # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.0 # 阿里云
  6. container_name: pg
  7. restart: always
  8. ports:
  9. - 5432:5432
  10. networks:
  11. - llm_net
  12. environment:
  13. - POSTGRES_USER=fastgpt
  14. - POSTGRES_PASSWORD=123456
  15. - POSTGRES_DB=fastgpt
  16. volumes:
  17. - ./pg/data:/var/lib/postgresql/data
  18. mongo:
  19. image: mongo:5.0.18
  20. # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
  21. container_name: mongo
  22. ports:
  23. - 27017:27017
  24. networks:
  25. - llm_net
  26. command: mongod --keyFile /data/mongodb.key --replSet rs0
  27. environment:
  28. - MONGO_INITDB_ROOT_USERNAME=fastgpt
  29. - MONGO_INITDB_ROOT_PASSWORD=123456
  30. volumes:
  31. - ./mongo/data:/data/db
  32. - ./mongodb.key:/data/mongodb.key
  33. fastgpt:
  34. container_name: fastgpt
  35. image: ghcr.io/labring/fastgpt:latest # git
  36. # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云
  37. ports:
  38. - 3002:3000
  39. networks:
  40. - llm_net
  41. depends_on:
  42. - mongo
  43. - pg
  44. restart: always
  45. environment:
  46. - DEFAULT_ROOT_PSW=123456
  47. - OPENAI_BASE_URL=http://192.168.2.117:3001/v1
  48. - CHAT_API_KEY=sk-XXXXX # 在OneApi中创建的令牌
  49. - DB_MAX_LINK=5 # database max link
  50. - TOKEN_KEY=any
  51. - ROOT_KEY=root_key
  52. - FILE_TOKEN_KEY=filetoken
  53. # mongo 配置,不需要改. 用户名myname,密码mypassword。
  54. - MONGODB_URI=mongodb://fastgpt:123456@mongo:27017/fastgpt?authSource=admin
  55. # pg配置. 不需要改
  56. - PG_URL=postgresql://fastgpt:123456@pg:5432/fastgpt
  57. volumes:
  58. - ./config.json:/app/data/config.json
  59. networks:
  60. llm_net:
  61. name: llm_net
  62. 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

  1. docker compose up -d

运行成功之后,不要忘了对MongoDb进行配置,直接按官网的步骤进行操作:

  1. # 查看 mongo 容器是否正常运行
  2. docker ps
  3. # 进入容器
  4. docker exec -it mongo bash
  5. # 连接数据库
  6. mongo -u myname -p mypassword --authenticationDatabase admin
  7. # 初始化副本集。如果需要外网访问,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)
  8. rs.initiate({
  9. _id: "rs0",
  10. members: [
  11. { _id: 0, host: "mongo:27017" }
  12. ]
  13. })
  14. # 检查状态。如果提示 rs0 状态,则代表运行成功
  15. 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. MetaGPT( The Multi-Agent Framework):颠覆AI开发的革命性多智能体元编程框架

    "MetaGPT( The Multi-Agent Framework):颠覆AI开发的革命性多智能体元编程框架" 一个多智能体元编程框架,给定一行需求,它可以返回产品文档.架构设 ...

  2. 解决github无法进入问题,DNS加速

    1.电脑的hosts文件在下面这个地址,找到hosts文件 C:\Windows\System32\Drivers\etc 2.进入文件夹目录etc 找到hosts文件,使用记事本编辑 3.进入这个网 ...

  3. linux笔记-工作

    根据进程id或进程名查看端口号 netstat -antup|grep 2073 netstat -antup|grep processName 查看某个端口号是否被占用 netstat -tln | ...

  4. Windows10安装Apache2.4.54并配置PHP5.6.40/PHP8.1.11

    环境 Windows 10 Apache2.4.54 PHP5.6.40/PHP8.1.11 安装Microsoft Visual C++ 下载地址:https://learn.microsoft.c ...

  5. P2572 [SCOI2010] 序列操作 题解

    题解:序列操作 比较综合的 ds 题,综合了线段树常见的几种操作:维护最大子段和.区间翻转.区间求和.区间覆盖 . 维护子段和常见的我们维护三类东西: 前缀最长连续段.后缀最长连续段.当前区间上的最大 ...

  6. C++中,new与malloc的区别何在?(代码实验向)

    在C++中,new与malloc()都可用于在堆中分配一块内存.其中,new是C++的语法,而malloc则来自古老的C语言,二者在使用时有何区别? new会调用构造函数,而malloc()不会 假设 ...

  7. 【架构师视角系列】Apollo配置中心之Server端(ConfigSevice)(三)

    目录 声明 配置中心系列文章 一.通知机制 二.架构思考 三.源码剖析 1.配置监听 1.1.建立长轮询 1.1.1.逻辑描述 1.1.2.时序图 1.1.3.代码位置 1.1.3.1.Notific ...

  8. Visual Studio部署matplotlib绘图库的C++版本

      本文介绍在Visual Studio软件中配置.编译C++环境下matplotlibcpp库的详细方法.   matplotlibcpp库是一个C++环境下的绘图工具,其通过调用Python接口, ...

  9. MYSQL 3 DAY

    目录 MySQL day03 1.约束 1.1.唯一性约束(unique) 1.2.主键约束 1.3.外键约束 2.存储引擎?(整个内容属于了解内容) 2.1.完整的建表语句 2.2.什么是存储引擎呢 ...

  10. nginx做白名单和限流

    ​ 在我们生产环境中使用到了地图服务,每个月有免费请求次数,近一个月请求次数突然暴涨,导致直接开启付费模式,一个月上百刀的花销着实难扛,根据实际我们的业务使用情况,远达不到付费标准,故考虑做白名单和限 ...