1. Workers AI 的模型 ID 与 API Token 到底卡在哪
Cloudflare Workers AI 是 Cloudflare 在边缘节点上搭的一套模型推理服务,你不需要自己买显卡、不需要部署容器,只要拿到 Account ID 和 API Token,就能通过 REST 接口调用它托管的八十多个模型。它适合谁?适合已经在用 Workers 或 Pages 建站、想让站点内直接跑 AI 能力的开发者,也适合想低成本试玩各家开源模型的折腾党。但很多人第一次接入就会撞上两个坑:模型 ID 写错导致 404,或者 Token 权限不对导致 401。
我自己第一次配的时候,把模型 ID 写成了@cf/meta/llama-3.1-8b-instruct,结果接口返回model not found。后来翻文档才发现,Workers AI 的模型 ID 必须带@cf/前缀,而且部分模型还有-fast之类的后缀变体,写错一个字符都不行。另一个高频问题是 API Token:Cloudflare 控制台里能创建好几种 Token,你必须选「Workers AI」专用的那个,用普通的 API Tokens 页面创建的全局 Token 去调,大概率吃 401。
更麻烦的是 OpenAI 兼容接口。Workers AI 确实提供了一个/ai/v1/chat/completions的兼容端点,但它的 Base URL 结构比较特殊,是https://api.cloudflare.com/client/v4/accounts/{你的Account ID}/ai/v1。很多客户端(比如 Cherry Studio、Cline、Continue)在填 Base URL 时习惯性只填到/v1,结果请求发出去就报local proxy failed或者连接超时。这个报错其实不是网络问题,而是路径拼接错了——客户端会在你填的 Base URL 后面再拼/chat/completions,如果你少填了 accounts 那段,拼出来的地址根本不存在。
还有一个容易被忽略的点:免费额度。官方说每天给 10,000 神经元,听起来不少,但实际跑一个 8B 模型的多轮对话,几轮下来就烧掉一大半。如果你拿它当日常主力,大概率上午就用完了,下午全部请求返回额度耗尽。这时候你分不清到底是 Token 失效还是额度没了,因为报错信息都长得差不多。
所以这篇的思路是:先把 Workers AI 原生的模型 ID 和 Token 拿法讲清楚,再用 curl 验证一次请求,确认你的鉴权配置没问题。然后重点演示当 OpenAI 兼容接口调不通时,怎么把 endpoint 和 Base URL 改到 TaoToken 的统一通道上——用同一套 Key 和 API 格式,绕开 Cloudflare 那套特殊的路径拼接和额度限制。这样你既能保留 Workers AI 的模型目录做参考,又能在本地客户端里稳定跑起来。
2. 先拿 Workers AI 的 Token 和模型 ID,再决定要不要换通道
在动手改配置之前,你得先把 Cloudflare 这边的「原材料」准备好:Account ID、API Token、以及你想调的模型 ID。这三样东西缺一不可,而且每一个都有坑。
先说 Account ID。登录 Cloudflare 控制台后,左侧菜单找到「构建」→「AI」→「Workers AI」,点进去后右侧有个「REST API」区域,里面会显示你的 Account ID。注意这个 ID 是一串 32 位十六进制字符,不是你的邮箱也不是域名。很多人把 Zone ID 和 Account ID 搞混,结果请求发出去返回authentication error。
再说 API Token。在同一个 REST API 页面,点「创建 Workers AI API 令牌」。这里有个关键点:生成的 Token 只显示一次,关掉页面就再也看不到了。我建议你复制后先粘到记事本里,顺便把 Account ID 也抄下来。这个 Token 的权限范围是 Workers AI 专用的,不能拿去调 Cloudflare 的其他 API,反过来也一样。
模型 ID 是最容易出错的地方。Workers AI 的模型目录在https://developers.cloudflare.com/workers-ai/models/,你可以按任务类型筛选:文本生成、语音识别、图像分类等等。每个模型都有一个唯一 ID,格式是@cf/{厂商}/{模型名}。比如:
@cf/meta/llama-3.1-8b-instruct—— Meta 的 Llama 3.1 8B 指令版@cf/moonshotai/kimi-k2.6—— 月之暗面的 Kimi,支持超长上下文@cf/deepseek-ai/deepseek-r1-distill-qwen-32b—— DeepSeek 蒸馏版@cf/openai/gpt-oss-120b—— OpenAI 开源的 120B 模型
注意@cf/前缀绝对不能漏,漏了直接报model not found。另外有些模型有-fast后缀,比如@cf/meta/llama-3.1-8b-instruct-fast,这是优化过的低延迟版本,输出质量可能略有差异,选的时候看清楚。
拿到这三样之后,先用 curl 验证一次。这是最原始的请求方式,能帮你排除客户端配置的干扰:
curl https://api.cloudflare.com/client/v4/accounts/{你的Account ID}/ai/run/@cf/meta/llama-3.1-8b-instruct \ -H "Authorization: Bearer 你的Token" \ -H "Content-Type: application/json" \ -d '{ "messages": [ {"role": "system", "content": "你是一个简洁的助手"}, {"role": "user", "content": "用一句话解释什么是边缘计算"} ] }'如果返回的 JSON 里有"success": true和"result"字段,说明你的 Token 和模型 ID 都没问题。如果返回"success": false,看errors数组里的code:10000一般是鉴权失败,7003是模型 ID 找不到,4006是额度耗尽。这三个错误码能帮你快速定位问题。
但 curl 通了不代表客户端能通。因为很多客户端走的是 OpenAI 兼容协议,请求路径和请求体格式都不一样。Workers AI 的兼容端点是https://api.cloudflare.com/client/v4/accounts/{Account ID}/ai/v1,你需要在客户端里把 Base URL 填成这个完整地址,而不是只填https://api.cloudflare.com/client/v4。少填一段,客户端拼出来的/chat/completions路径就是错的,报错通常是local proxy failed或者connection refused。
如果你发现 Workers AI 的免费额度不够用,或者兼容接口怎么配都报错,那就可以考虑把请求转到 TaoToken 的统一通道上。TaoToken 提供的是标准 OpenAI 兼容接口,Base URL 是https://taotoken.net/api,你只需要一个 Key 就能调多家模型,不用再折腾 Cloudflare 那套特殊的路径拼接。下面我会先讲怎么在客户端里正确配置 Workers AI,再讲怎么切到 TaoToken。
3. 可复制配置:从 Cherry Studio 到 Cline 的完整片段
这一节给你可以直接抄的配置片段。我会分两个场景:先配 Workers AI 原生兼容接口,再配 TaoToken 统一通道。你可以根据自己用的客户端选对应的部分。
3.1 Cherry Studio 配 Workers AI
打开 Cherry Studio,左下角「设置」→「模型服务」→「自定义服务商」→「添加服务商」,类型选「OpenAI 兼容」。然后填三样东西:
- API 地址:
https://api.cloudflare.com/client/v4/accounts/{你的Account ID}/ai/v1 - API Key:你刚才复制的 Workers AI Token
- 模型 ID:比如
@cf/meta/llama-3.1-8b-instruct
保存后新建对话测试。如果报local proxy failed,先检查 API 地址有没有少写accounts/{Account ID}这一段。Cherry Studio 会在你填的地址后面自动拼/chat/completions,所以你的 Base URL 必须精确到/ai/v1。
3.2 Cline 配 TaoToken
Cline 是 VS Code 里的编码助手插件,配置方式稍微不同。打开 Cline 设置,API Provider 选「OpenAI Compatible」,然后填:
- Base URL:
https://taotoken.net/api - API Key:你的 TaoToken Key(在
https://taotoken.net/api-keys创建) - Model ID:比如
gpt-4o或claude-sonnet-4-20250514
这里注意 Base URL 不要加/v1,TaoToken 的接口路径已经内置了版本处理。如果你填成https://taotoken.net/api/v1,请求会 404。
3.3 Claude Code 配 TaoToken
Claude Code 是 Anthropic 官方的命令行编码工具,它默认走 Anthropic 的 API。如果你想把它接到 TaoToken 上,需要改环境变量。在终端里执行:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="你的TaoToken Key"然后运行claude命令。如果报 OAuth 相关错误,说明 Claude Code 在尝试走 Anthropic 的登录流程,你需要确认环境变量有没有生效。可以用echo $ANTHROPIC_BASE_URL检查一下。
3.4 通用 JSON 配置片段
如果你用的是 Continue 或者其他支持 JSON 配置的客户端,可以直接抄这段:
{ "models": [ { "title": "TaoToken GPT-4o", "provider": "openai", "model": "gpt-4o", "apiBase": "https://taotoken.net/api", "apiKey": "你的TaoToken Key" }, { "title": "Workers AI Llama", "provider": "openai", "model": "@cf/meta/llama-3.1-8b-instruct", "apiBase": "https://api.cloudflare.com/client/v4/accounts/{你的Account ID}/ai/v1", "apiKey": "你的Workers AI Token" } ] }这段配置里两个模型可以共存,你可以在客户端里随时切换。注意 Workers AI 那条的apiBase必须带 Account ID,TaoToken 那条不需要。
3.5 Codex 的 auth.json 配置
如果你用 Codex CLI,配置文件在~/.codex/auth.json。内容大概长这样:
{ "openai": { "apiKey": "你的TaoToken Key", "baseURL": "https://taotoken.net/api" } }改完之后重启 Codex 终端。如果报reading choices错误,说明返回的 JSON 结构不对,通常是 Base URL 填错了或者 Key 无效。
4. 验证请求:一次 curl 确认通道是否打通
配置改完之后,别急着在客户端里点来点去,先用 curl 做一次最小验证。这样能排除客户端本身的 bug,直接看服务端返回什么。
4.1 验证 TaoToken 通道
curl https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer 你的TaoToken Key" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o", "messages": [ {"role": "user", "content": "回复一个字:好"} ], "max_tokens": 10 }'如果返回的 JSON 里有"choices"数组,并且message.content是「好」,说明通道完全打通。如果返回 401,检查 Key 有没有复制完整;如果返回 404,检查 URL 是不是写成了https://taotoken.net/api/v1/chat/completions(多了/v1)。
4.2 验证 Workers AI 通道
curl https://api.cloudflare.com/client/v4/accounts/{你的Account ID}/ai/v1/chat/completions \ -H "Authorization: Bearer 你的Workers AI Token" \ -H "Content-Type: application/json" \ -d '{ "model": "@cf/meta/llama-3.1-8b-instruct", "messages": [ {"role": "user", "content": "回复一个字:好"} ] }'注意这里的路径是/ai/v1/chat/completions,和原生 REST 接口的/ai/run/{model}不一样。兼容接口的模型 ID 放在请求体里,而不是 URL 里。如果你把模型 ID 写在 URL 里,会报 404。
4.3 成功结果的判断标准
不管走哪个通道,成功的返回都包含这几个字段:
choices[0].message.content—— 模型的实际输出usage.prompt_tokens和usage.completion_tokens—— 消耗的 token 数model—— 实际调用的模型 ID
如果choices是空数组,或者content是空字符串,说明请求发出去了但模型没返回内容。这种情况通常是max_tokens设得太小,或者模型 ID 写错了但服务端没报错。
4.4 在客户端里做最终验证
curl 通了之后,回到你的客户端(Cherry Studio / Cline / Claude Code),新建一个对话,发一句「你好,请用一句话介绍你自己」。如果客户端能正常显示回复,说明配置全部正确。如果客户端报错但 curl 能通,那问题就在客户端的路径拼接逻辑上——这时候你可以试试把 Base URL 末尾的/v1去掉或者加上,看哪个能通。
5. 常见报错排查:401、local proxy failed、reading choices
这一节把最常见的几个报错和对应的解法列出来。你遇到问题时可以直接对照。
5.1 401 Unauthorized
这是鉴权失败。可能的原因有三个:
第一,Token 复制不完整。Cloudflare 的 Token 只显示一次,如果你当时没复制全,只能重新创建一个。TaoToken 的 Key 可以在控制台随时查看和重新生成。
第二,Token 类型不对。Cloudflare 有好几种 Token,你必须用「Workers AI API 令牌」,不能用「API Tokens」页面创建的全局 Token。TaoToken 的 Key 是统一的,不存在类型问题。
第三,请求头格式不对。必须是Authorization: Bearer {Token},注意 Bearer 和 Token 之间有一个空格。有些客户端会自动加,有些需要你手动填。
5.2 local proxy failed
这个报错通常出现在 Cherry Studio 或类似客户端里,意思是客户端尝试连接你填的 Base URL 但失败了。原因一般不是网络问题,而是 URL 路径拼接错误。
比如你填的 Base URL 是https://api.cloudflare.com/client/v4/accounts/{Account ID}/ai/v1,客户端会在后面拼/chat/completions,最终请求地址是.../ai/v1/chat/completions,这是对的。但如果你只填了https://api.cloudflare.com/client/v4,拼出来就是.../v1/chat/completions,这个地址在 Cloudflare 那边不存在,所以连接失败。
解法:把 Base URL 填完整,精确到/ai/v1。如果你用的是 TaoToken,Base URL 填https://taotoken.net/api,不要加/v1。
5.3 reading choices 错误
这个报错说明客户端收到了响应,但响应 JSON 里没有choices字段。可能的原因:
第一,Base URL 指向了一个不兼容 OpenAI 格式的端点。比如你填了 Workers AI 的原生 REST 地址/ai/run/{model},那个端点返回的 JSON 结构是{"result": {...}},没有choices。解法是改用兼容端点/ai/v1/chat/completions。
第二,模型 ID 写错导致服务端返回了错误信息而不是正常响应。检查模型 ID 有没有漏掉@cf/前缀。
第三,TaoToken 的 Key 无效或额度耗尽,服务端返回了错误 JSON。用 curl 单独验证一下。
5.4 OAuth 相关错误(Claude Code)
Claude Code 默认会尝试走 Anthropic 的 OAuth 登录流程。如果你改了ANTHROPIC_BASE_URL但没改ANTHROPIC_API_KEY,它会报 OAuth 错误。解法是确保两个环境变量都设置了,并且ANTHROPIC_API_KEY填的是 TaoToken 的 Key。
如果还是报错,检查~/.claude/settings.json里有没有硬编码的 Anthropic 配置。有的话删掉或者改成 TaoToken 的地址。
5.5 额度耗尽 vs 鉴权失败的区分
这两个问题的报错信息有时候很像,但解法完全不同。区分方法:
- 如果 curl 返回
"success": false且errors[0].code是10000,是鉴权失败。 - 如果
errors[0].code是4006,是额度耗尽。 - 如果返回 401 但没有具体错误码,先检查 Token 格式。
- 如果返回 200 但
choices为空,可能是模型 ID 写错但服务端没报错。
TaoToken 的额度查询在控制台里能看到,Workers AI 的用量在/ai/workers-ai/usage页面查。两边分开看,别混在一起。
6. 把 Key 和 Base URL 管好,比反复重配更省事
折腾完这一圈,我最大的感受是:Workers AI 的模型目录确实香,但它的鉴权体系和路径规则跟标准 OpenAI 协议有差异,每次换客户端都要重新对一遍 Base URL 和模型 ID 格式。如果你只是偶尔跑个 Demo,那按上面的步骤配一次就行。但如果你要在多个客户端之间切换,或者想让编码助手长期稳定跑,建议把 TaoToken 作为统一入口。
具体做法很简单:在 TaoToken 控制台创建一个 Key,然后在所有客户端里都填同一个 Base URLhttps://taotoken.net/api和同一个 Key。模型 ID 用标准的gpt-4o、claude-sonnet-4-20250514这种,不用再记@cf/前缀。这样你换客户端的时候只需要改一处配置,不用每个都重新对路径。
如果你需要长期跑编码任务或者 Agent 工作流,可以看一下 TaoToken 的 Coding Plan,它针对高频调用做了额度优化。创建 Key 的地址是https://taotoken.net/api-keys,接入文档在https://taotoken.net/doc。想先试试模型效果的话,可以直接在https://taotoken.net/chat里对话验证。
最后提醒一句:不管用哪个通道,Key 都不要硬编码在代码里提交到 Git。用环境变量或者本地配置文件,并且把配置文件加到.gitignore里。我见过太多人因为把 Key 推到公开仓库被刷爆额度的案例了。