
如何快速實(shí)現(xiàn)REST API集成以優(yōu)化業(yè)務(wù)流程
LangChain-Chatchat默認(rèn)使用的 LLM 模型為 THUDM/chatglm2-6b,默認(rèn)使用的 Embedding 模型為 moka-ai/m3e-base 為例。?
目前最新的版本中基于 FastChat 進(jìn)行本地 LLM 模型接入,目前已經(jīng)正式接入支持的模型達(dá) 30+,具體清單如下:
peft
。注意:如果加載多個(gè)peft模型,你可以通過在任何模型工作器中設(shè)置環(huán)境變量 PEFT_SHARE_BASE_WEIGHTS=true
來使它們共享基礎(chǔ)模型的權(quán)重。以上模型支持列表可能隨 FastChat 更新而持續(xù)更新,可參考 FastChat 已支持模型列表。除本地模型外,本項(xiàng)目也支持直接接入 OpenAI API,具體設(shè)置可參考?configs/model_configs.py.example
?中的?llm_model_dict
?的?openai-chatgpt-3.5
?配置信息。?
對(duì)于構(gòu)建文本向量的模型,目前支持調(diào)用 HuggingFace 中的 Embedding 模型,目前已支持的 Embedding 模型達(dá) 15+,具體支持清單如下:
這里就用阿里云的海外GPU服務(wù)器來演示如何部署基于ChatGLM2-6B本地知識(shí)庫,服務(wù)器基本配置信息如下:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
使用以下命令運(yùn)行安裝腳本:
bash Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
使用以下命令檢查conda是否成功安裝:
conda --version
如果conda成功安裝,您將看到conda的版本號(hào),我這里安裝的是conda 23.5.2。
首先,確信你的機(jī)器安裝了 Python 3.8 – 3.11 版本
python --version
Python 3.8.17
如果沒有安裝或者低于這個(gè)版本,可使用conda安裝環(huán)境
conda create -p /opt/langchain-chatchat/pyenv python=3.8
激活Python虛擬環(huán)境
conda activate /opt/langchain-chatchat/pyenv
關(guān)閉環(huán)境
conda deactivate /opt/langchain-chatchat/pyenv
# 刪除環(huán)境
conda env remove -p /opt/langchain-chatchat/pyenv
這里的路徑可根據(jù)大家的實(shí)際情況來調(diào)整即可
root@iZ6w:/opt/langchain-chatchat# conda activate /opt/langchain-chatchat/pyenv
(/opt/langchain-chatchat/pyenv) root@iZ6w:/opt/langchain-chatchat# python --version
Python 3.8.17
(/opt/langchain-chatchat/pyenv) root@iZ6w:/opt/langchain-chatchat#
更新py庫
pip3 install --upgrade pip
# 拉取倉庫
$ git clone https://github.com/chatchat-space/Langchain-Chatchat.git
# 進(jìn)入目錄
$ cd Langchain-Chatchat
使用pypi源安裝全部依賴(默認(rèn)依賴包括基本運(yùn)行環(huán)境(FAISS向量庫)。如果要使用 milvus/pg_vector 等向量庫,請(qǐng)將 requirements.txt 中相應(yīng)依賴取消注釋再安裝。
pip install -r requirements.txt -i https://pypi.python.org/simple
說明:默認(rèn)安裝不指定鏡像[pip install -r requirements.txt]安裝過程可能會(huì)出現(xiàn)依賴或者其它奇怪的錯(cuò)誤,建議指定鏡像源下載,國外的服務(wù)器用pypi鏡像,國內(nèi)的服務(wù)器可以用阿里源或者清華源。
# 使用阿里源
$ pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/
# 使用清華源
$ pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
安裝依賴的時(shí)候可能會(huì)出現(xiàn)如下錯(cuò)誤:Could not find a version that satisfies the requirement setuptools_scm (from versions: none)
這個(gè)錯(cuò)誤通常在安裝或配置?setuptools_scm
?
包時(shí)遇到問題時(shí)出現(xiàn)。只需要重新安裝setuptools_scm
。
pip install --index-url https://pypi.org/simple/ setuptools_scm
因?yàn)槟P臀募话惚容^大(ChatGLM2-6B的模型權(quán)重文件差不多12G),首先需要先安裝Git LFS
# 添加Git LFS的APT存儲(chǔ)庫。運(yùn)行以下命令將Git LFS的APT存儲(chǔ)庫添加到您的系統(tǒng)中:
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
# 安裝Git LFS。運(yùn)行以下命令來安裝Git LFS:
sudo apt-get install git-lfs
# 安裝完成后,您可以運(yùn)行以下命令來驗(yàn)證Git LFS是否已成功安裝:
git lfs version
# 如果成功安裝,您將看到Git LFS的版本信息。
git-lfs/3.4.0 (GitHub; linux amd64; go 1.20.6)
下載模型放入指定文件目錄中
# 下載 LLM 模型
$ git clone https://huggingface.co/THUDM/chatglm2-6b /your_path/chatglm-6b
# 下載 Embedding 模型
$ git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese /your_path/text2vec
# 模型需要更新時(shí),可打開模型所在文件夾后拉取最新模型文件/代碼
$ git pull
將your_path換成你模型的實(shí)際下載路徑即可,我這里將模型放在?/opt/langchain-chatchat/models
?目錄。
$ git clone https://huggingface.co/THUDM/chatglm2-6b /opt/langchain-chatchat/models/chatglm-6b
$ git clone https://huggingface.co/moka-ai/m3e-base /opt/langchain-chatchat/models/m3e-base
復(fù)制模型相關(guān)參數(shù)配置模板文件 configs/model_config.py.example 存儲(chǔ)至項(xiàng)目路徑下?./configs
?路徑下,并重命名為?model_config.py
。
cp model_config.py.example model_config.py
復(fù)制服務(wù)相關(guān)參數(shù)配置模板文件 configs/server_config.py.example 存儲(chǔ)至項(xiàng)目路徑下 ./configs 路徑下,并重命名為?server_config.py。
cp server_config.py.example server_config.py
在開始執(zhí)行 Web UI 或命令行交互前,請(qǐng)先檢查 configs/model_config.py
和 configs/server_config.py
中的各項(xiàng)模型參數(shù)設(shè)計(jì)是否符合需求:
llm_model_dict
對(duì)應(yīng)模型的 local_model_path
屬性中,如:llm_model_dict={
"chatglm2-6b": {
"local_model_path": "/opt/langchain-chatchat/models/chatglm-6b",
"api_base_url": "http://localhost:8888/v1", # "name"修改為 FastChat 服務(wù)中的"api_base_url"
"api_key": "EMPTY"
}
}
請(qǐng)確認(rèn)已下載至本地的 Embedding 模型本地存儲(chǔ)路徑寫在 embedding_model_dict
對(duì)應(yīng)模型位置,如:
embedding_model_dict = {
"m3e-base": "/opt/langchain-chatchat/models/m3e-base",
}
如果你選擇使用OpenAI的Embedding模型,請(qǐng)將模型的?key
寫入?embedding_model_dict
中。使用該模型,你需要鞥能夠訪問OpenAI官的API,或設(shè)置代理。?
當(dāng)前項(xiàng)目的知識(shí)庫信息存儲(chǔ)在數(shù)據(jù)庫中,在正式運(yùn)行項(xiàng)目之前請(qǐng)先初始化數(shù)據(jù)庫(我們強(qiáng)烈建議您在執(zhí)行操作前備份您的知識(shí)文件)。
0.1.x
版本升級(jí)過來的用戶,針對(duì)已建立的知識(shí)庫,請(qǐng)確認(rèn)知識(shí)庫的向量庫類型、Embedding 模型與 configs/model_config.py
中默認(rèn)設(shè)置一致,如無變化只需以下命令將現(xiàn)有知識(shí)庫信息添加到數(shù)據(jù)庫即可:$ python init_database.py
如果您是第一次運(yùn)行本項(xiàng)目,知識(shí)庫尚未建立,或者配置文件中的知識(shí)庫類型、嵌入模型發(fā)生變化,或者之前的向量庫沒有開啟?normalize_L2
,需要以下命令初始化或重建知識(shí)庫:
$ python init_database.py --recreate-vs
如需使用開源模型進(jìn)行本地部署,需首先啟動(dòng) LLM 服務(wù),如果啟動(dòng)在線的API服務(wù)(如 OPENAI 的 API 接口),則無需啟動(dòng) LLM 服務(wù)。
這里選擇基于多進(jìn)程腳本 llm_api.py 啟動(dòng) LLM 服務(wù)的方式,在項(xiàng)目根目錄下,執(zhí)行 server/llm_api.py 腳本啟動(dòng)?LLM 模型服務(wù):
$ python server/llm_api.py
如果部署服務(wù)器具備單張或者多張GPU顯卡,只需在 llm_api.py 中修改 create_model_worker_app 函數(shù)中,修改如下三個(gè)參數(shù):
gpus=None,
num_gpus=1,
max_gpu_memory="20GiB"
其中,gpus
?控制使用的顯卡的ID,如果 “0,1”;num_gpus
?控制使用的卡數(shù);max_gpu_memory
?控制每個(gè)卡使用的顯存容量。?
在線調(diào)用API服務(wù)的情況下,直接執(zhí)執(zhí)行 server/api.py 腳本啟動(dòng)?API?服務(wù);
python server/api.py
啟動(dòng) API 服務(wù)后,可訪問?localhost:7861
?或?{API 所在服務(wù)器 IP}:7861
?FastAPI 自動(dòng)生成的 docs 進(jìn)行接口查看與測試。
使用 Langchain-Chatchat 主題色啟動(dòng)?Web UI?服務(wù)(默認(rèn)使用端口?8501
)
$ streamlit run webui.py --theme.base "light" --theme.primaryColor "#165dff" --theme.secondaryBackgroundColor "#f5f5f5" --theme.textColor "#000000"
Web UI 對(duì)話界面:
Web UI 知識(shí)庫管理頁面:
如果想快速部署?LangChain-Chatchat?產(chǎn)品來體驗(yàn),可以選擇Docker一鍵部署的方式,比較簡單,只需要先安裝Docker 容器,在Unbuntu環(huán)境中如何安裝 Docker & Docker Compose,可以參考文章 《Quivr 基于GPT和開源LLMs構(gòu)建本地知識(shí)庫 (更新篇)》中的3.2節(jié)。這里不過多贅述。Windows安裝Docker更簡單。
Docker鏡像使用的版本一般會(huì)稍微滯后一些,如果想快速體驗(yàn)最新的版本按前面開發(fā)模式部署會(huì)更合適一點(diǎn)。LangChain-Chatchat?項(xiàng)目使用的 Docker 鏡像地址是:registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0
docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.0
33.9GB
,使用 v0.2.0
,以 nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04
為基礎(chǔ)鏡像embedding
模型:m3e-large
,內(nèi)置 chatglm2-6b-32k
NVIDIA Driver
以及 NVIDIA Container Toolkit
,請(qǐng)參考安裝指南docker logs -f <container id>
查看日志Waiting..
步驟,建議使用 docker exec -it <container id> bash
進(jìn)入 /logs/
目錄查看對(duì)應(yīng)階段日志本文章轉(zhuǎn)載微信公眾號(hào)@技術(shù)狂潮AI
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)