看了许多材料,为了利用大模型构建以对话方式驱动的本地应用程序需要使用LangChain-chatchat,其基本介绍参考Langchain-Chatchat项目
通过查询资料,查到win上安装流程使用免费的通义千问 api 最轻量化部署Langchain-Chatchat,原以为在信创Linux系统上非常简单,但实践下来一堆坑,记录备忘吧…
需要解决几个问题
1 什么是轻量化部署
我理解是就是仅利用远程大模型,而不是调用本地大模型,根据这个思路,并检查requirement_x系列文件的实际依赖,如果需要轻量化部署需要安装
pip install -r requirements_lite.txt (全量安装则需要安装 pip install -r requirements.txt)
pip install -r requirements_api.txt
pip install -r requirements_webui.txt
1* 因为安装的过程中涉及多个较大安装包,可能会把空间不够,例如报错“No space left on device”,这是临时文件夹太小了,可以尝试自定义临时文件夹
pip install -b $HOME/AI/tmp -r requirements_lite.txt
2 关于linux适配,把requirement_x系列文件中,把python-magic-bin; sys_platform == 'win32’这行去掉,因为这仅仅是适配Win系统的选项
unstructured[all-docs] # ==0.11.8
# python-magic-bin; sys_platform == 'win32' 这行去掉
SQLAlchemy==2.0.25
3 执行python 中文报错的问题
如果按python startup.py -a --lite 执行,回报一个中文乱码的错 “… /xe3 …” 代码中中文不是用ascII编码,单个python文件很简单,每个文件头部加上 #coding=utf8就行,但是这里涉及到一连串文件,因此改为 python3 startup.py -a --lite python3会自动按uft8解释执行
4 关于sqlite3的依赖问题,
在启动时,因涉及SQLAlchemy==2.0.25,要用到sqlite3数据库,虽然大部分linux操作系统都安装了sqlite3,但python3不一定能调用,主要是缺少相关的so文件,需要安装sqlite3开发库ibsqlite3-dev。用root用户安装
sudo apt-get install libsqlite3-dev
安装成功后
找到 $HOME/python/python3.10.6/setup.py文件
然后核对该文件,以下sqlite include path是否包含了sqlite3ext.h sqlite3.h 头文件,我在下面加黑的目录里找到
sqlite_inc_paths = [ ‘/usr/include’,
‘/usr/include/sqlite’,
‘/usr/include/sqlite3’,
‘/usr/local/include’,
‘/usr/local/include/sqlite’,
‘/usr/local/include/sqlite3’,
]
然后按下列步骤重新编译
cd $HOME/python/python3.10.6/
make clean
./configure
make && make install
如果发现权限不够
则
sudo make clean
./configure
sudo make && sudo make install
编译成功后,在当前目录下用 find . -name _sqlite3.cpython-310-x86_64-linux-gnu.so 可以找到这个so
然后把这个so复制到python lib目录/usr/local/lib/python3.10/lib-dynload/的目录下
5 最新的langchain-chatchat已经继承了qwen 文言一心等模型配置
配置相应的 api-key即可
启动python3 startup.py -a --lite
启动日志
自动出现界面,0.0.0.0:8501 然后可以测试对话