Langchain-Chatchat 在 AutoDL 环境如何用 tools 下脚本完成模型注册与一键启动
2026/9/10 18:52:25 网站建设 项目流程

Langchain-Chatchat 在 AutoDL 环境如何用 tools 下脚本完成模型注册与一键启动

【免费下载链接】Langchain-ChatchatLangchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat

目标是在 AutoDL 实例上把 Langchain-Chatchat 跑起来:用 Xinference 托管本地 GLM-4-9B-Chat(LLM)和 bge-large-zh-v1.5(embedding),再让 chatchat 连上这两个模型提供 RAG 对话。仓库的 tools/autodl_start_script 目录提供了一组针对 AutoDL 的 bash 脚本,把"下载模型 → 启动 Xinference → 启动模型 → 启动 chatchat"串成一条命令;docs/install/README_xinference.md 则给出了同一套流程的逐条手动命令,两者可以互相对照。

准备条件:conda 环境与模型文件

脚本本身只负责启动,环境要提前按 Xinference 环境配置手册 建好。脚本里用到的 conda 环境名分别是basechatchatxinference,文档中 chatchat 与 xinference 环境均要求 Python 3.8:

# chatchat 环境 conda create -p ~/miniconda3/envs/chatchat python=3.8 conda activate ~/miniconda3/envs/chatchat pip install langchain-chatchat -U pip install xinference_client faiss-gpu "unstructured[pdf]" # xinference 环境 conda create -p ~/miniconda3/envs/xinference python=3.8 conda activate ~/miniconda3/envs/xinference pip install xinference --force pip install tiktoken sentence-transformers

模型文件方面,脚本内写死了两处路径:

  • LLM:/root/autodl-tmp/glm-4-9b-chat,由 download_model.sh 下载,无需手动准备;
  • embedding:/root/model/bge-large-zh,下载脚本不会处理它,需要你自行把模型放到该目录,或按文档说明修改注册脚本里的model_uri——文档在注册脚本一节明确标注"模型路径需要根据实际情况修改"。

把脚本放到 /root 并核对注册脚本

startup.sh 中调用的是bash /root/download_model.shbash /root/start_xinference.shbash /root/start_chatchat.sh,start_xinference.sh 内部还会调用bash /root/start_models.shbash /root/start_models_emb.sh。也就是说这一组脚本必须放在 AutoDL 实例的/root目录下才能按原样运行,把 tools/autodl_start_script 里的全部.sh拷过去即可。

先检查 model_registrations.sh 和 model_registrations_emb.sh 中的model_uri是否与你的模型实际位置一致。LLM 注册内容的关键字段:

{ "model_name": "autodl-tmp-glm-4-9b-chat", "context_length": 2048, "model_family": "glm4-chat", "model_specs": [ { "model_uri": "/root/autodl-tmp/glm-4-9b-chat", "model_size_in_billions": 9, "model_format": "pytorch", "quantizations": ["none"] } ], "prompt_style": { "style_name": "CHATGLM3" } }

embedding 注册的关键字段:model_nameautodl-tmp-bge-large-zhdimensions768、max_tokens512、model_uri/root/model/bge-large-zh

一次性模型注册

注册接口是 Xinference 的http://127.0.0.1:9997/v1/model_registrations/LLM/v1/model_registrations/embedding,请求体里带"persist":true,即注册会持久保存。注册不在一键启动流程里startup.sh不会调用这两个脚本;按文档给出的顺序,在 Xinference 服务可用后手动执行一次即可:

bash /root/model_registrations.sh bash /root/model_registrations_emb.sh

注册只做一次,之后每次重启实例直接走一键启动;如果换了模型名或路径,再重新注册。

一键启动:bash startup.sh

/root下执行:

bash /root/startup.sh

执行前需要了解这个脚本的副作用:

  1. 删除xinference-output.logchatchat-output.log两个日志文件及对应 pid 文件;
  2. 杀掉本机上 xinference 和 chatchat 的残留进程——先按 pid 文件kill,再用ps -ef | grep -w兜底kill -9
  3. base环境中执行pip install codewithgpu并下载模型(有网络下载动作);
  4. 拉起两个常驻服务进程。

它随后按固定顺序执行三步:

第一步:下载模型。download_model.sh 的内容是:

cd /root/autodl-tmp && conda run -n base pip install codewithgpu && conda run -n base cg down xxxiu/glm-4-9b-chat

即通过 codewithgpu 的cg down把 glm-4-9b-chat 下载到/root/autodl-tmp

第二步:启动 Xinference 并拉起模型。start_xinference.sh 在xinference环境后台运行xinference-local,日志写入xinference-output.log,然后阻塞等待日志出现Uvicorn running on http://127.0.0.1:9997,确认服务就绪后才执行start_models.shstart_models_emb.sh

  • start_models.sh:POST /v1/models启动 LLM,model_nameautodl-tmp-glm-4-9b-chatmodel_engine为 Transformers,model_format为 pytorch,quantization为 none,n_gpu为 auto,replica为 1;
  • start_models_emb.sh:POST /v1/models启动 embedding,model_uidbge-large-zh-v1.5,注册名autodl-tmp-bge-large-zhreplica为 1。

第三步:启动 chatchat。start_chatchat.sh 在chatchat环境执行export CHATCHAT_ROOT=/root/chatchat-data && chatchat start -a,日志写入chatchat-output.log,阻塞等待日志出现URL: http://0.0.0.0:6006后把进程号写入chatchat.pid并输出chatchat started

验证启动结果

脚本自带了验证逻辑,正常跑完后依次会有:

  • xinference-output.log中出现Uvicorn running on http://127.0.0.1:9997,脚本输出xinference-local started successfullymodel started successfully
  • xinference.pidchatchat.pid两个文件生成;
  • chatchat-output.log中出现URL: http://0.0.0.0:6006,脚本输出chatchat started

如果脚本卡在某个等待循环里不往下走,说明对应服务没有输出预期标记,先看对应的xinference-output.logchatchat-output.log排查。

手动执行路径(可选)

如果不想整包运行startup.sh,可以完全按 README_xinference.md 的步骤手动走一遍,顺序为:

# 1. 启动 Xinference xinference-local # 2. 注册与启动模型(各脚本内容见上文的两个注册、两个启动脚本) bash ./model_registrations.sh bash ./model_registrations_emb.sh bash ./start_models.sh bash ./start_models_emb.sh # 3. 初始化 chatchat 配置(chatchat 环境内) chatchat-config basic --verbose true chatchat-config basic --data ~/chatchat-data chatchat-config model --set_model_platforms "[{ \"platform_name\": \"xinference\", \"platform_type\": \"xinference\", \"api_base_url\": \"http://127.0.0.1:9997/v1\", \"api_key\": \"EMPT\", \"api_concurrencies\": 5, \"llm_models\": [ \"autodl-tmp-glm-4-9b-chat\" ], \"embed_models\": [ \"bge-large-zh-v1.5\" ], \"image_models\": [], \"reranking_models\": [], \"speech2text_models\": [], \"tts_models\": [] }]" chatchat-kb -r chatchat -a

其中--set_model_platforms把 chatchat 指到本机 Xinference(http://127.0.0.1:9997/v1),LLM 用注册名autodl-tmp-glm-4-9b-chat,embedding 用bge-large-zh-v1.5。手动路径中 chatchat 配置的数据目录是~/chatchat-data,与一键脚本里CHATCHAT_ROOT=/root/chatchat-data指向同一位置(AutoDL 实例的 home 即/root)。

限制与差异

  • 脚本内的调用路径全部硬编码为/root/*.sh,日志、pid 文件也落在/root工作目录,换机器或换目录需要先改脚本。
  • 注册和启动脚本固定了模型组合:GLM-4-9B-Chat(pytorch、非量化)+ bge-large-zh-v1.5。要换其他模型,需按文档提示修改model_uri等字段后重新注册、重新下发/v1/models请求,并同步改--set_model_platforms中的模型列表。
  • 两处命令写法不完全一致:仓库脚本 start_chatchat.sh 用的是chatchat start -a,而 README_xinference.md 手动步骤写的是chatchat -a。一键流程以脚本实际内容为准。
  • startup.shkill -9名称匹配 xinference / chatchat 的进程并删除旧日志,只应在专用 AutoDL 实例上运行,不要在有同名片名进程的其他机器上直接执行。

【免费下载链接】Langchain-ChatchatLangchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain项目地址: https://gitcode.com/GitHub_Trending/la/Langchain-Chatchat

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询