ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

FastGPT 使用 One API 接入 Azure、ChatGLM 和本地模型:TaoToken 统一 Key 的配置清单

FastGPT 使用 One API 接入 Azure、ChatGLM 和本地模型:TaoToken 统一 Key 的配置清单 1. FastGPT 多模型接入的真实痛点为什么你的 One API 渠道总是匹配失败FastGPT 本身只内置了 OpenAI 的对话与向量模型配置当你需要接入 Azure OpenAI、智谱 ChatGLM、或者跑在自己机器上的本地模型时直接改 FastGPT 的环境变量是行不通的。原因很简单FastGPT 只认 OpenAI 格式的/v1/chat/completions接口而 Azure 的 URL 结构、ChatGLM 的鉴权方式、本地模型的端口和模型名全都对不上。这时候 One API 就派上用场了。它做的事情是把不同厂商的接口统一转换成 OpenAI 格式FastGPT 只需要把OPENAI_BASE_URL指向 One API把CHAT_API_KEY换成 One API 生成的令牌剩下的路由、鉴权、模型映射全部由 One API 内部完成。听起来很顺但实际操作时最容易踩的坑是One API 的渠道里填的模型名必须和 FastGPT 请求时传的model参数完全一致差一个字符都会报model not found。我试过在 FastGPT 里配置 ChatGLM 时One API 渠道填的是glm-4但 FastGPT 的config.json里写的是chatglm4结果请求直接 404。后来把两边对齐才通。所以这篇内容的核心不是教你装 One API而是把「渠道配置 → 令牌生成 → FastGPT 环境变量 → 模型映射 → curl 验证」这条链路完整跑通并且给出可复制的配置片段。适合谁看已经在用 FastGPT 做知识库问答但需要接入 Azure 或国产模型的人手里有多个厂商 Key想统一成一个入口的人本地跑了 Ollama 或 vLLM想让 FastGPT 调用的人。下面从 One API 的渠道配置开始一步步给到可落地的参数。2. TaoToken 统一 Key 在 One API 中的接入位置与前置准备在讲 One API 渠道配置之前先说明 TaoToken 在这个架构里的位置。TaoToken 提供的是 OpenAI 兼容的统一 API 入口你可以把它理解成「上游聚合层」One API 作为 FastGPT 的网关TaoToken 作为 One API 的上游渠道之一。这样做的收益是你不需要在 One API 里分别填 Azure 的 endpoint、ChatGLM 的 key、本地模型的地址而是把 TaoToken 当成一个渠道用它的统一 Key 去覆盖多个模型。具体来说One API 的渠道配置里渠道类型选「OpenAI」Base URL 填 TaoToken 的 API 地址https://taotoken.net/api模型列表里填你实际要用的模型 ID比如gpt-4o、glm-4、claude-3-5-sonnet等。One API 会把 FastGPT 传来的模型名透传给 TaoTokenTaoToken 再根据模型名路由到对应的上游。这样 FastGPT 侧只需要一个令牌就能访问多个厂商的模型。前置准备需要三样东西第一One API 已经部署并可以登录Docker 或 Sealos 都行本文不展开部署步骤第二TaoToken 的 API Key在控制台创建第三FastGPT 的docker-compose.yml或环境变量文件可编辑。如果你还没有 TaoToken 的 Key可以先到 TaoToken 控制台 创建一个创建时注意保存页面关闭后不再显示完整 Key。另外提醒一点One API 的渠道里Base URL 不要带/v1因为 One API 会自动拼接。如果你填了https://taotoken.net/api/v1最终请求会变成/v1/v1/chat/completions直接 404。这个坑我在 Azure 渠道上也踩过Azure 的 endpoint 需要带/openai/deployments/xxx但 One API 的 OpenAI 渠道类型只认标准路径所以 Azure 建议用「Azure OpenAI」渠道类型单独配不要和 TaoToken 混在同一个渠道里。3. 可复制的 One API 渠道配置与 FastGPT 环境变量片段这一节给到具体的配置片段。先看 One API 的渠道配置在「渠道」页面点击「添加渠道」按下面的 JSON 结构填写One API 的渠道编辑界面支持直接粘贴 JSON 批量导入{ type: 1, name: taotoken-unified, base_url: https://taotoken.net/api, key: sk-你的TaoTokenKey, models: gpt-4o,gpt-4o-mini,glm-4,glm-4-flash,claude-3-5-sonnet-20241022,text-embedding-3-small, group: default, model_mapping: {\chatglm4\:\glm-4\,\azure-gpt4\:\gpt-4o\} }这里type: 1代表 OpenAI 兼容渠道models字段列出你要暴露给 FastGPT 的模型名model_mapping是可选的映射表用于把 FastGPT 里的别名映射到 TaoToken 的真实模型 ID。比如 FastGPT 的config.json里写的是chatglm4但 TaoToken 只认glm-4就可以通过映射自动转换省去改 FastGPT 配置的麻烦。如果你要单独接 Azure渠道类型选「Azure OpenAI」Base URL 填https://你的资源名.openai.azure.com模型列表填部署名比如gpt-4o-deploy。本地模型Ollama则选「OpenAI」渠道Base URL 填http://host.docker.internal:11434/v1模型填qwen2.5:7b之类。注意 Docker 里访问宿主机要用host.docker.internalLinux 下可能需要加extra_hosts。然后是 FastGPT 的环境变量在docker-compose.yml的fastgpt服务下修改environment: - OPENAI_BASE_URLhttp://one-api:3000/v1 - CHAT_API_KEYsk-OneAPI生成的令牌 - EMBEDDING_BASE_URLhttp://one-api:3000/v1 - EMBEDDING_API_KEYsk-OneAPI生成的令牌如果 One API 和 FastGPT 不在同一个 Docker 网络one-api换成实际 IP 或域名。Sealos 部署的话用内网地址可以省流量。改完后docker-compose down docker-compose up -d重启 FastGPT。最后是 FastGPT 的模型配置文件/projects/app/src/data/config.json找到llmModels数组添加 ChatGLM 的条目{ model: glm-4, name: ChatGLM-4, avatar: /imgs/model/glm.svg, maxContext: 128000, maxResponse: 4000, quoteMaxToken: 100000, maxTemperature: 1.0, charsPointsPrice: 0, censor: false, vision: false, datasetProcess: true, usedInClassify: true, usedInExtractFields: true, usedInToolCall: true, usedInQueryExtension: true, toolChoice: true, functionCall: false, defaultConfig: {} }向量模型加到vectorModels里模型名要和 One API 渠道里的text-embedding-3-small一致。改完重启 FastGPT模型选择列表里就会出现 ChatGLM-4。4. 用 curl 验证 Azure 与本地模型响应的完整动作配置改完不代表通了必须用 curl 直接打 One API 的接口确认模型路由正确。先验证 TaoToken 渠道下的 ChatGLMcurl -X POST http://localhost:3000/v1/chat/completions \ -H Authorization: Bearer sk-OneAPI令牌 \ -H Content-Type: application/json \ -d { model: glm-4, messages: [{role: user, content: 用一句话介绍你自己}], stream: false }如果返回的 JSON 里有choices[0].message.content说明 One API 成功路由到 TaoTokenTaoToken 再路由到 ChatGLM。如果报model not found检查 One API 渠道的models字段是否包含glm-4以及model_mapping是否把别名映射对了。验证 Azure 渠道curl -X POST http://localhost:3000/v1/chat/completions \ -H Authorization: Bearer sk-OneAPI令牌 \ -H Content-Type: application/json \ -d { model: gpt-4o-deploy, messages: [{role: user, content: hello}], max_tokens: 50 }Azure 的报错通常是 401原因是 Key 或 endpoint 填错。注意 Azure 的 Key 是资源密钥不是 OpenAI 的 Key两者不通用。如果返回DeploymentNotFound说明模型名和 Azure 里的部署名不一致。验证本地模型Ollamacurl -X POST http://localhost:3000/v1/chat/completions \ -H Authorization: Bearer sk-OneAPI令牌 \ -H Content-Type: application/json \ -d { model: qwen2.5:7b, messages: [{role: user, content: 11等于几}] }本地模型最常见的报错是connection refused因为 One API 在 Docker 里访问不到宿主机的localhost:11434。解决办法是把 Base URL 改成http://host.docker.internal:11434/v1或者在docker-compose.yml里给 One API 加extra_hosts: - host.docker.internal:host-gateway。三个 curl 都返回正常结果后再回到 FastGPT 界面新建对话选择对应模型测试。如果 FastGPT 报reading choices错误说明 One API 返回的结构不对通常是渠道类型选错了比如把 Azure 配成了 OpenAI 类型。5. 本篇常见错误排查401、local proxy failed、reading choices 与 OAuth第一个高频错误是401 Unauthorized。在 One API 渠道里出现 401九成是 Key 填错。TaoToken 的 Key 以sk-开头Azure 的 Key 是 32 位十六进制字符串ChatGLM 的 Key 格式又不一样。如果你把 TaoToken 的 Key 填到了 Azure 渠道里必然 401。排查方法在 One API 的「日志」页面看请求详情里面会显示实际使用的渠道和 Key 前缀。第二个是local proxy failed。这个报错通常出现在 One API 尝试访问本地模型时原因是 Docker 网络隔离。One API 容器里的localhost指向容器自身不是宿主机。解决办法前面提过用host.docker.internal替代localhost。如果是 Linux 环境还需要在docker-compose.yml里显式声明extra_hosts。另外如果你用了 TaoToken 的 API 地址确认容器能出网curl https://taotoken.net/api在容器内能通。第三个是reading choices错误。FastGPT 收到 One API 的响应后会解析choices字段。如果 One API 返回的是错误信息而不是标准结构FastGPT 就会报这个错。常见原因One API 渠道的模型名和请求的模型名不匹配One API 返回了{error: {message: model not found}}FastGPT 解析不到choices。排查方法直接 curl One API看返回体里有没有choices。如果没有就是模型映射问题。第四个是 OAuth 相关报错。如果你在 One API 里配置了 Claude 渠道可能会遇到OAuth token expired。这是因为 Claude 的鉴权方式和其他厂商不同One API 的 Claude 渠道需要填 session key 而不是 API key。建议 Claude 模型统一走 TaoToken 渠道用 OpenAI 兼容格式调用避免 OAuth 的坑。TaoToken 的 接入文档 里有各模型的调用示例可以直接参考。还有一个容易忽略的点One API 的令牌有额度限制默认 root 用户 200 刀。如果 FastGPT 报insufficient quota去 One API 的「令牌」页面编辑额度或者用 root 账号给自己充值。这个不是技术问题但卡住过不少人。6. 从 One API 到 TaoToken统一 Key 后的模型管理与调用建议配置跑通之后日常维护的重点就变成了模型管理。One API 的渠道列表里你可以给每个渠道设置优先级和权重。比如 TaoToken 渠道设权重 100Azure 渠道设权重 50这样大部分请求走 TaoTokenAzure 作为备用。如果某个模型在 TaoToken 上响应慢可以在model_mapping里把它单独映射到 Azure 渠道。对于长期做编码或 Agent 开发的场景建议把常用模型固定下来不要频繁改 FastGPT 的config.json。做法是在 One API 的model_mapping里做一层别名FastGPT 侧只写别名比如my-gpt4、my-glm实际路由由 One API 控制。这样换模型时只改 One API不用重启 FastGPT。如果你需要频繁切换模型做对比测试可以用 TaoToken 模型对话 直接验证各模型的响应质量确认后再配到 One API 里。对于需要长期跑 Agent 任务的场景Coding Plan 提供了更稳定的调用额度适合替代按量计费的零散 Key。最后给一个实用技巧One API 的「日志」页面可以按渠道筛选如果某个渠道连续报错直接禁用FastGPT 侧无感知。另外FastGPT 的config.json改完后如果不想重启整个容器可以只重启fastgpt服务docker-compose restart fastgpt。但环境变量改动必须down再up因为环境变量在容器创建时注入restart不会重新读取。整套流程的核心就一句话One API 做路由TaoToken 做统一 KeyFastGPT 只认一个 Base URL 和一个令牌。把模型映射对齐curl 验证通过剩下的就是日常维护了。
返回列表