毕昇的初探之旅(一)

毕昇的初探之旅


前言

Bisheng是一款领先的开源大模型应用开发平台,赋能和加速大模型应用开发落地,帮助用户以最佳体验进入下一代应用开发模式。底层采用的是Langchain+Langflow的架构,可免费商用二开。Bisheng项目GitHub传送门Bisheng飞书文档传送门


一、工具列表

Bisheng二开需要的工具列表如下:

  • windows11
  • VSCode
  • mysql 8.0
  • redis 7.0.4
  • onlyoffice 7.2.1
  • elasticsearch 8.12.0 (可选)
  • milvus: (milvus 2.3.3,minio RELEASE.2023-03-20T20-16-18Z,etcd 3.5.5)
  • frontend 前端代码
  • backend 后端代码
  • bisheng-langchain bisheng版langchain封装代码

二、环境部署

1. 基础环境部署

vmware、centos、docker、docker-compose 部署可参考从零开始之Dify部署篇 搭建流程1-5步骤即可。

2. 部署mysql

可参考 MySQL的docker部署传送门,需注意部署完成后最好创建一个bisheng的用户,方便与其他系统隔离。

3. 部署redis

可参考 Redis的docker部署传送门,也可直接下载后通过如下命令运行即可。部署后可通过 Another Redis Desktop Manager 检验Redis是否可用。

docker run \
-p 6379:6379 \
--name redis \
--restart unless-stopped \
-v ./data/redis:/data \
-d redis:7-alpine

4. 部署OnlyOffice

可直接下载后通过如下命令运行即可。

docker run -d -p 8701:80 \
--name bisheng-office \
--restart always \
-e TZ=Asia/Shanghai \
-v ${DOCKER_VOLUME_DIRECTORY:-.}/office/bisheng:/var/www/onlyoffice/documentserver/sdkjs-plugins/bisheng \
   onlyoffice/documentserver:7.2.1

5. 部署elasticsearch

可直接下载后通过如下命令运行即可。

docker run -id --name elasticsearch -d --restart=always -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch/plugins:/usr/share/elasticsearch/plugins -e "discovery.type=single-node" docker.io/bitnami/elasticsearch:8

6. 部署milvus

可参考 Milvus及attu可视化工具的docker部署传送门,部署完成后,可通过 attu 可视化查看Milvus是否可用。

7. 部署源代码

7.1 fork原项目

可参考 Github与VSCode结合与Fork项目保持同步

7.2 修改Action文件

Github有自动CI/CD流程,个人项目可通过Github的Actions功能触发。Github中的CI/CD介绍。其中的bisheng-langchain的模块的打包逻辑见飞书 bisheng-langchain打包逻辑

7. 3 初始化前端

7.3.1 进入前端主目录

通过如下命令进入前端代码主目录

cd src\frontend
7.3.2 安装依赖

可先装nvm,nvm可以创造node的虚拟环境,方便不同的node环境切换。本文采用的 npm 版本为 10.2.4。通过如下命令进行项目的依赖包安装。

npm install
7.3.3 启动前端

通过如下命令启动前端。

npm run start

7.4 初始化后端

bisheng后端,包含bisheng后端项目代码和bisheng-langchain项目代码。

7.4.1 建立bisheng后端虚拟环境

通过vscode在backend下创建.venv的python虚拟环境,本文采用的python版本为3.10.11

7.4.2 进入bisheng后端主目录

通过如下命令进入后端代码主目录

cd src\backend
7.4.3 安装bisheng后端依赖

因为后端是通过poetry管理依赖的,所以需要先安装poetry,命令如下所示。

.venv\Scripts\pip install poetry -i https://pypi.tuna.tsinghua.edu.cn/simple 

通过poetry 安装依赖,命令如下所示。

.venv\Scripts\poetry install
7.4.4 建立bisheng-langchain虚拟环境

通过vscode在bisheng-langchain下创建.venv的python虚拟环境,本文采用的python版本为3.10.11

7.4.5 进入bisheng-langchain项目主目录

通过如下命令进入bisheng-langchain项目主目录地址

cd src\bisheng-langchain
7.4.6 安装bisheng-langchain依赖

bisheng-langchain没有通过poetry进行管理,直接通过pip安装即可

.venv\Scripts\pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

因为修改完bisheng-langchain项目后需要打包,以便让bisheng项目通过pip安装使用。所以需要下载打包工具。

.venv/Scripts/pip install wheel

修改完bisheng-langchain项目后打包命令如下。

.venv\Scripts\python setup.py sdist bdist_wheel 

因为上述命令打包时,并不会将静态文件如requirements.txt等文件打包进去,而pip安装时又需要这些静态文件,所有我们需要创建一个MANIFEST.in文件,文件中的内容如下。python打包静态文件配置参考

include requirements.txt
include version.txt
7.4.7 修改bisheng的bisheng-langchain依赖路径

因为bisheng项目依赖的bisheng-langchain项目不为我们本地的项目,所以需要通过poetry将其更改为我们本地的bisheng-langchain项目。
首先通过poetry将步骤7.4.6打包后的bisheng-langchain包依赖加入pyproject.toml中(bisheng-langchain打完包后,存放在主目录的dist文件夹下)。命令如下所示。

.venv\Scripts\poetry add D:\bisheng\bishengforweb\bishengforweb\src\bisheng-langchain\dist\bisheng_langchain-0.2.3.2.tar.gz

可能通过上面步骤并不会安装对应依赖,可以通过pip安装,命令如下所示。

.venv\Scripts\pip install D:\bisheng\bishengforweb\bishengforweb\src\bisheng-langchain\dist\bisheng_langchain-0.2.3.3.tar.gz

7.5 配置抓包工具

为了方便调试项目,本文采用fiddler为抓包工具。fiddler安装步骤传送门,因为fiddler配置的为系统代理所以会监听到所有的接口。
fiddler配置
fiddler会自动修改win11的全局代理配置。可通过命令行的方式查看,也可通过界面的方式查看。

netsh winhttp show advproxy

win11网络代理显示
因为大模型的网站一般为https,所以如果还需要进行证书相关的配置,可参考fiddler抓取https包,按照以上配置fiddler便可抓取浏览器的https包了,然而在python程序运行时可能会出现如下提示。

Unable to get local issuer certificate when using requests

此时可按照 fiddler不能抓取python的https请求解决方案1fiddler不能抓取python的https请求解决方案2 配置。

注意:
因为bisheng调用的是bisheng-langchain的依赖,如果出现配置了bisheng项目的环境下的certifi对应的证书后没有用,可配置bisheng-langchain项目的环境下的certifi对应的证书(调试程序时,发现会直接调用bisheng-langchain的源码,通过src\bisheng-langchain.venv\lib\site-packages\httpx_config.py 中的 DEFAULT_CA_BUNDLE_PATH = Path(certifi.where()) 找对应的certifi证书配置)

三、可能遇到的问题

1. 包依赖:

可以通过用pip下载 pipdeptree,用这个命令查看对应的包依赖。pipdeptree用法介绍

2. vscode调试时无法定位其他库代码:

参照如下配置 vscode调试无法定位其他库代码配置传送门

3. GLM4官方SDK中的JWT版本不兼容:

因为bisheng采用的fastapi_jwt_auth自从2020年就没更新了,而fastapi_jwt_auth依赖的Pyjwt版本也很低,GLM4的Pyjwt版本为最新的版本,所以需要将GLM4中的SDK对应的Pyjwt发送的代码部分更改。主要更改的地方为添加.decode(“utf-8”)

ret = jwt.encode(
        payload=payload,
        key=secret,
        algorithm="HS256",
        headers={"alg": "HS256", "sign_type": "SIGN"},
    ).decode("utf-8")

  • 31
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值