Langchain-Chatchat 本地部署:用 TaoToken 统一 Key 打通模型配置
发布时间:2026/9/29 9:50:23来源:尧图网络
1. 为什么本地知识库总卡在模型接入这一步Langchain-Chatchat 是一套基于 LangChain 思路实现的中文知识库问答方案核心流程是加载文件、读取文本、切分、向量化、检索 top k 片段、拼进 prompt 交给 LLM 生成回答。它最大的价值在于可以完全跑在本地文档不出内网适合企业内部资料问答、个人技术笔记检索这类场景。适合谁已经有一批 PDF、Markdown、Word 文档想搭一个能离线检索又能调用大模型回答的开发者。但真正动手部署过的人都知道卡人的往往不是向量库也不是文档解析而是模型接入配置。Langchain-Chatchat 的model_settings.yaml里要填api_base_url和api_key如果你同时想用对话模型、Embedding 模型、甚至重排模型每个平台一套 Key、一套地址改起来非常碎。更麻烦的是本地部署时经常要切换不同模型做对比Key 散落在多个文件里改错一个就启动失败。我试过把多个平台的 Key 直接写死在配置里结果换模型时来回改还容易把某个 Key 提交到 Git。后来改成用 TaoToken 作为统一的 Key 与 API 通道所有模型走同一个api_base_url和同一个api_keymodel_settings.yaml里只维护一份平台配置切换模型只改模型名。这篇就把configs/model_config.py和.env的可复制骨架给出来演示怎么把 TaoToken 填进去启动后验证对话链路可用。2. TaoToken 作为统一 Key 通道的前置准备TaoToken 在这里扮演的角色是一个统一的模型 API 入口。你不需要为每个模型单独申请 Key也不需要记多个 base_url只要在 TaoToken 控制台创建一个 API Key然后在 Langchain-Chatchat 里把platform_type设成openai因为它兼容 OpenAI 接口格式api_base_url指向 TaoToken 的 API 地址api_key填你创建的 Key就能同时调用对话模型和 Embedding 模型。前置准备分三步。第一步注册并登录 TaoToken 控制台地址是 https://taotoken.net/api-keys 登录后在 API Keys 页面创建一个新 Key复制保存后面配置要用。第二步确认你要用的模型名比如对话用gpt-4o-mini或claude-3-5-sonnetEmbedding 用text-embedding-3-small这些模型名要和你实际在 TaoToken 里可用的模型一致可以在模型对话页面先试一下。第三步确认本地 Python 环境Langchain-Chatchat 建议 Python 3.10用 conda 建一个独立环境避免和系统包冲突。这里有个容易忽略的点TaoToken 的 API 地址是https://taotoken.net/api注意结尾不要多加/v1因为 Langchain-Chatchat 在platform_type: openai模式下会自动拼接/v1/chat/completions这类路径。如果你填成https://taotoken.net/api/v1实际请求会变成/api/v1/v1/...直接 404。这个坑我在第一次配置时踩过排查了半天。提示创建 Key 后先不要急着填进配置文件建议先用 curl 测一下这个 Key 能不能正常调通确认无误再写进model_settings.yaml能省掉很多「到底是 Key 问题还是配置问题」的纠结。3. 可复制的 model_config.py 与 .env 骨架Langchain-Chatchat 新版本用model_settings.yaml管理模型平台但很多教程和旧项目里仍然有configs/model_config.py和.env的写法。这里我把两种都给出骨架你可以按自己安装的版本选。核心思路一致把 TaoToken 当成一个 OpenAI 兼容平台统一填 base_url 和 key。先看.env骨架放在项目根目录# .env # TaoToken 统一 API 通道 TAOTOKEN_API_BASEhttps://taotoken.net/api TAOTOKEN_API_KEYsk-你的TaoTokenKey # 默认对话模型与 Embedding 模型 DEFAULT_LLM_MODELgpt-4o-mini DEFAULT_EMBEDDING_MODELtext-embedding-3-small # 知识库根目录 CHATCHAT_ROOT/data/chatchat_data再看configs/model_config.py的关键片段重点是MODEL_PLATFORMS里只保留一个 TaoToken 平台# configs/model_config.py import os from dotenv import load_dotenv load_dotenv() API_BASE os.getenv(TAOTOKEN_API_BASE, https://taotoken.net/api) API_KEY os.getenv(TAOTOKEN_API_KEY, ) DEFAULT_LLM_MODEL os.getenv(DEFAULT_LLM_MODEL, gpt-4o-mini) DEFAULT_EMBEDDING_MODEL os.getenv(DEFAULT_EMBEDDING_MODEL, text-embedding-3-small) MODEL_PLATFORMS [ { platform_name: taotoken, platform_type: openai, api_base_url: API_BASE, api_key: API_KEY, api_proxy: , api_concurrencies: 5, auto_detect_model: False, llm_models: [ gpt-4o-mini, gpt-4o, claude-3-5-sonnet, ], embed_models: [ text-embedding-3-small, text-embedding-3-large, ], text2image_models: [], image2text_models: [], rerank_models: [], speech2text_models: [], text2speech_models: [], }, ]如果你用的是新版model_settings.yaml对应片段是这样# model_settings.yaml DEFAULT_LLM_MODEL: gpt-4o-mini DEFAULT_EMBEDDING_MODEL: text-embedding-3-small HISTORY_LEN: 3 TEMPERATURE: 0.7 MODEL_PLATFORMS: - platform_name: taotoken platform_type: openai api_base_url: https://taotoken.net/api api_key: sk-你的TaoTokenKey api_proxy: api_concurrencies: 5 auto_detect_model: false llm_models: - gpt-4o-mini - gpt-4o - claude-3-5-sonnet embed_models: - text-embedding-3-small - text-embedding-3-large text2image_models: [] image2text_models: [] rerank_models: [] speech2text_models: [] text2speech_models: []两个骨架的对应关系可以用表格对照配置项.env / model_config.pymodel_settings.yaml说明API 地址TAOTOKEN_API_BASEapi_base_url填 https://taotoken.net/apiAPI KeyTAOTOKEN_API_KEYapi_keyTaoToken 控制台创建平台类型platform_typeplatform_type固定 openai对话模型DEFAULT_LLM_MODELDEFAULT_LLM_MODEL与 llm_models 一致向量模型DEFAULT_EMBEDDING_MODELDEFAULT_EMBEDDING_MODEL与 embed_models 一致配置完成后初始化知识库并启动conda activate chatchat_310 chatchat init # 编辑完 model_settings.yaml 后 chatchat kb -r chatchat start -a启动后页面地址是http://0.0.0.0:8501/接口文档在http://localhost:7861/docs。如果启动时报 httpx 版本相关的错误卸载后装低版本即可pip uninstall httpx -y pip install httpx0.27.24. 验证请求确认 TaoToken 通道真的通了配置写完不代表链路通了一定要做两步验证。第一步是脱离 Langchain-Chatchat直接用 curl 测 TaoToken 的对话接口确认 Key 和地址没问题curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoTokenKey \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [{role: user, content: 用一句话说明什么是向量检索}] }如果返回里有choices[0].message.content说明 Key 和地址都对。如果返回 401检查 Key 是否复制完整返回 404检查地址是不是多写了/v1。第二步是在 Langchain-Chatchat 页面里验证。启动后进入知识库管理上传一个小的 Markdown 或 PDF 文件等它完成向量化然后在对话页提问。成功的结果是回答内容引用了你上传文档里的信息而不是泛泛而谈。这时候可以打开接口文档页http://localhost:7861/docs找到/chat/chat接口用 Swagger 直接发一条请求观察返回的answer字段是否正常。再补一个 Embedding 的验证因为知识库检索依赖它curl https://taotoken.net/api/v1/embeddings \ -H Authorization: Bearer sk-你的TaoTokenKey \ -H Content-Type: application/json \ -d { model: text-embedding-3-small, input: 本地知识库问答 }返回里data[0].embedding是一个长数组说明向量化通道也通了。这两步都过基本可以确认本地部署链路可用。5. 本篇常见错排查配置过程中最容易遇到的是模型名不匹配。model_settings.yaml里llm_models写的是gpt-4o-mini但DEFAULT_LLM_MODEL写成了gpt-4o-mini-2024启动时不会报错但对话时会返回模型不存在。解决办法是保证DEFAULT_LLM_MODEL和llm_models列表里的名字完全一致Embedding 同理。第二个常见错是api_base_url结尾多写/v1。前面提过platform_type: openai会自动拼/v1所以 base_url 只写到https://taotoken.net/api。如果你用的是platform_type: oneapi那 base_url 要写到http://127.0.0.1:3000/v1这是 one-api 的约定和 TaoToken 直连不一样别混用。第三个是 httpx 版本冲突表现为启动时抛TypeError或Client.__init__() got an unexpected keyword argument proxies。这是 httpx 高版本改了参数降级到 0.27.2 即可。如果降级后还有问题检查openai包版本建议pip install openai1.40.0附近版本。第四个是知识库检索为空。上传文档后提问回答里没有引用内容通常是 Embedding 模型和检索时用的模型不一致。检查DEFAULT_EMBEDDING_MODEL和embed_models是否对应以及知识库初始化时用的模型有没有换过。换过 Embedding 模型的话需要重新执行chatchat kb -r重建向量库。第五个是并发相关。api_concurrencies设太大批量向量化时可能触发限流表现为部分文档处理失败。可以先设成 3 到 5稳定后再调高。注意排查时优先用 curl 单独测 TaoToken 接口把「通道问题」和「Chatchat 配置问题」分开能少走很多弯路。6. 后续怎么用这套配置继续扩展这套配置跑通后扩展就很轻了。想加新模型只在llm_models或embed_models列表里加一行模型名api_base_url和api_key都不用动因为都走 TaoToken 这一个通道。想做长期编码或 Agent 类任务可以了解下 Coding Plan地址是 https://taotoken.net/coding-plan 适合需要持续调用模型做代码补全、多轮 Agent 的场景。想先试模型效果直接去模型对话页面 https://taotoken.net/chat 发几条请求确认模型可用再写进配置。接入文档在 https://taotoken.net/doc 里面有各语言 SDK 的调用示例遇到参数问题可以对照查。本地知识库的价值在于数据可控而统一 Key 通道的价值在于配置可控。把这两件事分开后面换模型、加模型、做对比实验都只是改一行模型名的事。
网站建设高端定制企业官网