FastGPT 接入自定义模型:config.json 与 OneAPI 渠道全流程
最后更新:
FastGPT 接入 kkaiapi 两条路:改 docker-compose 的 OPENAI_BASE_URL 直连 https://api.kkaiapi.com/v1,或在 OneAPI 加一个渠道做统一网关,再到 config.json 注册模型重启即生效。知识库场景用本地 bge-m3 做索引,生成侧按任务分层选 DeepSeek、GLM、Claude,质量和账单都能兼顾。
先选路线:config.json 直连还是 OneAPI 渠道
结论先行:只是想让 FastGPT 用上 DeepSeek、Claude、GPT 这些模型,不需要多上游管理,就直接改 docker-compose 环境变量加 config.json 注册模型,十分钟搞定,组件零增加。同时维护多个上游、多套应用要共用一个模型网关,再上 OneAPI 或 New API 做中转,FastGPT 只对接网关一个地址。 两条路线最终接的都是同一个 OpenAI 兼容端点 https://api.kkaiapi.com/v1,一个 Key 可调 deepseek-v4-flash、deepseek-v4-pro、glm-5、kimi-k2.6、claude-sonnet-4-6、claude-opus-4-7、gpt-5.5 等全部模型,后续换模型不换端点。
| 对比项 | config.json 直连 | OneAPI 渠道中转 |
|---|---|---|
| 适合谁 | 单一上游,追求最少组件 | 多上游混管,多项目共用网关 |
| 改动点 | docker-compose 环境变量 + config.json | OneAPI 加渠道建令牌,FastGPT 改一次指向 |
| 换上游成本 | 改环境变量后重启容器 | OneAPI 后台改渠道,FastGPT 无感 |
| 额外维护 | 无 | 多维护一个 OneAPI 服务 |
| 额度分配 | 上游控制台按 Key 查看 | OneAPI 里可再按令牌分配额度 |
方式一:docker-compose 加 config.json 直连
第一步,改 docker-compose.yml 中 fastgpt 服务的两个环境变量。OPENAI_BASE_URL 必须带 /v1 后缀,FastGPT 会自动拼接 /chat/completions,自己写全路径反而 404。 第二步,在挂载进容器的 config.json 里注册模型。llmModels 数组每个对象对应一个模型,复制下面的条目改 model 和 name,就能再注册 claude-sonnet-4-6、glm-5、kimi-k2.6 等其它模型。datasetProcess、usedInClassify 这些开关决定该模型能否出现在知识库处理、问题分类等场景的下拉框里。 第三步,执行 docker compose restart fastgpt 让配置生效,新建一个简易应用,模型下拉框里能看到新模型并成功对话即接入完成。FastGPT 4.9 之后也可以在管理后台的模型界面完成同样的注册,字段含义一致,本文以 config.json 为准。
environment:
- OPENAI_BASE_URL=https://api.kkaiapi.com/v1
- CHAT_API_KEY=sk-你在kkaiapi控制台生成的Key{
"llmModels": [
{
"provider": "Other",
"model": "deepseek-v4-flash",
"name": "deepseek-v4-flash",
"maxContext": 128000,
"maxResponse": 8000,
"quoteMaxToken": 16000,
"maxTemperature": 1.2,
"vision": false,
"datasetProcess": true,
"usedInClassify": true,
"usedInExtractFields": true,
"usedInToolCall": true,
"toolChoice": true
}
]
}方式二:OneAPI 加渠道,FastGPT 无感切换
FastGPT 官方 docker-compose 默认就带 OneAPI,搜 fastgpt oneapi 的人多数卡在渠道怎么填。同样三步: 第一步,进 OneAPI 后台的渠道页新建渠道,类型选 OpenAI,代理地址填 https://api.kkaiapi.com,注意这里不带 /v1,OneAPI 会自己拼接路径。模型栏填入要用的模型 ID,密钥填 kkaiapi 的 sk- Key。 第二步,到令牌页新建一个令牌给 FastGPT 专用,FastGPT 的 OPENAI_BASE_URL 指向 OneAPI 地址(同一 compose 里容器互访通常是 http://oneapi:3000/v1),CHAT_API_KEY 填这个令牌。 第三步,先用 curl 打 OneAPI 验证整条链路,通了再回 config.json 注册模型名。渠道模型栏、令牌可用模型、config.json 里的 model 三处必须逐字一致,大小写和横杠都不能差,这是 OneAPI 报无可用渠道的头号原因。
curl http://你的OneAPI地址:3001/v1/chat/completions \
-H "Authorization: Bearer sk-OneAPI令牌" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"ping"}]}'知识库场景:embedding 和 chat 模型怎么搭
知识库应用的效果由两个模型共同决定:embedding 决定找得准不准,chat 决定答得好不好。回答质量差时先查检索,在 FastGPT 的搜索测试里看命中分段对不对,分段都不对就先调 embedding 和分段策略,轮不到 chat 模型背锅。 embedding 的调用有两处:文档入库时全量向量化一次,之后每次提问再向量化一次问题,入库量大但一次性,提问 token 极少。中文知识库推荐用 Ollama 在本地跑 bge-m3 做索引,配到 config.json 的 vectorModels 里,生成侧全部走 kkaiapi,检索质量、数据私密性和成本三头都占。注意换 embedding 模型后旧知识库必须重建索引,不同模型的向量空间不通用。
| 环节 | 推荐选择 | 理由 |
|---|---|---|
| 文档索引 / 向量化 | bge-m3(Ollama 本地部署) | 中文检索效果好,零 token 成本,数据不出内网 |
| 问题分类 / 指代消解 | deepseek-v4-flash | 每轮对话都触发,输出短,快且便宜 |
| 知识库问答生成 | glm-5 / kimi-k2.6 | 中文理解好,长引用拼装稳定 |
| 对外高要求生成 | claude-sonnet-4-6 | 引用忠实度高,幻觉少,文风自然 |
| 复杂推理 / 报告类 | claude-opus-4-7 / gpt-5.5 | 低频高价值任务,错误代价高 |
成本优化:引用长度和系统节点是账单大头
知识库账单的大头不是系统提示词,而是每次提问塞进上下文的引用内容。三个立竿见影的设置: 一,config.json 里的 quoteMaxToken 控制引用上限,多数场景 8000 到 16000 足够,盲目拉满等于每次提问都为无效引用付费。二,问题分类、指代消解这类系统调用全部固定到 deepseek-v4-flash,它们每轮都触发,输出却只有几十 token。三,生成模型按场景分层,内部知识库问答用 glm-5 或 kimi-k2.6,对外客服和高要求文档再上 claude-sonnet-4-6。 kkaiapi 按量计费,支付宝和微信直接充值,没有订阅费,充值后在控制台生成 Key 即可开调。当前价格如下,以 /pricing 实时页为准。
| 模型 | kkaiapi(¥/1M tokens 输入/输出) | 官方价 |
|---|---|---|
| deepseek-v4-flash | ¥0.5 / ¥1 | ¥1 / ¥2 |
| glm-5 | ¥3 / ¥13.5 | ¥4 / ¥18 |
| kimi-k2.6 | ¥5 / ¥20 | ¥6.5 / ¥27 |
| claude-sonnet-4-6 | ¥3 / ¥15 | - |
| claude-opus-4-7 | ¥5 / ¥25 | - |
| gpt-5.5 | ¥4 / ¥25 | - |
| grok-4.5 | ¥2 / ¥6 | ¥14 / ¥42 |
常见问题
FastGPT 改了 config.json 为什么不生效?
最常见是没重启容器,config.json 在启动时读取,改完必须 docker compose restart fastgpt。其次检查 JSON 语法,多一个逗号少一个引号都会让整份配置回退默认。最后确认 docker-compose.yml 确实把这份 config.json 挂载进了容器,路径不对时你改的是一个没人读的文件。
FastGPT 一定要配 OneAPI 吗?
不一定。FastGPT 只认 OpenAI 兼容协议,OPENAI_BASE_URL 直接指向 https://api.kkaiapi.com/v1 就能用全部模型,kkaiapi 本身已聚合多家模型,单上游场景再加 OneAPI 纯属多一层维护。只有需要混合管理多个上游、给不同项目分令牌额度时,OneAPI 才有价值。
FastGPT 能用 Claude 模型吗?
能。Claude 官方是 Anthropic 协议,FastGPT 不直接支持,但通过 OpenAI 兼容中转就绕开了协议差异,model 填 claude-sonnet-4-6 或 claude-opus-4-7,按普通 OpenAI 模型注册即可,工具调用和流式输出都正常。
OneAPI 渠道测试一直报错怎么排查?
按顺序查三处:渠道代理地址是否误填了带 /v1 的形式,OneAPI 渠道这里不带 /v1;渠道模型栏、令牌可用模型、请求里的 model 三处名称是否逐字一致;最后在 OneAPI 所在机器上直接 curl 上游端点,确认服务器网络出得去。逐层验证比盲改配置快得多。
换了 embedding 模型,旧知识库还能用吗?
不能直接用。不同 embedding 模型的向量维度和语义空间不同,混用会让检索结果完全错乱。正确做法是新建知识库选新索引模型后重新导入文档,或对原库触发重建索引,数据量大时注意入库耗时。
知识库回答质量差,该换更贵的 chat 模型吗?
先别。用 FastGPT 自带的搜索测试看检索命中,引用分段没找对时换再贵的生成模型也没用,优先调 embedding、分段大小和检索模式。检索正常而回答依然差,再把生成模型升到 claude-sonnet-4-6 这一档对比效果。