1. 为什么要在 WHartTest 里做统一大模型接入
WHartTest(小麦智测)是一个开源智能测试平台,核心能力是用大模型把需求文档转成可执行测试用例,再通过 Playwright 这类 MCP 工具做 UI 自动探索与执行。它后端用 Django + DRF,AI 编排层用 LangChain + LangGraph,知识库用 ChromaDB + BGE-M3 做 RAG 检索。听起来链路很完整,但真正落地时,第一个卡点往往不是代码,而是大模型通道怎么接。
我见过太多团队在 WHartTest 的langgraph_integration模块里硬编码某一家模型的地址和 Key,结果换模型要改代码、多项目共用要复制 Key、额度分散在好几个后台。WHartTest 本身支持 LLM 配置管理,但配置项是通用的 OpenAI 兼容格式,这意味着只要有一个统一 Key/API 通道,就能把测试用例生成、需求评审、AI 对话全部收敛到一处。
TaoToken 在这里扮演的就是这个统一通道:它提供 OpenAI 兼容的 API 入口,WHartTest 的 LangGraph 节点、Cline、CC Switch 都能用同一套 Key 和 Base URL。你不需要在 WHartTest 里为每个模型单独写适配层,只要把base_url指向https://taotoken.net/api,模型名按需切换即可。这篇就按「先讲清场景 → 再给可复制配置 → 最后验证闭环」的顺序,把 WHartTest 的大模型调用跑通。
适合谁看:正在本地或内网部署 WHartTest、想让测试用例生成链路真正跑起来、又不想被多家模型 Key 管理拖住的测试开发同学。
2. TaoToken 前置:Key 与通道准备
在动 WHartTest 的配置文件之前,先把通道准备好。TaoToken 的定位是统一的大模型 API 接入层,你拿一个 Key,就能在 WHartTest、Cline、CC Switch 等多个工具里复用,不用每个工具单独申请。
第一步,打开控制台创建 API Key。地址是https://taotoken.net/console,登录后在 API Keys 页面新建一个 Key,复制出来先存到本地环境变量里,别直接写进代码仓库。我习惯用.env文件管理,WHartTest 后端本来就支持.env,正好复用。
第二步,确认你要用的模型名。TaoToken 的模型对话页面可以查看当前可用的模型列表,地址是https://taotoken.net/models。WHartTest 的 LangGraph 节点在调用时需要一个model字段,这个字段填的就是模型名。测试用例生成建议用长上下文、指令跟随稳的模型,需求评审可以用推理强一点的。
第三步,记住两个地址。官网入口是https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,API 基址是https://taotoken.net/api。注意 API 基址后面不加 UTM 参数,直接用于代码里的base_url。
提示:Key 只显示一次,创建后立刻复制。如果丢了就重新生成一个,旧 Key 可以在控制台吊销。
如果你后面还要接 Cline 或 CC Switch 做编码辅助,同一个 Key 可以直接复用,不需要再申请。这就是统一通道的价值:WHartTest 跑测试用例生成、Cline 写代码、CC Switch 切模型,全走一个入口。
3. 可复制配置:settings.json 与 config.toml 骨架
WHartTest 后端是 Django,LLM 配置存在数据库里,但本地开发时更推荐用环境变量 + 配置文件的方式,方便版本管理和多环境切换。下面给两套骨架,一套给 WHartTest 后端,一套给 Cline / CC Switch。
3.1 WHartTest 后端 .env 与 LLM 配置
在WHartTest_Django根目录下,.env文件里加上这几项:
# .env LLM_PROVIDER=openai_compatible LLM_BASE_URL=https://taotoken.net/api LLM_API_KEY=sk-your-taotoken-key LLM_MODEL=gpt-4o-mini LLM_TIMEOUT=120 EMBEDDING_API_BASE=https://taotoken.net/api EMBEDDING_API_KEY=sk-your-taotoken-key然后在langgraph_integration的 LLM 配置读取处,确保它优先读环境变量。WHartTest 的 LLM 配置模型里通常有base_url、api_key、model_name三个字段,你在前端「LLM 配置管理」页面新建配置时,按下面填:
| 字段 | 填写值 |
|---|---|
| 配置名称 | taotoken-default |
| Base URL | https://taotoken.net/api |
| API Key | sk-your-taotoken-key |
| 模型名称 | gpt-4o-mini |
| 超时 | 120 |
保存后,在「LLM 会话」页面选择这个配置,LangGraph 节点就会走 TaoToken 通道。
3.2 Cline 的 settings.json
Cline 是 VS Code 里的编码 Agent,WHartTest 开发过程中可以用它辅助写 LangGraph 节点。Cline 的配置在 VS Code 设置里,对应settings.json:
{ "cline.apiProvider": "openai", "cline.openAiBaseUrl": "https://taotoken.net/api", "cline.openAiApiKey": "sk-your-taotoken-key", "cline.openAiModelId": "gpt-4o-mini" }如果你用的是 Cline 的独立配置文件,结构类似,关键是baseUrl指向https://taotoken.net/api,apiKey填 TaoToken 的 Key。
3.3 CC Switch 的 config.toml
CC Switch 用于在多个模型配置间快速切换,它的config.toml骨架如下:
[[providers]] name = "taotoken" base_url = "https://taotoken.net/api" api_key = "sk-your-taotoken-key" model = "gpt-4o-mini" timeout = 120 [[providers]] name = "taotoken-reasoning" base_url = "https://taotoken.net/api" api_key = "sk-your-taotoken-key" model = "o1-mini" timeout = 180这样你在 WHartTest 里做用例生成用第一个,做需求评审用第二个,切换只改name。
注意:所有配置文件里的 Key 都不要提交到 Git。用
.gitignore把.env、config.toml排除掉。
4. 验证请求:从 curl 到 WHartTest 闭环
配置写完不算完,得验证通道真的通。分三步:先 curl 测通道,再测 WHartTest 的 LLM 会话,最后跑一次测试用例生成。
4.1 curl 验证 TaoToken 通道
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-your-taotoken-key" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o-mini", "messages": [{"role": "user", "content": "回复 OK"}], "max_tokens": 10 }'如果返回里有choices[0].message.content,说明通道正常。这一步能排除 Key 错误、Base URL 写错、模型名不存在这三类问题。
4.2 WHartTest LLM 会话验证
启动后端:
cd WHartTest_Django source .venv/bin/activate gunicorn wharttest_django.wsgi:application --bind 0.0.0.0:8000 --workers 4 --timeout 120前端启动:
cd WHartTest_Vue npm run dev登录后进入「LLM 会话」页面,选择刚才建的taotoken-default配置,发一句「你好」。如果流式响应正常返回,说明 WHartTest 的 LangGraph 节点已经走通 TaoToken。
4.3 测试用例生成闭环
进入「需求管理」,新建一条需求,粘贴一段需求描述,比如「用户登录功能,支持手机号+验证码登录,验证码 60 秒有效」。然后点「AI 生成用例」,WHartTest 会调用 LangGraph 编排的链路:需求文本 → 提示词模板 → TaoToken 通道 → 模型返回 → 解析成用例结构。
如果用例列表里出现了带步骤的用例,说明整条链路跑通了。我实测下来,从需求到用例大概 10 到 20 秒,取决于模型和需求长度。
4.4 MCP 工具连通性
WHartTest 的 MCP 工具(testauto_tools.py)默认连本地后端http://127.0.0.1:8000,Key 在系统管理里获取。启动:
python testauto_tools.py服务在http://0.0.0.0:8006启动。然后在 MCP 客户端配置里加上:
{ "mcpServers": { "testauto-tools": { "command": "python", "args": ["path/to/testauto_tools.py"], "env": {} } } }这样 AI 探索测试时,模型通过 TaoToken 生成操作序列,MCP 工具负责执行,闭环就完整了。
5. 本篇常见错排查
配置过程中最容易踩的坑集中在几个地方,我按出现频率排一下。
报错一:401 Unauthorized。九成是 Key 写错或没带Bearer前缀。检查Authorization: Bearer sk-xxx格式,注意Bearer和 Key 之间有一个空格。如果 Key 是从控制台复制的,确认没有多余换行。
报错二:404 model not found。模型名填错了。TaoToken 的模型名要和模型对话页面里列出的完全一致,大小写敏感。别自己拼模型名,直接复制。
报错三:Base URL 多了斜杠。有人写成https://taotoken.net/api/,末尾多一个斜杠,导致拼接出//v1/chat/completions。正确写法是https://taotoken.net/api,不带末尾斜杠。
报错四:WHartTest 前端跨域。本地开发时前端localhost:5173调后端localhost:8000,需要在vite.config.js里配代理,或者后端开 CORS。WHartTest 的.env里VITE_USE_PROXY=true配合代理配置能解决。
报错五:LangGraph 节点超时。需求文档太长时,模型响应可能超过默认超时。把LLM_TIMEOUT调到 180 或 300,Gunicorn 的--timeout也要同步调大。
报错六:嵌入模型连不上。WHartTest 的知识库用 BGE-M3 做向量化,如果走 API 方式,EMBEDDING_API_BASE也要指向 TaoToken。检查日志里有没有「嵌入模型API连接成功」。
提示:排查时先 curl 测通道,再测 WHartTest,最后测 MCP。逐层排除,别一上来就改代码。
6. 接入文档与后续动作
通道跑通后,下一步是把配置固化下来。WHartTest 的 LLM 配置支持多套,你可以建「生成用」「评审用」「探索用」三个配置,都指向 TaoToken,只是模型名不同。这样在 LangGraph 节点里按场景选配置,不用改代码。
如果你还要接更多工具,比如用 Cline 写 WHartTest 的 LangGraph 节点、用 CC Switch 在模型间切换,同一个 TaoToken Key 直接复用。API Keys 管理页面在https://taotoken.net/api-keys,接入文档在https://taotoken.net/doc,里面有 OpenAI 兼容接口的完整说明。
长期做测试平台开发的话,可以考虑 Coding Plan,把编码辅助和测试用例生成都收敛到一套额度里,地址是https://taotoken.net/coding-plan。模型对话页面https://taotoken.net/models可以随时查可用模型,换模型只改配置里的model字段。
最后提醒一句:WHartTest 的 MCP 工具连的是本地后端,别把生产库地址填进去。测试平台的数据隔离靠 Django 的项目级权限,配置时确认DEBUG=False、SECRET_KEY换掉、数据库切到 PostgreSQL,这些在生产检查清单里都有。把通道和权限两件事都做扎实,智能测试平台才算真正落地。