部署项目
To use the PDF Intelligence System:
1. Clone the repository to your local machine.
git clone https://github.com/ArmaanSeth/ChatPDF.git
2. Install dependencies.
pip install -r requirements.txt
3. Run the application.
streamlit run app.py
准备运行环境
1.安装Miniconda
细节省略,求助gpt即可。服务器部署py项目一般用Miniconda。
2.创建和激活环境
conda create -n py3.10 python=3.10
conda activate py3.10
3.安装依赖
pip install -r requirements.txt
如果速度慢,就按照下面的思路处理,然后正常安装即可. 我的下载速度在十多MB/s,ecs机器带宽是3M。
额外小知识.
- 阿里云的带宽是限制流出带宽,不限制流入带宽。
- 流出带宽约等于带宽/8, 3M/8差不多就是400多KB。
- 我之前有在买过其他小平台的服务器,还限制了下载(流入)带宽,也是除8的关系。
- 家用的带宽可以用浏览器测试,一般测速结果的单位是Mbps,看起来挺大,需要除8转换为MBps才是你平时看到的下载速度。
Q:pip install下载速度慢
解决思路: 单独修改 Miniconda 环境的 pip 源为清华源 (推荐方法: 使用 pip config)
4.启动服务器,同时ecs安全组放开端口8051
这样公网ip:8051就可以访问了
Q:上传某些加密pdf会报错
解决思路:暂时别管,换个pdf
Q:首次解析pdf需要下载抱脸的模型,无法访问
解决思路:启动程序前执行export HF_ENDPOINT=https://hf-mirror.com
解决后的效果: 可以看到首次处理pdf时,会下载很多模型
Q:大问题,ecs挂了
上传了1个15M的pdf并点击process解析,还没解析完,约几分钟后,ecs无法登录了。 查看诊断情况如下:
5.重启ecs再次ssh登录
- 磁盘40g还有13g能用
(base) **ecs-user@iZ2vcjfgmjd4jf33hm1b2uZ**: **~** $ df -lh
Filesystem Size Used Avail Use% Mounted on
tmpfs 168M 1.1M 167M 1% /run
efivarfs 256K 7.1K 244K 3% /sys/firmware/efi/efivars
/dev/vda3 40G 25G 13G 68% /
tmpfs 839M 0 839M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/vda2 197M 6.2M 191M 4% /boot/efi
tmpfs 168M 16K 168M 1% /run/user/1000
- PS. ecs-user 的sudo su是免密的
6. 再次运行项目
这次换个小点的pdf,比如自己的简历...
Q:提示OPENAI_API_KEY缺失
Did not find openai_api_key, please add an environment variable `OPENAI_API_KEY` which contains it, or pass `openai_api_key` as a named parameter. (type=value_error)
解决方案: 之前我在硅基流动获取过api key,通过环境变量注入
OPENAI_API_KEY='sk-xxxx'
Q: 目前可以上传文件,但是提问会报错
原因:项目配置文件没有理解透彻,部分需要调整。需要了解代码核心流程,才能明白哪个环节的错。
解决思路:本地看下这个项目,借助AI IDE理解。遇到问题逐个解决即可。
成果:已经走通任意找1个rag项目部署到阿里云公网访问,并尽可能全面记录踩坑记录
因为域名要备案,所以www.deep-ml.cn/ 显示备案页面.
- 后续TODO
- 网站备案
- 申请证书后部署https(以上部署未使用nginx,部署https需要使用nginx,同时做前后端分离代码拆分)
2025-02-27更新
后台常驻运行py项目
screen
# 开启一个终端
screen -S streamlit_app
# 进入终端
screen -r streamlit_app
export OPENAI_API_KEY='sk-xxxx'
# 启动同时把输出写完文件
streamlit run app.py > app.log 2>&1
* 进一步使用80端口启动,在py3.10的conda环境下
(py3.10) ecs-user@iZ2vcjfgmjd4jf33hm1b2uZ:~/py_proj/ChatPDF$
sudo /home/ecs-user/miniconda3/envs/py3.10/bin/streamlit run app.py --server.port 80 > app.log 2>&1
# 从当前screen切换到默认控制台,streamlit_app screen不退出
ctrl a+d
# 查看终端
screen -ls
# 使用终端id进入终端
screen -r [查看终端显示的终端数字]