
1. 本地 FastGPT 接 ChatGLM2-m3e 时 endpoint 到底该填哪FastGPT 智能体开发里接入 ChatGLM2-m3e 模型这件事卡人的地方往往不是模型本身而是 endpoint 这个字段。FastGPT 默认走 OpenAI 的 LLM 和向量模型一旦你想私有化部署用 ChatGLM2-6B 做对话、m3e-large 做向量就得让 OneAPI 把请求转发到正确的地址上。很多开发者本地已经把 FastGPT 和 OneAPI 跑起来了镜像也拉了stawky/chatglm2-m3e:latest端口 6006 也通了结果在 OneAPI 里建渠道时 endpoint 随手填了个https://api.openai.com测试直接 404 或者超时然后就开始怀疑是不是模型没加载成功。我先把这条链路讲清楚FastGPT 负责应用编排和知识库检索它只认 OneAPI 暴露出来的/v1/chat/completions和/v1/embeddingsOneAPI 负责把不同厂商的模型统一成 OpenAI 格式而 ChatGLM2-m3e 这个镜像本身在 6006 端口上提供的是它自己的接口。所以 endpoint 要填的是「OneAPI 能访问到 ChatGLM2-m3e 服务的地址」不是 OpenAI 的地址也不是 FastGPT 的地址。本地部署时通常是http://宿主机IP:6006或者容器网络里的服务名比如http://chatglm2-m3e:6006。这里有个容易忽略的点如果你希望把模型调用链路统一收口、少维护一套转发也可以把 endpoint 指向 TaoToken 的 API 地址https://taotoken.net/api用它的 OpenAI 兼容接口来承接对话和向量请求。这样 OneAPI 里渠道的 Base URL 就写 TaoToken 的地址Key 用你在控制台生成的令牌模型名按平台文档填对应的 ChatGLM 系列或 embedding 模型 ID。对本地已经跑通 FastGPT 的人来说这能省掉自己维护模型服务可用性的麻烦尤其适合边开发边验证的场景。这篇面向的是本地已部署 FastGPT 与 OneAPI 的开发者目标很明确给出可复制的 OneAPI 渠道配置和 FastGPT 模型参数片段再演示一次对话请求确认模型能正常返回。你跟着做能把 ChatGLM2 对话和 m3e 向量这两条链路一次跑通。下面从 OneAPI 渠道配置开始一步步来。2. TaoToken 前置准备与 OneAPI 渠道配置在动 OneAPI 之前先把「凭证」和「地址」这两样东西准备好。凭证就是渠道密钥OneAPI 里叫渠道密钥FastGPT 里叫 API Key。如果你用本地 ChatGLM2-m3e 镜像镜像默认的安全凭证是sk-aaabbbcccdddeeefffggghhhiiijjjkkk也可以通过环境变量sk-key引入。如果你走 TaoToken 承接就去控制台生成一个令牌地址是https://taotoken.net/console生成后形如sk-开头的一串字符这个就是后面 OneAPI 渠道里的 Key。地址这块要分两种情况说清楚因为 endpoint 填错是最高频的翻车点。第一种本地直连 ChatGLM2-m3e 镜像。镜像跑在 6006 端口OneAPI 如果和它在同一个 docker 网络里endpoint 写http://chatglm2-m3e:6006如果 OneAPI 跑在宿主机上、镜像映射到宿主机 6006就写http://127.0.0.1:6006或宿主机内网 IP。注意不要带/v1后缀OneAPI 的渠道 Base URL 一般填到根路径具体以你 OneAPI 版本的渠道类型为准OpenAI 兼容类型通常填到域名或 IP 端口即可。第二种走 TaoToken 承接。这时 OneAPI 渠道的 Base URL 填https://taotoken.net/apiKey 填控制台生成的令牌模型名按平台文档填。这样做的好处是对话和向量都能走同一套 OpenAI 兼容接口OneAPI 侧配置更统一FastGPT 侧也不用改结构。接下来是 OneAPI 里的渠道配置。你需要为 chatglm2 和 m3e-large 各添加一个渠道因为一个是对话模型、一个是向量模型用途不同。进入 OneAPI 后台点「渠道」→「添加渠道」类型选 OpenAI 兼容或自定义然后按下面这张表填。字段chatglm2 渠道m3e 渠道渠道名称chatglm2-localm3e-local类型OpenAI 兼容OpenAI 兼容Base URL你的 endpoint本地或 TaoToken同左密钥sk-aaabbb... 或 TaoToken 令牌同左模型chatglm2m3e分组defaultdefault填完保存OneAPI 会自动做一次渠道测试。如果测试通过说明 endpoint 和 Key 都对如果报错先别急着改 FastGPT回到第 5 节对照报错排查。这里有个细节模型名chatglm2和m3e是你在 OneAPI 里自定义的FastGPT 里引用的就是这两个名字所以要保持一致别一个写chatglm2另一个写chatglm2-6b。渠道建好后去「令牌」页面确认你的令牌能访问这两个模型。OneAPI 的令牌可以限制可用模型如果你建令牌时只勾了 GPT 系列那 chatglm2 和 m3e 是调不通的。这一步很多人会漏表现为 FastGPT 里选得到模型但一发请求就 401 或 model not found。3. 可复制的 FastGPT config.json 与 OneAPI 配置片段这一节给你可以直接粘贴的配置。先看 FastGPT 的config.json核心是往llmModels里加 chatglm2往vectorModels里加 m3e。下面这段是完整片段路径就是 FastGPT 项目根目录下的config.json字段名和原文保持一致你按自己环境改价格和 token 上限即可。{ llmModels: [ { model: chatglm2, name: chatglm2, maxToken: 8000, price: 0, quoteMaxToken: 4000, maxTemperature: 1.2, defaultSystemChatPrompt: } ], vectorModels: [ { model: text-embedding-ada-002, name: Embedding-2, price: 0.2, defaultToken: 500, maxToken: 3000 }, { model: m3e, name: M3E测试使用, price: 0.1, defaultToken: 500, maxToken: 1800 } ] }注意llmModels里如果你原本还有别的对话模型保留它们把 chatglm2 追加进去就行别整个替换掉。vectorModels同理text-embedding-ada-002是 FastGPT 默认的保留m3e 追加。maxToken和quoteMaxToken按你模型实际能力调ChatGLM2-6B 上下文一般 8k 左右quoteMaxToken是引用知识库时的上限设 4000 比较稳。再看 OneAPI 侧的配置。OneAPI 的渠道配置在数据库里但你可以用它的管理 API 或者后台界面操作。如果你习惯用配置文件方式OneAPI 支持通过环境变量或后台导入。下面给一个后台添加渠道时对应的 JSON 结构参考字段名以你 OneAPI 版本为准核心是base_url、key、models三项。{ name: chatglm2-local, type: 1, base_url: https://taotoken.net/api, key: sk-你的令牌, models: chatglm2, group: default }{ name: m3e-local, type: 1, base_url: https://taotoken.net/api, key: sk-你的令牌, models: m3e, group: default }如果你用本地镜像把base_url换成http://chatglm2-m3e:6006或http://127.0.0.1:6006。type字段不同 OneAPI 版本编号可能不同OpenAI 兼容类型一般是 1以你后台下拉框为准。models字段填模型名多个模型用逗号分隔。改完config.json后FastGPT 需要重启才能生效。如果你用 docker compose执行docker compose restart fastgpt如果是源码跑重启 node 进程。重启后进 FastGPT 后台在「模型提供商」或应用编排的模型选择里应该能看到 chatglm2 和 M3E测试使用这两个选项。看不到就检查config.json的 JSON 格式有没有写错比如多了一个逗号FastGPT 启动时会报解析错误。这里补一句关于 TaoToken 的接入文档如果你对 Base URL 和模型 ID 的对应关系不确定可以看https://taotoken.net/doc里面有各模型的调用说明。Coding Plan 适合长期做 Agent 开发的场景地址是https://taotoken.net/coding-plan如果你后面要把 FastGPT 智能体接到编码类任务上可以了解下。4. 验证请求curl 测通对话与向量两条链路配置写完别急着在 FastGPT 里点应用先用 curl 把 OneAPI 这一层测通。这样出问题能快速定位是 OneAPI 还是 FastGPT 的锅。下面两个请求一个测向量一个测对话Authorization 用你在 OneAPI 里建的令牌model 用你刚填的自定义模型名。先测向量模型 m3ecurl --location --request POST https://你的oneapi域名/v1/embeddings \ --header Authorization: Bearer sk-你的令牌 \ --header Content-Type: application/json \ --data-raw { model: m3e, input: [laf是什么] }正常返回是一个 JSONdata数组里有一项embedding字段是一串浮点数长度取决于 m3e 的向量维度。如果返回model not found说明 OneAPI 令牌没勾选 m3e或者渠道里模型名写错了。如果返回 401说明令牌不对或没带Bearer。再测对话模型 chatglm2curl --location --request POST https://你的oneapi域名/v1/chat/completions \ --header Authorization: Bearer sk-你的令牌 \ --header Content-Type: application/json \ --data-raw { model: chatglm2, messages: [{role: user, content: Hello!}] }正常返回的choices[0].message.content里会有模型回复。如果返回里choices是空的或者报reading choices相关错误往下看第 5 节。如果返回超时多半是 endpoint 填的地址 OneAPI 访问不到比如填了127.0.0.1但 OneAPI 在容器里容器里的 127.0.0.1 是它自己不是宿主机。两个 curl 都通了说明 OneAPI 到模型的链路没问题。这时候再进 FastGPT 做端到端验证。创建知识库时选择 M3E 模型注意一旦选择后知识库无法修改向量模型所以建库前想清楚。导入数据后做搜索测试看能不能召回。然后建应用绑定这个知识库模型选 chatglm2发一条消息看是否正常回复。这里有个实测经验不同向量模型的相似度距离不一样m3e 和 text-embedding-ada-002 的分数分布不同知识库搜索的相似度阈值要重新调。你可以在搜索测试里多试几条找到召回和准确率的平衡点。应用只能绑定同一个向量模型的知识库不能跨模型绑定这点在编排多个知识库时要注意。5. 常见报错排查401、local proxy failed、reading choices这一节把接入 ChatGLM2-m3e 时最容易撞上的几个报错列出来对照着查。401 Unauthorized。出现在 curl 或 FastGPT 请求时。原因通常是三类令牌没带Bearer前缀令牌在 OneAPI 里被禁用或过期令牌的可用模型列表里没有 chatglm2 或 m3e。排查方法去 OneAPI「令牌」页面看令牌状态和模型限制重新生成一个不限模型的令牌测试。如果走 TaoToken去https://taotoken.net/api-keys确认令牌有效且额度充足。local proxy failed。这个报错一般出现在 OneAPI 渠道测试或请求转发时意思是 OneAPI 无法连接到渠道的 Base URL。原因endpoint 地址写错、端口不通、容器网络隔离。排查在 OneAPI 所在容器里curl一下你的 endpoint比如curl http://chatglm2-m3e:6006看能不能通。如果 OneAPI 和模型服务不在同一网络把 endpoint 换成宿主机可达的 IP。如果走 TaoToken确认 Base URL 是https://taotoken.net/api且网络能出站。reading choices 相关错误。表现是返回体里没有choices字段或者 FastGPT 报解析失败。原因通常是模型返回格式不是标准 OpenAI 格式或者请求被中间层拦截返回了 HTML 错误页。排查先用 curl 直接打 OneAPI看原始返回。如果返回的是 HTML说明 endpoint 打到了某个 web 服务而不是 API如果返回 JSON 但结构不对检查 OneAPI 渠道类型是否选对OpenAI 兼容类型才能正确转换。OAuth 或鉴权类报错。如果你在 FastGPT 里配的是某些需要 OAuth 的模型会出现 token 获取失败。ChatGLM2-m3e 本地镜像和 TaoToken 的 OpenAI 兼容接口都不需要 OAuth用静态 Key 即可。如果遇到 OAuth 报错检查是不是渠道类型选成了需要 OAuth 的类型改回 OpenAI 兼容。模型选得到但请求失败。FastGPT 里能看到 chatglm2 选项一发请求就失败。检查config.json里model字段和 OneAPI 渠道里的模型名是否完全一致大小写敏感。再检查 FastGPT 的 OneAPI 地址配置FastGPT 通过ONEAPI_URL或配置文件里的地址访问 OneAPI这个地址要能从 FastGPT 容器访问到。知识库搜索召回差。不是报错但很常见。m3e 的相似度阈值和默认模型不同去知识库搜索测试里调similarity参数一般 0.7 到 0.9 之间试。另外确认导入的数据确实被向量化了看知识库的数据量统计。如果你在排查时发现是模型服务本身不稳定可以考虑把对话和向量的 endpoint 统一指向 TaoToken减少本地服务维护成本。接入文档在https://taotoken.net/doc模型对话调试可以用https://taotoken.net/model-chat先验证模型是否正常返回再去改 OneAPI 配置。6. 把链路收口从验证到长期可用的接入方式走到这里你的 FastGPT 应该已经能用 chatglm2 对话、用 m3e 做知识库检索了。回顾一下这条链路FastGPT 发请求给 OneAPIOneAPI 按渠道配置转发到 endpointendpoint 背后的模型服务返回结果OneAPI 转成 OpenAI 格式回给 FastGPT。任何一个环节的地址、Key、模型名对不上都会断。如果你只是本地测试ChatGLM2-m3e 镜像加 OneAPI 这套够用。但如果你要做长期运行的智能体应用本地模型服务的可用性、显存占用、并发能力都是要持续投入的。这时候把 endpoint 收口到 TaoToken 这类 OpenAI 兼容接口OneAPI 侧只维护一套 Base URL 和 KeyFastGPT 侧配置不变能省不少运维精力。API 地址是https://taotoken.net/api控制台在https://taotoken.net/console接入文档在https://taotoken.net/doc。最后给几个实用建议。第一config.json改完一定要校验 JSON 格式可以用python -m json.tool config.json检查。第二OneAPI 渠道建好后先点测试别跳过。第三FastGPT 里知识库的向量模型一旦选定不能改建库前确认好。第四相似度阈值要按 m3e 的实际表现调别照搬默认值。第五如果你后面要接 Claude Code 或做编码类 Agent可以看下 Coding Plan地址是https://taotoken.net/coding-plan它和 FastGPT 的模型接入是两条独立的链路按需选用。把 curl 验证那一步养成习惯每次改完配置先测 OneAPI再测 FastGPT定位问题的速度会快很多。