ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

model_server 多写 /v1 报错?TaoToken 这样设置 Qwen Agent 的 api_key

model_server 多写 /v1 报错?TaoToken 这样设置 Qwen Agent 的 api_key Qwen Agent 的llm_cfg里原本写着model_server: http://localhost:8000/v1这是本地 vLLM/SGLang 的 OpenAI 兼容路径。换成 TaoToken 兼容通道时很多人顺手改成https://taotoken.net/api/v1然后 Qwen Agent 的 Assistant 就一直 404 或者 401。排障顺序其实不复杂先去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentqwen_agent_model_server 创建 Key再把model_server改回https://taotoken.net/api末尾不带/v1api_key换成刚拿到的 TaoToken Key流式输出就会恢复。下面按报错现象拆开写每一步都对应原文llm_cfg里的字段不另起炉灶。1. Qwen Agent 报 404/401 时先看 llm_cfg 的 model_server1.1 本地 vLLM/SGLang 的 /v1 为什么不能直接搬到 TaoToken原文示例里model_server: http://localhost:8000/v1这个/v1是本地推理服务自己暴露的版本前缀。Qwen Agent 在发请求时会把model_server当成api_base再在后面拼/chat/completions。本地 vLLM 收到的是http://localhost:8000/v1/chat/completions路径刚好匹配。换成 TaoToken 的兼容通道后Base URL 本身已经包含了版本路由正确写法是https://taotoken.net/api。如果你多写一段/v1Qwen Agent 实际请求的地址就变成https://taotoken.net/api/v1/chat/completions服务端没有这条路由返回 404 很正常。401 则通常发生在路径碰巧对了、但 Key 没带对或者 Key 根本没替换的情况下。两个报错经常前后脚出现先别急着怀疑模型先把model_server和api_key两行看一遍。还有一个容易漏的点如果你从原文注释块里复制了 DashScope 的配置可能会带上model_type: qwen_dashscope。这个字段会让 Qwen Agent 走 DashScope 自己的 SDK而不是走你填的model_server。此时即使 Base URL 写对了Key 也可能被忽略最后报 401 或鉴权失败。走 TaoToken 兼容通道时model_type不要写qwen_dashscope保持 OpenAI-compatible 的字典结构即可。1.2 原文 llm_cfg 里哪些字段要动哪些不要动原文的llm_cfg核心就三行model本地示例写的是Qwen/Qwen3-32B走 TaoToken 时要换成模型广场里对应的模型 ID。model_server本地写http://localhost:8000/v1走 TaoToken 要写成https://taotoken.net/api。api_key本地写EMPTY是因为 vLLM 默认不校验走 TaoToken 必须换成YOUR_API_KEY。generate_cfg里那段extra_body和chat_template_kwargs是 vLLM/SGLang 的私有参数用于控制 thinking 模式。走 TaoToken 时先整段注释掉等基础对话跑通后再按模型广场文档决定是否加回。很多人把 404 和 400 混在一起其实 400 经常是extra_body参数不被识别不是路径问题。tools里的mcpServers和code_interpreter与 Base URL 无关它们是本地能力。time、fetch通过uvx拉起code_interpreter需要 Qwen Agent 的代码执行依赖。排障时先把function_list留空跑一轮纯对话确认通道没问题再把工具加回去。这样能避免把 MCP 启动失败误判成 TaoToken 的 404。2. 去 TaoToken 控制台拿 Qwen Agent 用的 API Key2.1 注册后创建 Key不要直接把 Key 发到对话里打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentqwen_agent_model_server 注册并登录进控制台创建 API Key。创建完成后复制一次后面填到llm_cfg的api_key位置。本文所有示例都用YOUR_API_KEY占位你本地替换成真实 Key 即可。不要把这个 Key 贴到公开仓库、聊天记录或者截图里。更稳的做法是写进环境变量Qwen Agent 代码里用os.getenv读取。原文 DashScope 示例里也用了os.getenv(DASHSCOPE_API_KEY)你可以照着这个习惯改成os.getenv(TAOTOKEN_API_KEY)。这样同一份llm_cfg换机器时不用改代码。如果你已经有 Key但不确定是不是当前项目在用的那一把回 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentqwen_agent_model_server 的控制台重新创建一个专用 Key。排障阶段最怕多把 Key 混用401 出现后你连是哪一把错了都分不清。2.2 在模型广场确认 model 字段该填什么model不能照抄原文的Qwen/Qwen3-32B也不能自己编日期后缀。模型 ID 以模型广场当时列表为准。打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentqwen_agent_model_server 的模型广场找到你要用的 Qwen 系列模型把对应的模型 ID 复制到llm_cfg里。如果你在模型对话页面测试时用的是某个模型Qwen Agent 里也建议先用同一个 ID减少变量。等纯文本对话通了再换更合适的模型跑工具调用。模型名不匹配时服务端通常返回model not found或 404而不是 401所以排障时可以把报错文本和 HTTP 状态码一起看。3. 把 llm_cfg 改回不带 /v1 的 Base URL3.1 最小可运行 Qwen Agent 配置先写一个不带工具、不带 thinking 参数的最小版本。这个版本只验证model_server、api_key、model三件事import os from qwen_agent.agents import Assistant llm_cfg { model: YOUR_MODEL_ID, model_server: https://taotoken.net/api, # 末尾不要加 /v1 api_key: os.getenv(TAOTOKEN_API_KEY, YOUR_API_KEY), } bot Assistant(llmllm_cfg) messages [ {role: user, content: 用一句话解释 Qwen Agent 的 model_server 为什么不能带 /v1} ] for responses in bot.run(messagesmessages): pass print(responses)把这段存成qwen_agent_min.py在本地虚拟环境里执行python qwen_agent_min.py。如果终端逐步打印出流式结果说明 Base URL 和 Key 都已正确。如果立刻报 404检查model_server是否写成了https://taotoken.net/api/v1或https://taotoken.net/api/。如果报 401检查TAOTOKEN_API_KEY是否真的被读到或者直接临时把YOUR_API_KEY换成控制台创建的 Key 做一次对照。注意这里填进代码的https://taotoken.net/api是接口地址不要加任何查询参数。官网落地页和控制台链接是给人点的代码里的 Base URL 保持干净。3.2 保留原文 MCP tools 与 code_interpreter 的写法纯对话通了之后把原文的tools加回来。time和fetch是本地 MCP 服务走uvx启动和 TaoToken 的通道是两回事。完整结构可以写成import os from qwen_agent.agents import Assistant llm_cfg { model: YOUR_MODEL_ID, model_server: https://taotoken.net/api, api_key: os.getenv(TAOTOKEN_API_KEY, YOUR_API_KEY), } tools [ { mcpServers: { time: { command: uvx, args: [mcp-server-time, --local-timezoneAsia/Shanghai] }, fetch: { command: uvx, args: [mcp-server-fetch] } } }, code_interpreter, ] bot Assistant(llmllm_cfg, function_listtools) messages [ {role: user, content: 现在上海几点只回答时间。} ] for responses in bot.run(messagesmessages): pass print(responses)如果这一步报command not found: uvx先在本机安装uv再重新运行。MCP 启动失败通常表现为工具调用超时或连接被拒绝不是 404。code_interpreter也只在本地沙箱里执行生成的代码不要把它指向生产数据库或生产机器。Qwen Agent 可以生成 SQL、解释报错、对照代码但执行诊断 SQL、编译、运行都必须由你在本地或受控环境完成再把结果贴回对话。3.3 流式运行与首字返回验证Qwen Agent 的bot.run返回的是流式响应。终端里应该能看到内容逐渐出现而不是等很久后一次性打印。首字返回正常说明model_server路径正确、Key 有权限、模型 ID 存在。如果等十几秒没有输出先按 CtrlC然后看异常栈。常见情况有三种一是model_server多了/v1导致 404二是 Key 没设置导致 401三是模型 ID 写错导致 404 的model not found。把异常栈里的 HTTP 状态码和请求路径截出来对照下一节的表格排查。4. 404、401、模型名不匹配的对照排查4.1 404model_server 多了 /api/v1 或 /v1错误写法model_server: https://taotoken.net/api/v1正确写法model_server: https://taotoken.net/apiQwen Agent 会在model_server后面拼/chat/completions所以最终请求是https://taotoken.net/api/chat/completions。你可以用 curl 在本地做一次路径验证curl -sS https://taotoken.net/api/chat/completions \ -H Authorization: Bearer YOUR_API_KEY \ -H Content-Type: application/json \ -d {model:YOUR_MODEL_ID,messages:[{role:user,content:ping}],max_tokens:8}如果 curl 返回 404基本可以确定是路径多了版本段如果 curl 返回 401先解决 Key 问题如果 curl 返回正常但 Qwen Agent 仍然 404检查代码里是否有另一个被注释掉的llm_cfg还在生效或者Assistant初始化时传入了别的配置。4.2 401Key 没替换、环境变量没生效、Bearer 拼错401 的排障顺序打印os.getenv(TAOTOKEN_API_KEY)确认不是None。检查 Key 复制时是否带了首尾空格。确认没有把 DashScope 的 Key 或其他平台的 Key 填进来。回 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentqwen_agent_model_server 控制台重新创建一把专用 Key。如果你在代码里直接写api_key: YOUR_API_KEY记得真的替换成 Key不要保留占位符。有些人把占位符原样跑然后看到 401 以为是通道问题其实是字符串YOUR_API_KEY被当成真实 Key 发出去了。4.3 模型名不匹配与 thinking 参数model: Qwen/Qwen3-32B是本地推理时常见的 Hugging Face 模型名但走 TaoToken 时不一定对应模型广场的 ID。模型名不匹配时服务端可能返回 404也可能返回明确的model not found。把模型广场的 ID 复制过来不要自己拼版本号或日期。另一个常见 400 来自generate_cfg里的extra_body.chat_template_kwargs。这个参数原本是给 vLLM/SGLang 的 OAI API 用的TaoToken 兼容通道不一定需要。先整段注释跑通后再按模型广场文档决定是否加回。如果你确实需要关闭 thinking 模式先看模型广场里该模型的调用说明不要直接把本地 vLLM 的参数搬过来。MCP 工具报错也要区分uvx找不到是本地环境问题time服务启动后返回异常时区是 MCP 参数问题fetch抓不到网页是目标站点或本地网络问题。这些都不需要改https://taotoken.net/api。5. 跑通 Qwen Agent 后回控制台对一次用量5.1 用模型对话做端到端验证Qwen Agent 里的最小 demo 跑通后再用同一把 Key 去 TaoToken 模型对话 发一条测试消息。如果模型对话能通、Qwen Agent 也能通说明 Key、Base URL、模型 ID 三件套一致。如果模型对话能通、Qwen Agent 报错就回到llm_cfg检查是否还有残留的/v1、model_type或另一份旧配置在生效。模型对话页面还有一个用处确认当前 Key 是否有权限调用你写的那个模型 ID。有些 Key 可能只开了部分模型权限Qwen Agent 报 404 时容易被误判成路径错误。用模型对话交叉验证一下能省很多时间。5.2 长期跑 Qwen Agent 的套餐与 Key 管理入口如果要长期跑多轮工具调用可以打开 Coding Plan 看套餐是否够用Key 的创建、停用和轮换都在 控制台 API Keys。需要再核对模型列表或接入说明回 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentqwen_agent_model_server 看模型广场和文档。最后提醒一句Qwen Agent 可以生成 SQL、解释报错、对照代码但诊断 SQL、regsvr32、编译运行这些动作必须由你在本地或 SQL*Plus 等受控环境执行再把结果贴回对话。不要把code_interpreter指向生产库也不要让 Agent 直接连生产机器。把llm_cfg里的model_server改成https://taotoken.net/api去掉/v1再跑一次那个最小 demo404 和 401 基本都会消失。
返回列表