1. 为什么要在 Linux 上用 podman-compose 跑 FastGPT
FastGPT 是一个基于大语言模型的知识库问答系统,能上传文档、自动切分向量化,再通过可视化 Flow 编排复杂问答流程。它适合想在内网或自有服务器上搭建私有知识库的团队,也适合个人开发者做 RAG 实验。官方主推 docker-compose 部署,但在不少 Linux 发行版上,Docker 的守护进程和 root 权限策略让人不太放心,podman 的 rootless 特性正好补上这块。podman-compose 基本能无缝读取 docker-compose.yml,命令习惯也接近,迁移成本很低。
真正让人卡住的往往不是容器起没起来,而是起来之后模型接不通。FastGPT 本身不直接对接各家模型,它默认走 OneAPI 这类网关,再由网关转发到具体模型服务。于是部署完你会面对一堆配置项:渠道地址、模型重定向、流式与非流式接口、向量模型接口,任何一处写错,知识库索引或对话就会报错。这篇就聚焦部署完成后的那一步——用 TaoToken 统一 Key 和 API 通道,把模型接入一次性配好,并给出可复制的 config 与 settings.json 示例,最后做连通性验证。
我试过在几台内网机器上按这个流程走,最容易出问题的不是 podman 命令,而是接口路径拼接和模型 ID 对不上。下面按“先跑起来、再接通模型、最后验证”的顺序展开,你可以跟着一步步操作。
2. TaoToken 前置准备:拿到统一 Key 和接入地址
TaoToken 在这里扮演的是统一模型通道的角色:你只需要一个 Key、一个 API 地址,就能在 FastGPT 里配置对话模型和向量模型,不用为每个模型单独维护一套凭证。对 FastGPT 来说,它看到的仍然是一个兼容 OpenAI 接口风格的服务,所以配置方式和接 OneAPI 类似,只是地址和 Key 换成 TaoToken 的。
先到官网注册并进入控制台,在 API Keys 页面创建一个 Key。这个 Key 就是后面填进 FastGPT 模型配置里的凭证。接入地址用https://taotoken.net/api,注意这个地址不带任何查询参数,配置时直接作为基础地址填入,FastGPT 会在后面自动追加/v1/chat/completions或/v1/embeddings。
需要提前确认两件事:一是你要用的对话模型 ID 和向量模型 ID,二是这些模型是否支持流式。FastGPT 的“问题优化”功能需要非流式接口,普通对话用流式接口,向量模型则走 embeddings 接口。把这些信息记下来,后面填配置时直接对应。
如果你还没创建 Key,可以走这个入口:API Keys 页面在控制台里,创建后复制保存,页面关闭后一般不再完整显示。接入文档里也写了基础地址和调用方式,配置前扫一眼能少踩坑。
3. 可复制配置:podman-compose 环境变量与 FastGPT 模型配置
3.1 确认容器已经跑起来
假设你已经按 podman-compose 方式把 FastGPT 拉起来了,核心容器包括 fastgpt、oneapi、pg、mongo、mysql、sandbox。先用下面命令确认状态:
podman ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"正常应该看到 fastgpt 监听 3000,oneapi 监听 3001。如果 oneapi 反复重启,先等十几秒再重启一次,早期版本首次连 MySQL 会重试几次。
sudo podman restart oneapi sudo podman logs -f --tail 200 oneapi日志里出现启动完成、监听端口的信息,就说明网关可用了。
3.2 在 FastGPT 里新增模型配置
进入 FastGPT 后台,路径是【账号】->【模型提供商】->【模型配置】->【新增模型】。这里要新增三类:流式对话模型、非流式对话模型、向量模型。
对话模型的基础地址填https://taotoken.net/api,Key 填你在 TaoToken 控制台创建的那个。模型 ID 填你要用的对话模型名。注意 FastGPT 请求时会在基础地址后追加/v1/chat/completions,所以基础地址不要自己再带/v1,否则会拼成/v1/v1/...。
向量模型同理,基础地址一样,FastGPT 会追加/v1/embeddings。模型 ID 填对应的 embedding 模型名。
下面是一个 settings.json 风格的配置示例,字段名对应 FastGPT 模型配置里的项,你可以按实际模型 ID 替换:
{ "llmModels": [ { "model": "your-chat-model", "name": "taotoken-chat-stream", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoTokenKey", "stream": true }, { "model": "your-chat-model", "name": "taotoken-chat-nostream", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoTokenKey", "stream": false } ], "vectorModels": [ { "model": "your-embedding-model", "name": "taotoken-embedding", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoTokenKey" } ] }注意:上面 JSON 是配置结构的示意,实际在 FastGPT 界面里是分字段填写的,不要直接整段粘贴到某个输入框。重点是 baseUrl 不带
/v1,Key 用同一个。
3.3 如果你仍经过 OneAPI 转发
有些部署方案里 FastGPT 先请求 OneAPI,再由 OneAPI 转发。这种情况下,你可以在 OneAPI 里新增一个渠道,渠道地址填https://taotoken.net/api,Key 填 TaoToken 的 Key,然后把模型重定向配好。FastGPT 侧仍然指向 OneAPI 的地址。这样做的代价是多一层转发,好处是 OneAPI 的渠道管理、额度统计还能继续用。
模型重定向的逻辑是:请求里带的模型 ID 作为 key,匹配到后替换成 value,再去请求上游。改完渠道后需要等几分钟,FastGPT 才能刷新到新模型。
4. 验证请求:确认模型通道真的通了
配置完不要直接去建知识库,先用最小请求验证通道。最直接的方式是用 curl 打一次对话接口:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -H "Content-Type: application/json" \ -d '{ "model": "your-chat-model", "messages": [{"role": "user", "content": "你好,回复一个字"}], "stream": false }'返回里如果有choices字段和正常内容,说明 Key 和地址没问题。再验证向量接口:
curl -X POST https://taotoken.net/api/v1/embeddings \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -H "Content-Type: application/json" \ -d '{ "model": "your-embedding-model", "input": "测试文本" }'返回里出现data数组和embedding向量,就说明向量通道也通了。
回到 FastGPT 界面,进入【知识库】新建一个通用知识库,索引模型和文本理解模型选你刚配的向量模型和对话模型。上传一个小文本文件,点开始上传。如果能看到切分后的数据块并且状态变成已就绪,说明整条链路——FastGPT 到 TaoToken 到模型——已经打通。接着去【工作台】创建一个简易应用,AI 模型选流式对话模型,关联刚才的知识库,保存后在底部输入框提问,能返回基于文档的回答就完成了。
5. 本篇常见错排查
报错一:404 或路径重复。最常见的是 baseUrl 里多写了/v1,FastGPT 又追加一次,变成/v1/v1/chat/completions。把 baseUrl 改成https://taotoken.net/api即可。
报错二:401 未授权。Key 复制不完整,或者前后带了空格。重新从控制台复制一次,注意不要带换行。
报错三:模型不存在。模型 ID 拼写和实际不一致,或者该模型在你的账号下没有权限。用第 4 节的 curl 先单独验证模型 ID,确认能返回再填进 FastGPT。
报错四:知识库上传后一直处理中。多半是向量模型没配通。检查向量模型的基础地址和模型 ID,再用 embeddings 的 curl 验证一次。如果文档带图片导致上传失败,把 Word 转成 PDF 再传。
报错五:对话有回复但不引用知识库。检查应用里是否关联了知识库,以及知识库是否已经处理完成。问题优化开关如果打开,对应的模型要选非流式接口,否则会报错。
报错六:oneapi 容器反复重启。首次启动连 MySQL 需要时间,等十几秒后手动重启一次,再看日志确认。
6. 接入完成后的下一步
走到这里,FastGPT 在 Linux 上用 podman-compose 部署、再通过 TaoToken 统一 Key 接入模型这条链路就完整了。日常使用中,如果你要长期跑编码类或 Agent 类任务,可以关注 Coding Plan,把模型调用额度规划得更稳;如果只是想快速验证某个模型效果,直接去模型对话页面试更省事;接入过程中遇到 Key 或地址问题,接入文档里有基础说明,API Keys 页面可以随时新建和轮换凭证。
配置这东西,改完一处最好就用 curl 验一次,别等全配完再一起调,不然报错来源很难定位。