茴香豆实战
一、租用GPU服务器(我这边选择便宜一些的Autodl)
Autodl:https://www.autodl.com/
二、登录服务器,下载模型
1、处理vim时出现的中文乱码问题
vim /etc/vim/vimrc
#在文件末尾添加如下内容,处理vim时出现的中文乱码问题 set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8
2、查看python的env情况
conda env list
3、更新工具包
apt-get update
apt install net-tools
4、创建一个python3.8.5的环境,名称设置为huixiangdou,再创建一个modelscope环境
(1)创建
conda create -n huixiangdou python=3.8.5
conda create -n modelscope python=3.8.5
(2)激活
source activate modelscope
(3)在此环境中安装modelscope依赖包
pip install modelscope
5、下载千问7B模型
(1)参考地址
https://huggingface.co/internlm/internlm2-chat-7b/tree/main
https://github.com/QwenLM/Qwen
(2)创建目录,创建之前先查看数据盘挂载在哪,我们在数据盘上进行操作
source ~/.bashrc && source activate modelscope
cd /root/autodl-tmp/ && mkdir -p model/qwen_7B
(3)下载源码
cd /root/autodl-tmp/model/qwen_7B && git clone https://github.com/QwenLM/Qwen.git
(4)安装依赖
cd Qwen && pip install -r requirements.txt
(5)下载模型
mkdir -p /root/autodl-tmp/model/qwen_7B/Qwen/modelPath && cd /root/autodl-tmp/model/qwen_7B/Qwen/modelPath
vim qwen_7B_chat_download.py
from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('Qwen/Qwen-7B-Chat', cache_dir='/root/autodl-tmp/model/qwen_7B/Qwen/modelPath/', revision='v1.1.9')
chmod +x qwen_7B_chat_download.py
python qwen_7B_chat_download.py
6、运行cli_demo.py
(1)修改cli_demo.py中的模型路径为你自己的模型路径。
vim /root/autodl-tmp/model/qwen_7B/Qwen/cli_demo.py
DEFAULT_CKPT_PATH = '/root/autodl-tmp/model/qwen_7B/Qwen/modelPath/Qwen/Qwen-7B-Chat'
cd /root/autodl-tmp/model/qwen_7B/Qwen/ && python cli_demo.py
三、茴香豆
0、参考地址
https://github.com/InternLM/HuixiangDou/blob/main/README_zh.md
1、创建目录并激活huixiangdou的python环境
mkdir -p /root/autodl-tmp/huixiangdou && cd /root/autodl-tmp/huixiangdou && source activate huixiangdou
2、下载代码及依赖
# 下载 repo git clone https://github.com/internlm/huixiangdou --depth=1 && cd huixiangdou # 下载聊天话题 mkdir repodir git clone https://github.com/open-mmlab/mmpose --depth=1 repodir/mmpose git clone https://github.com/tpoisonooo/huixiangdou-testdata --depth=1 repodir/testdata # 安装解析 word 文档所需依赖 apt update apt install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig libpulse-dev # 安装 python 依赖 pip install -r requirements.txt
3、下载embedding模型
(1)创建文件夹
mkdir -p /root/autodl-tmp/model/bce-embedding-base_v1
mkdir -p /root/autodl-tmp/model/bce-reranker-base_v1
(2)由于bce模型需要验证,并且需要梯子访问huggingface,我这边手动将文件下载下来上传到服务器上
百度网盘下载地址:https://pan.baidu.com/s/1pDgKoR_UQNH53oVz9ZVZVQ 提取码:kn3c
(3)修改配置文件中bce模型的路径
vim /root/autodl-tmp/huixiangdou/huixiangdou/config.ini
[feature_store] embedding_model_path = "/root/autodl-tmp/model/bce-embedding-base_v1" reranker_model_path = "/root/autodl-tmp/model/bce-reranker-base_v1"
4、把 repodir 的特征保存到 workdir
cd /root/autodl-tmp/huixiangdou/huixiangdou && mkdir workdir
python3 -m huixiangdou.service.feature_store
5、获取Serper搜索的API Key并修改配置文件
Serper官网地址:https://serper.dev/api-key
vim /root/autodl-tmp/huixiangdou/huixiangdou/config.ini
[web_search] # check https://serper.dev/api-key to get a free API key x_api_key = "你的API Key"
6、修改LLM模型路径(你自己下载的模型在哪个目录你就填哪个目录)
vim /root/autodl-tmp/huixiangdou/huixiangdou/config.ini
[llm] enable_local = 1 enable_remote = 0 client_url = "http://127.0.0.1:8888/inference" [llm.server] local_llm_path = "/root/autodl-tmp/model/qwen_7B/Qwen/modelPath/Qwen/Qwen-7B-Chat"
local_llm_max_text_length = 3000
local_llm_bind_port = 8888
6、运行基础版技术助手
cd /root/autodl-tmp/huixiangdou/huixiangdou && python3 -m huixiangdou.main --standalone
7、Web服务
(1)安装Redis
apt update
# 安装
apt install redis-server redis-tools
vim /etc/redis/redis.conf
# 将requirepass注释打开并进行如下设置
requirepass your_password_here
# 启动redis
redis-server /etc/redis/redis.conf
# 查看redis是否启动成功
netstat -nlpt | grep redis
(2)设置环境变量
vim ~/.bashrc
先使用工具生成JWT_SECRET
openssl rand -base64 32
将如下内容添加至文件末尾
export PYTHONUNBUFFERED=1 export REDIS_HOST=127.0.0.1 export REDIS_PASSWORD=redis123 export REDIS_PORT=6379
# 一个JWT_SECRET是指用于签名JSON Web Token (JWT) 的密钥或密钥对 export JWT_SECRET=pZOzhGzAlIbWydElxJLGNu6e5yKsdRyW6srUmTMOrPQ=
# 茴香豆的后台服务端口,因为我租用的GPU服务器开放的端口是8804,所以我这边选择填写8804 export SERVER_PORT=8804
# 这两个参数是飞书的Key,我不接入飞书,忽略即可 export HUIXIANGDOU_LARK_ENCRYPT_KEY=thisiskey export HUIXIANGDOU_LARK_VERIFY_TOKEN=sMzyjKi9vMlEhKCZOVtBMhhl8x23z0AG # set your service endpoint(open to Internet callback from lark and wechat)
# 微信回调地址,填写8804即可 export HUIXIANGDOU_MESSAGE_ENDPOINT=http://127.0.0.1:8804 unset COOKIE_SECURE
刷新环境变量
source ~/.bashrc && source activate huixiangdou
(3)编译前端 & 运行后端服务
a. 安装 Node.js npm (需要版本为 20.x , 安装时, 可根据用户权限需要自行添加 sudo + 命令)
apt update apt install nodejs npm node -v # v20.12.0
b. 如果 node -v 版本太老 (10.x),则需要升级 node 版本
npm install n -g n stable hash -r node -v # v20.12.0
c. 编译项目
cd /root/autodl-tmp/huixiangdou/huixiangdou/web/front-end
npm install && npm run build
d. 安装依赖、运行后端服务
# 安装依赖
cd /root/autodl-tmp/huixiangdou/huixiangdou/ && python3 -m pip install -r web/requirements.txt
# 启动后端服务
cd /root/autodl-tmp/huixiangdou/huixiangdou/ && python3 -m web.main
e. 启动过程中如果遇到报错,就将list类型修改为List(即将小写list类型改为List,不然报python语法错误),如果文件没有导入List,就在文件开头导入List
/root/autodl-tmp/huixiangdou/huixiangdou/web/service/cache.py /root/autodl-tmp/huixiangdou/huixiangdou/web/model/huixiangdou.py /root/autodl-tmp/huixiangdou/huixiangdou/web/service/chat.py /root/autodl-tmp/huixiangdou/huixiangdou/web/service/agent.py
导入语法为:
from typing import List
(4)运行算法 pipeline
a. 先开个终端窗口,启动 LLM hybrid proxy
source ~/.bashrc && source activate huixiangdou
cd /root/autodl-tmp/huixiangdou/huixiangdou/ && python3 -m huixiangdou.service.llm_server_hybrid --config_path config.ini
b. 再开个窗口,监听服务
source ~/.bashrc && source activate huixiangdou
cd /root/autodl-tmp/huixiangdou/huixiangdou/ && python3 -m web.proxy.main
(5)测试 打开服务器 端口,创建知识库测试效果(我这边的公网IP是36.139.234.89,访问11286端口时,系统会自动转发到本地的8804端口)
http://36.139.234.89:11286/
四、新集成个人微信
1、参考地址
https://github.com/InternLM/HuixiangDou/blob/main/docs/add_wechat_accessibility_zh.md
2、注意事项
需要将回调地址中的IP和端口修改为你的公网IP端口,比如我的回调地址就是这个:http://36.139.234.89:11286/api/v1/message/v1/wechat/W6Zq。
当通过公网IP36.139.234.89的11286端口进行回调时,会转发到内网的127.0.0.1:8804端口。