
1. Windows 本地跑 FastGPT 语音问答闭环到底难在哪如果你在 Windows 上折腾过 FastGPT大概率会有一种感觉装是装上了但语音输入和语音输出这两块总是差一口气。文字对话跑通了点麦克风却提示浏览器不支持TTS 配好了工作流里又找不到对应模型LLM 那边 Key 填了一堆测试时却报 401。这篇就把 Windows 本地部署 FastGPT 的 ASR、LLM、TTS 完整链路拆开讲从 WSL 到 Docker从 config.json 到模型渠道最后用 TaoToken 统一接入 LLM让语音问答闭环真正跑起来。FastGPT 是一个基于大模型的知识库问答与工作流编排平台支持知识库检索、工作流编排、语音输入输出。它适合想在本地验证 RAG 效果、做语音助手原型的开发者。Windows 环境下部署 FastGPT 的核心难点不在 FastGPT 本身而在于三件事WSL 与 Windows 的网络互通、Docker 镜像拉取、以及 ASR/LLM/TTS 三类模型的渠道配置。很多人卡在第二步和第三步之间容器起来了模型却调不通。我试过在 Windows 11 WSL2 Docker Desktop 这套组合上从零走一遍踩过的坑主要集中在 localhost 访问、浏览器语音权限、以及模型渠道的 Base URL 填写。下面按可复制的步骤来每一步都给出命令和验证动作你跟着做就能把 ASR 转写、LLM 回复、TTS 播报三个环节逐一验证通过。2. TaoToken 前置准备统一 Key 与 API 通道在配置 FastGPT 的模型渠道之前先把 LLM 的接入通道准备好。FastGPT 支持 AI Proxy 和 One API 两种方式本质上都是通过 OpenAI 标准接口访问模型。如果你手上有多个厂商的 Key管理起来会比较散用 TaoToken 做一个统一的 OpenAI 兼容入口后面在 FastGPT 里只需要填一个 Base URL 和一个 Key模型 ID 按需切换即可。TaoToken 提供 OpenAI 兼容的 API 通道Base URL 是https://taotoken.net/api你需要在控制台创建一个 API Key。创建入口在控制台的 API Keys 页面登录后新建一个 Key复制出来备用。这个 Key 后面会填到 FastGPT 的模型渠道里作为 LLM 的鉴权凭证。模型 ID 方面你可以根据自己需要选择。比如对话用gpt-4o-mini或claude-3-5-sonnet这类通用模型具体可用列表在模型对话页面可以查看。FastGPT 里配置 LLM 时模型 ID 要和 TaoToken 支持的名称一致否则会报 model not found。如果你后续要做长期编码或 Agent 类工作流可以关注 Coding Plan 页面那里有适合持续调用的套餐说明。但本篇的重点是 FastGPT 本地部署所以先把 API Key 拿到手Base URL 记牢后面配置渠道时直接填。这里要提醒一点FastGPT 的模型渠道配置里代理地址填https://taotoken.net/api不要多加/v1或斜杠具体以渠道协议要求为准。如果你填成https://taotoken.net/api/v1部分协议下会拼接出重复路径导致 404。这个坑我在配置时遇到过后面排障章节会细说。3. 可复制配置docker-compose 与 config.json 骨架这一节给出可以直接复制的配置文件骨架。FastGPT 的部署依赖两个核心文件docker-compose.yml和config.json。前者定义容器编排后者定义模型和系统配置。在 WSL 的 Linux 环境里建一个目录比如~/fastgpt把两个文件放进去。先下载官方模板。config.json从 FastGPT 仓库获取cd ~/fastgpt wget https://raw.githubusercontent.com/labring/FastGPT/refs/heads/main/projects/app/data/config.jsondocker-compose.yml使用 PgVector 版本适合知识库索引量在 5000 万以下的情况wget https://raw.githubusercontent.com/labring/FastGPT/refs/heads/main/deploy/docker/docker-compose-pgvector.yml -O docker-compose.yml下载完成后先别急着up。打开docker-compose.yml确认几个关键环境变量。默认配置里数据库用户名和密码是明文默认值本地测试可以先用但要知道生产环境必须改。重点看fastgpt服务的environment段里面有OPENAI_BASE_URL和CHAT_API_KEY这类变量不过 FastGPT 的模型配置主要在config.json里环境变量更多是给容器内部用的。config.json是模型配置的核心。它的结构大致是llmModels、vectorModels、audioModels几个数组。你可以在里面预置模型但更推荐的做法是启动后在 FastGPT 管理后台的模型渠道里配置这样改完即时生效不用重启容器。下面给一个config.json里 LLM 模型条目的骨架你可以按这个格式填{ model: gpt-4o-mini, name: gpt-4o-mini, maxContext: 128000, maxResponse: 4096, quoteMaxToken: 100000, maxTemperature: 1, charsPointsPrice: 0, censor: false, vision: false, datasetProcess: true, usedInClassify: true, usedInExtractFields: true, usedInToolCall: true, usedInQueryExtension: true, toolChoice: true, functionCall: false, defaultSystemChatPrompt: }ASR 和 TTS 的模型条目结构类似但字段不同。ASR 需要model和nameTTS 还需要voices列表。这些在后台配置渠道时会自动生成所以config.json里可以先留空数组启动后在界面上加。Docker 镜像拉取如果慢可以配置镜像加速。在/etc/docker/daemon.json里加registry-mirrors然后重启 Docker。注意这个文件需要 sudo 权限。配置完执行docker-compose up -d等容器全部起来。用docker ps看到 fastgpt、pgvector、oneapi 等容器状态是 Up 就说明启动成功。4. 验证请求ASR 转写、LLM 回复、TTS 播报逐项检查容器起来后先访问 FastGPT。在 Windows 命令行执行ipconfig找到 WSL 的 IP或者直接在 WSL 里执行hostname -I拿到 IP浏览器访问http://ip:3000默认账号root密码1234。登录后进入模型配置开始逐项验证。LLM 验证最简单。在模型渠道里新建一个渠道协议类型选 OpenAI代理地址填https://taotoken.net/apiAPI Key 填你在 TaoToken 控制台创建的那个 Key模型填gpt-4o-mini。保存后到模型配置页面用模型测试功能发一条你好如果返回正常回复说明 LLM 通道通了。如果报 401检查 Key 是否复制完整如果报 model not found检查模型 ID 是否和 TaoToken 支持的一致。ASR 验证需要配置语音识别模型。在渠道里新建一个 ASR 渠道协议选 OpenAI模型填whisper-1或你使用的 ASR 模型 IDBase URL 同样填 TaoToken 的 API 地址。保存后在模型配置里启用。然后创建一个应用在工作流里加一个语音输入节点选择刚配置的 ASR 模型。用麦克风说话看是否能转写出文字。如果浏览器提示不支持语音输入说明你用的是 IP 访问需要改成 localhost具体方法在下一节排障里说。TTS 验证类似。新建 TTS 渠道模型填tts-1音色选alloy或你需要的音色。在工作流里加语音合成节点选择 TTS 模型和音色。运行工作流输入文字看是否能播放出语音。如果没声音检查浏览器是否静音以及 TTS 渠道的模型 ID 是否正确。三个环节都验证通过后把 ASR、LLM、TTS 串到一个工作流里语音输入 → ASR 转写 → LLM 处理 → TTS 合成 → 语音输出。运行一次说一句话看是否能听到回复。这个闭环跑通说明 Windows 本地 FastGPT 的语音问答链路就完整了。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth配置过程中最容易遇到的几个报错这里逐个说清楚原因和解决动作。401 Unauthorized出现在 LLM 或 ASR/TTS 渠道测试时。原因通常是 API Key 填错、Key 已失效、或者 Base URL 拼错。检查 TaoToken 控制台里 Key 是否还在有效状态复制时有没有多空格。Base URL 填https://taotoken.net/api不要加/v1。如果渠道协议选的是 OpenAIFastGPT 会自动拼接/v1/chat/completions你再加/v1就变成/api/v1/v1/...直接 404 或 401。local proxy failed这个报错通常出现在 Docker 容器内部访问外部 API 时。原因是容器网络无法解析或访问taotoken.net。先在 WSL 里执行curl https://taotoken.net/api看是否能通如果 WSL 能通但容器不通检查 Docker 的 DNS 配置。可以在docker-compose.yml里给 fastgpt 服务加dns: 8.8.8.8或者检查 WSL 的/etc/resolv.conf。另一个可能是代理环境变量干扰检查容器里有没有HTTP_PROXY这类变量有的话去掉。reading choices 报错完整报错通常是Cannot read properties of undefined (reading choices)。这说明 FastGPT 收到了非预期的响应结构常见于 Base URL 填错导致返回了 HTML 页面而不是 JSON。用curl直接请求你的 Base URL 加/v1/chat/completions看返回的是不是标准 OpenAI 格式。如果返回的是网页说明 URL 不对。另外检查模型 ID 是否在 TaoToken 支持列表里不支持的模型会返回错误结构。OAuth 相关报错如果你在 FastGPT 里配置了 SSO 或 OAuth 登录报错通常和回调地址有关。本地测试阶段建议先不启用 OAuth用默认的 root 账号登录。如果必须配确保回调地址填的是http://localhost:3000而不是 IP并且和 OAuth 应用里登记的一致。浏览器不支持语音输入这个不是 FastGPT 的错是浏览器安全策略。Chrome 要求语音输入必须在 HTTPS 或 localhost 下才能用。你用 IP 访问时浏览器认为不是安全上下文所以禁用麦克风。解决方法是在 Windows 用户目录下创建.wslconfig文件加入[wsl2] localhostForwardingtrue然后重启 WSL 和 Docker用http://localhost:3000访问。这样 Windows 的 localhost 会转发到 WSL浏览器就认为是在 localhost 下语音输入可用。6. 语义一致 CTA把统一接入用起来LLM 通道用 TaoToken 统一接入后FastGPT 里的模型渠道配置会简单很多。你不需要为每个厂商单独维护 Key只需要在 TaoToken 控制台管理 API Key在 FastGPT 里填一个 Base URL 和一个 Key。模型 ID 按需切换测试通过后直接在工作流里引用。如果你在配置过程中遇到渠道测试失败优先去 API Keys 页面确认 Key 状态然后对照接入文档检查 Base URL 和模型 ID 的填写格式。文档里有各协议的完整参数说明比在界面里试错快得多。语音问答闭环跑通后你可以把 ASR、LLM、TTS 三个节点固化成一个工作流模板后面新建应用时直接复用。本地测试阶段用默认密码和 localhost 没问题但如果要给别人演示记得改掉默认密码并且用域名加 HTTPS 访问否则浏览器语音输入还是会受限。最后一步验证在工作流里连续问三个问题第一个用文字第二个用语音第三个用语音并且要求 TTS 播报。三个都正常返回说明 Windows 本地 FastGPT 的 ASR、LLM、TTS 完整配置已经生效。