ARTICLE DETAIL

资讯详情

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

把 Bifrost 的上游指向 TaoToken,Claude Code 的 Vertex AI 请求不用自己签 GCP Token

把 Bifrost 的上游指向 TaoToken,Claude Code 的 Vertex AI 请求不用自己签 GCP Token 1. 原来卡在 gcloud ADC现在把 Bifrost 上游换成 TaoToken如果你的 Claude Code 之前是借 Bifrost 本地网关去接 Vertex AI八成被 gcloud ADC 卡过一次现在把 Bifrost 的上游指向 TaoTokenhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentGCP 侧那套 OAuth2 签字流程就不用自己管了。原方案里Claude Code 默认和 Anthropic 官方 API 通信企业环境却要求通过 Google Cloud Vertex AI 访问托管的 Claude 模型。CC Switch 没有提供 Vertex AI 原生配置于是很多人选择在本地跑一个 Bifrost 容器把 CC Switch 里的 ANTHROPIC_BASE_URL 指到 http://localhost:4000/anthropic让 Bifrost 模拟 Anthropic 兼容端点背后再转发到 Vertex AI。这个方案能不能跑能跑但代价是把 Google Cloud 的认证压力全部压到本地。Bifrost 要替 Claude Code 完成与 Vertex AI 的握手就得先有 GCP 身份凭证于是要执行 gcloud auth application-default login 去生成 ADC 文件。麻烦的地方在于 ADC 是一种「机器相关的本地凭证」换一台电脑要重新登一次CI 环境没有浏览器弹窗就不好处理甚至同一个 profile 下路径偏一点Bifrost 就会报检测不到凭证。我自己就是在这里踩过的坑当时花了不少时间检查 gcloud 的配置文件最后发现与其修 ADC不如把整个上游换掉。1.1 原文方案为何要依赖 ADC原文把 Bifrost 定位成 AI 流量网关所有 Claude Code 的请求先到本地网关再由它去访问 Vertex AI。网关要做两件事第一把 Anthropic 格式的请求翻译成 Vertex AI 能识别的格式第二在请求里注入 GCP 的 Access Token。第二件事不能凭空发生必须依赖本地凭证这就是为什么必须有 gcloud ADC。链路上的任何一个环节不满足——比如 ADC 文件过期、服务账号角色没配好、环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向了不存在的路径——就会出现「Bifrost 起来了但 Claude Code 一请求就报认证失败」的现象。这个报错往往发生在模型真正被调用之前排查起来很空。1.2 把认证交给 TaoToken 之后省掉哪些步骤把 Bifrost 的上游指向 TaoToken 之后原来那些 GCP 准备工作就整体消失了。TaoToken 这一侧负责统一接收请求并处理 GCP 认证你本地不需要再维护 ADC也不需要服务账号 JSON。链路从「Claude Code → Bifrost → Vertex AI依赖本地 ADC」变成「Claude Code → Bifrost → TaoToken → Vertex AI」。注意这条链路里 Bifrost 的角色没有变它仍然在 http://localhost:4000 上承担 Anthropic 格式转换只是它的上游从 Vertex AI 换成了 https://taotoken.net/api。对应地gcloud auth application-default login、角色授权、ADC 检测这些步骤都可以从部署文档里划掉了。2. 打开 TaoToken 拿 Key并确认模型 ID2.1 注册、创建 Key不用再创建 GCP 项目原方案的准备工作相当长先要有 GCP 项目再启用 Vertex AI API还要给账号授 roles/aiplatform.user 角色本地再装 gcloud CLI。现在这些都不需要你操心了。打开 TaoToken注册登录后在控制台创建 API Key复制出来备用。本文统一用 YOUR_API_KEY 占位实际填写时要替换成你自己创建的那一串字符。一句话把两个地址分别记清楚给人看的控制台、模型广场、用量页都从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_content 进去填进 Bifrost 和工具里的 Base URL 则是 https://taotoken.net/api末尾不要拼 /v1。这两个地址用途不同前者是产品官网后者是接口入口混了会多出一堆 404 排障。2.2 在模型广场挑模型 ID别照抄旧文章拿 Key 之后顺便去模型广场看一眼当前可用的模型 ID。这一步很重要因为 Bifrost 转发到 TaoToken 时请求里的模型名必须真实存在。旧文章里出现的 gemini-3.5-flash 之类的 ID 不要照抄那多半是当时环境下的值不代表今天在 TaoToken 可用。以模型广场当时列表为准把你要用的模型 ID 记录下来后面 CC Switch 的 JSON 里会反复用到。如果主要是写代码就在模型广场找 Claude 系列对应的模型 ID如果你还要跑一些轻量任务可以同时记一个 haiku 模型 ID 和 sonnet 模型 ID方便后面做模型映射。3. Bifrost 还是本地网关上游改成 TaoToken3.1 用 Docker 把 Bifrost 跑起来Bifrost 的部署方式保持原样仍然用 Docker 镜像。为了后面查日志方便容器命名这一步不要省docker pull maximhq/bifrost:latest docker run -d --name claude-bifrost -p 4000:8080 maximhq/bifrost:latest跑起来后 Bifrost 的管理界面在 http://localhost:4000Claude Code 要访问的 Anthropic 兼容端点仍是 http://localhost:4000/anthropic。注意原文里只写了 docker run -d -p 4000:8080没有给容器指定名字但后面验证时又要用 docker logs -f claude-bifrost命令其实对不上这里补上 --name claude-bifrost日志命令才能直接复制使用。3.2 把 Vertex AI 上游替换成 OpenAI 兼容端点进入 Bifrost 管理界面找到 Provider 或上游供应商列表。原来的做法是直连 Vertex AIBifrost 里会有一个 Google Vertex AI 类型的 provider同时绑定本机 ADC。现在把这个 provider 的上游改到 TaoToken或者在供应商列表里新增一个 OpenAI 兼容类型然后把默认路由指过去。配置项只有两处是必须的Base URLhttps://taotoken.net/apiAPI KeyYOUR_API_KEYBase URL 这里去掉 /v1也不加任何 UTM 参数。保存后 Bifrost 与 TaoToken 的连接就建立了它会把 Claude Code 的 Anthropic 格式请求转换后交给 TaoToken由 TaoToken 完成后续入 Vertex AI 的调用。顺手把 Bifrost 里关于 gcloud ADC 的环境变量清掉避免它再次尝试读本地凭证Bifrost 只需要把 TaoToken 当普通 OpenAI 兼容上游看待不需要感知 GCP。4. CC Switch 的 JSON 保持原结构只动模型映射4.1 可复制的 JSON回到 CC Switch添加一个 Anthropic 供应商配置。JSON 整体沿用原文的结构只把几个模型 ID 换成你在 TaoToken 模型广场确认过的值{ env: { ANTHROPIC_API_KEY: sk-bifrost-static-placeholder-key, ANTHROPIC_BASE_URL: http://localhost:4000/anthropic, ANTHROPIC_DEFAULT_HAIKU_MODEL: YOUR_MODEL_ID, ANTHROPIC_DEFAULT_SONNET_MODEL: YOUR_MODEL_ID, API_TIMEOUT_MS: 3000000, CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1 }, model: sonnet, modelOverrides: { haiku: YOUR_MODEL_ID, sonnet: YOUR_MODEL_ID } }4.2 字段变化说明ANTHROPIC_API_KEY 继续用 sk- 开头占位符Claude Code 只需要一个非空的 Key 来发给 BifrostBifrost 在本地不会较真校验它真正的身份认证发生在 Bifrost 上游由 TaoToken 用 YOUR_API_KEY 完成。ANTHROPIC_BASE_URL 仍然保持 http://localhost:4000/anthropic不要让 Claude Code 直接连 https://taotoken.net/api否则会跳过 Bifrost 的格式转换层模型映射和请求格式都会对不上。ANTHROPIC_DEFAULT_HAIKU_MODEL、ANTHROPIC_DEFAULT_SONNET_MODEL 和 modelOverrides 三处的 YOUR_MODEL_ID 都要替换。它们的作用是告诉 Claude Code当用到 haiku 或 sonnet 这些逻辑型号时实际发给上游的模型 ID 是什么。模型映射结构可以沿用原文不换但具体 ID 必须来自模型广场的实时列表。保存后在 CC Switch 里启用这个配置Claude Code 下一次启动就会走这条新链路。5. 验证调用看 Bifrost 日志再去 TaoToken 控制台对账5.1 启动 Claude Code 并发消息确认 Bifrost 容器在运行、CC Switch 配置已启用后打开终端启动 Claude Codeclaude随便发一条消息然后在另一个终端里查看 Bifrost 的转发日志docker logs -f claude-bifrost如果链路正常日志里会显示请求被转发到 https://taotoken.net/api并最终返回 200。整个日志过程不再出现 gcloud 或 ADC 相关报错就说明本地凭证的问题已经彻底消失。如果日志里仍然出现 aiplatform.googleapis.com 的访问记录说明 Bifrost 上游没有改干净需要回 3.2 节重新检查 provider 配置。5.2 在控制台确认这次调用记上账日志通过后打开 TaoToken 的用量页查看刚才那次 Claude Code 调用是否生成了一条新的用量记录。这一步其实就是原文里「打开控制台看用量」的动作放在这里做可以顺便核对模型 ID、Token 数和计费归属。如果记录里能看到刚才的消息说明链路从模型 ID 到上游认证全部跑通如果看不到不要急着重建 Key按第 6 节的顺序排查。6. 排障三个容易踩的位置6.1 不要再为 ADC 花费时间原文里 gcloud auth application-default login 是标准准备步骤但在改用 TaoToken 之后这条命令已经没必要执行。如果你之前在其他场景里登录过 gcloud它不会影响当前链路只是别再为了 Bifrost 去刷新 ADC。遇到问题先不要往 gcloud 方向想重点检查 Bifrost 上游的 Base URL 与 Key。6.2 报 401 或 404 时的检查顺序第一看 Bifrost 上游的 API Key 是否真的替换了 YOUR_API_KEY 占位符。第二看 CC Switch 里的 ANTHROPIC_BASE_URL 是否仍然是 http://localhost:4000/anthropic有人会想「既然用 TaoToken直接把 Base URL 指向 https://taotoken.net/api 不是更省事」这样想可以理解但会跳过 Bifrost 的转换层导致请求格式和模型映射都对不上。第三看模型 ID 是否照模型广场的列表填写。如果这三步都确认过仍然拿不准是不是 Key 的问题可以打开 TaoToken 模型对话页发一条测试消息用同一把 Key 先单独验证 TaoToken 这一段Bifrost 这一段再用 docker logs 对比就能把问题锁定在转发还是接入。把 Bifrost 上游换成 TaoToken 之后我顺手把本地 gcloud 的 ADC 排障笔记删了现在换电脑只需要装 Bifrost、填 Key 两步。如果你之后想长期写代码可以看下 Coding Plan 是否够用Key 需要重建时去 控制台 API KeysClaude Code 的环境变量对照表在 官方接入文档 里。这样一套下来Vertex AI 请求不再依赖你本地签 GCP TokenBifrost 仍然当好它的 AI 流量网关只是上游换成了 TaoToken。
返回列表