1. 合并消息之后,Cohere 与 Aleph Alpha 双栈共用一把 Key
Cohere 与 Aleph Alpha 签署最终协议完成合并后,我先把仓库里.env搜了一遍:COHERE_API_KEY、ALEPH_ALPHA_API_KEY、COHERE_BASE_URL、ALEPH_BASE_URL,以及散落在 Notebook 和 CI 变量里的硬编码。对多模型工程师来说,供应商合并本身只是背景,真正会导致线上抖动的是:从 Cohere 切到 Aleph Alpha 时,客户端还在读旧 Key,模型名被写死,Base URL 没有统一入口,最后报错通常是 401、404 或model not found。我现在把两套调用统一到 TaoToken:先在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=cohere_aleph_intro 注册并拿到YOUR_API_KEY,再把所有客户端的 Base URL 设为https://taotoken.net/api。本文不评论合并交易,只给可复现迁移:一张 Key 复用表、一套 Cohere/Aleph Alpha 路由配置、Claude Code 的settings.json、Codex 的config.toml,以及 CC Switch 三件套的排障顺序。这样无论以后品牌如何统一,Key 不再分家。
很多团队在供应商合并消息出来后,第一反应是新建一套 Aleph Alpha 专用 Key,第二反应是给 Cohere 旧服务再加一套代理。结果是:同一个业务请求,测试环境用 Cohere Key,预发环境用 Aleph Alpha Key,生产环境又有人塞了第三把临时 Key。最后不是模型效果问题,而是 Key 权限、额度和审计分散在三个地方。TaoToken 的价值在这里很具体:把多模型调用收敛到同一个 Base URL 和同一把 Key,业务代码只保留路由层差异。
2. Key 复用表:Cohere、Aleph Alpha、Claude Code、Codex 怎么共用
先不要改业务函数,先画表。表里只回答四个问题:谁在调用、旧入口是什么、新 Base URL 是什么、用哪把 Key。建议把“模型名”也独立成环境变量,不放在代码常量里。
| 使用场景 | 旧入口 | 旧环境变量 | TaoToken 入口 | 新 Key 变量 |
|---|---|---|---|---|
| Cohere 业务适配层 | Cohere SDK / HTTP | COHERE_API_KEY | https://taotoken.net/api | TAOTOKEN_API_KEY |
| Aleph Alpha 业务适配层 | Aleph Alpha HTTP | ALEPH_ALPHA_API_KEY | https://taotoken.net/api | TAOTOKEN_API_KEY |
| Claude Code | CLI | ANTHROPIC_API_KEY | https://taotoken.net/api | ANTHROPIC_API_KEY=YOUR_API_KEY |
| Codex | CLI | 原先可能是 OpenAI 风格变量 | https://taotoken.net/api | TAOTOKEN_API_KEY |
| 本地脚本 / Notebook | dotenv | 多套 Key 混用 | https://taotoken.net/api | TAOTOKEN_API_KEY |
这张表的重点是:Cohere 和 Aleph Alpha 的调用层可以共用TAOTOKEN_API_KEY。Claude Code 因为工具本身约定读取ANTHROPIC_*,所以你在它自己的settings.json里做一次映射,但不要把ANTHROPIC_*复制到 Codex 的config.toml里。Codex 走 Codex 的配置体系,Key 仍然来自TAOTOKEN_API_KEY。
注册和创建 Key 统一在 TaoToken 官网完成:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=cohere_aleph_signup。建议创建一把“本地开发”Key、一把“CI/预发”Key,但都从同一个控制台管理。下文的代码统一使用YOUR_API_KEY占位,你替换成实际 Key 后本地执行。
3. 路由配置:把 Cohere 与 Aleph Alpha 映射到同一 Base URL
多模型切换最忌讳在业务代码里写if provider == "cohere"。更好的方式是把“供应商路由名”映射到模型 ID,而客户端永远指向https://taotoken.net/api。TaoToken 控制台里能选到的模型 ID 以实际模型页为准,下面用YOUR_COHERE_MODEL_ID和YOUR_ALEPH_MODEL_ID占位。
下面是一个 OpenAI 兼容风格的 Python 路由示例。它不依赖 Cohere 或 Aleph Alpha 的特定 SDK,方便你先把链路跑通,再逐步替换旧调用。
import os from openai import OpenAI BASE_URL = "https://taotoken.net/api" client = OpenAI( api_key=os.environ["TAOTOKEN_API_KEY"], base_url=BASE_URL, ) ROUTES = { "cohere": { "model": os.getenv("TAOTOKEN_COHERE_MODEL", "YOUR_COHERE_MODEL_ID"), }, "aleph": { "model": os.getenv("TAOTOKEN_ALEPH_MODEL", "YOUR_ALEPH_MODEL_ID"), }, } def chat(route: str, prompt: str) -> str: if route not in ROUTES: raise ValueError(f"unknown route: {route}") cfg = ROUTES[route] resp = client.chat.completions.create( model=cfg["model"], messages=[{"role": "user", "content": prompt}], temperature=0.2, ) return resp.choices[0].message.content or "" if __name__ == "__main__": print(chat("cohere", "用一句话解释多模型路由")) print(chat("aleph", "用一句话解释多模型路由"))这段代码的关键不是openai这个包名,而是三点:
base_url固定为https://taotoken.net/api,不再分别写 Cohere 和 Aleph Alpha 的旧域名。api_key只读TAOTOKEN_API_KEY,不再从两套旧 Key 里取。- 路由名
cohere/aleph只决定模型 ID,不决定鉴权和网络入口。
如果你在 CI 里跑,可以把环境变量设成:
export TAOTOKEN_API_KEY="YOUR_API_KEY" export TAOTOKEN_COHERE_MODEL="YOUR_COHERE_MODEL_ID" export TAOTOKEN_ALEPH_MODEL="YOUR_ALEPH_MODEL_ID" python route_demo.py这里的YOUR_API_KEY来自 TaoToken 控制台。不要把它提交到 Git,也不要把旧 Cohere Key 和旧 Aleph Alpha Key 一起放进同一份.env文件里造成混用。
4. 旧 Cohere / Aleph Alpha 代码的最小改动层
真实项目里不可能一夜之间把所有调用改成新 SDK。更稳的做法是加一层薄适配器:旧业务仍然调用cohereChat()和alephChat(),但适配器内部统一打到 TaoToken。下面用 TypeScript 写一个最小 HTTP 适配层,Node 18+ 可直接运行。注意这里的 endpoint 按 OpenAI 兼容路径拼接,若你的控制台文档给出不同路径,以文档为准。
const BASE_URL = "https://taotoken.net/api"; const API_KEY = process.env.TAOTOKEN_API_KEY!; type Route = "cohere" | "aleph"; const MODEL_MAP: Record<Route, string> = { cohere: process.env.TAOTOKEN_COHERE_MODEL ?? "YOUR_COHERE_MODEL_ID", aleph: process.env.TAOTOKEN_ALEPH_MODEL ?? "YOUR_ALEPH_MODEL_ID", }; export async function callTaoToken(route: Route, prompt: string): Promise<string> { const res = await fetch(`${BASE_URL}/chat/completions`, { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${API_KEY}`, }, body: JSON.stringify({ model: MODEL_MAP[route], messages: [{ role: "user", content: prompt }], temperature: 0.2, }), }); if (!res.ok) { const text = await res.text(); throw new Error(`TaoToken ${res.status}: ${text}`); } const data = await res.json(); return data.choices?.[0]?.message?.content ?? ""; } export const cohereChat = (prompt: string) => callTaoToken("cohere", prompt); export const alephChat = (prompt: string) => callTaoToken("aleph", prompt);旧代码里原来可能是:
// 旧调用 const answer = await cohere.generate({ prompt });迁移时改成:
const answer = await cohereChat(prompt);另一个入口改成:
const answer = await alephChat(prompt);这样业务层几乎不用动。你只需要保证TAOTOKEN_API_KEY、TAOTOKEN_COHERE_MODEL、TAOTOKEN_ALEPH_MODEL在运行环境中存在。模型 ID 不要抄旧供应商的公开名称,因为聚合入口的模型 ID、路由名和权限可能不同,以 TaoToken 控制台实际可选列表为准。
5. Claude Code:settings.json 与 ANTHROPIC_* 的独立配置
Claude Code 的配置不要和业务脚本混在一起。它读取ANTHROPIC_*系列变量,所以你在它自己的settings.json里配置。常见位置是用户级~/.claude/settings.json,也可以按项目级配置。下面是一份可复制的示例:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "YOUR_API_KEY", "ANTHROPIC_MODEL": "YOUR_CLAUDE_MODEL_ID" } }如果你更习惯在 shell 里临时注入,也可以这样:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="YOUR_API_KEY" export ANTHROPIC_MODEL="YOUR_CLAUDE_MODEL_ID"这里有两个容易踩的坑:
ANTHROPIC_BASE_URL必须指向https://taotoken.net/api,不要继续指向旧地址。ANTHROPIC_API_KEY填的是YOUR_API_KEY,不是旧的 Cohere 或 Aleph Alpha Key。
但请注意:这套ANTHROPIC_*只属于 Claude Code。Codex 不要去读ANTHROPIC_API_KEY,否则你会在排障时看到“Key 明明设置了却鉴权失败”的假象。Claude Code 的独立配置可以参考 TaoToken 的文档入口,文末会给 deep link。
6. Codex:config.toml 不要复用 ANTHROPIC_*
Codex 使用自己的config.toml。典型位置是~/.codex/config.toml。这里的目标是告诉 Codex:模型供应商是 TaoToken,Base URL 是https://taotoken.net/api,Key 从TAOTOKEN_API_KEY读取。
model = "YOUR_CODEX_MODEL_ID" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY"然后在 shell 里设置:
export TAOTOKEN_API_KEY="YOUR_API_KEY"注意这个配置里没有ANTHROPIC_API_KEY,也没有ANTHROPIC_BASE_URL。Codex 和 Claude Code 的配置路径不同、变量名不同,唯一相同的是它们最终都指向同一个 TaoToken Base URL,并且你可以在控制台统一管理 Key。
如果你同时使用 Claude Code 和 Codex,建议环境变量这样分层:
# TaoToken 通用层 export TAOTOKEN_API_KEY="YOUR_API_KEY" export TAOTOKEN_BASE_URL="https://taotoken.net/api" # Claude Code 专用层 export ANTHROPIC_BASE_URL="$TAOTOKEN_BASE_URL" export ANTHROPIC_API_KEY="$TAOTOKEN_API_KEY" # Codex 通过 config.toml 的 env_key = "TAOTOKEN_API_KEY" 读取,不读 ANTHROPIC_*这样既复用了同一把 Key,又不会把两套客户端的变量名弄混。
7. CC Switch 三件套:settings.json、config.toml、本地环境变量
如果你用 CC Switch 管理多个编码客户端,建议把“三件套”固定下来:
| 三件套 | 文件 / 位置 | 作用 | 与 TaoToken 的关系 |
|---|---|---|---|
| Claude Code 配置 | settings.json | 让 Claude Code 读取ANTHROPIC_* | Base URL 指向https://taotoken.net/api |
| Codex 配置 | config.toml | 声明 model_provider 和 env_key | Base URL 指向https://taotoken.net/api |
| 本地环境变量 | .env/ shell / CI Secrets | 提供TAOTOKEN_API_KEY | 供 Codex 和业务脚本读取 |
推荐的切换顺序是:
- 在 TaoToken 官网注册并创建 Key。
- 把 Key 写入本地环境变量或 CI Secret。
- 改 Claude Code 的
settings.json,只动ANTHROPIC_*。 - 改 Codex 的
config.toml,只动model_provider和env_key。 - 改业务脚本的 Base URL,统一成
https://taotoken.net/api。 - 跑两条路由验证,再删除旧 Cohere / Aleph Alpha Key。
CC Switch 三件套的核心不是“多套配置互相覆盖”,而是“多客户端共用一把 Key,但各自只读自己的变量名”。Claude Code 读ANTHROPIC_*,Codex 读TAOTOKEN_API_KEY,业务脚本读TAOTOKEN_API_KEY,互不污染。
8. 401、404、model not found 的本地排障表
从 Cohere 切到 Aleph Alpha 时,最常见的不是模型能力问题,而是配置问题。下面按报错定位。
| 现象 | 常见原因 | 本地修复 |
|---|---|---|
401 invalid api key | 还在用旧 Cohere / Aleph Alpha Key | 到 TaoToken 控制台创建 Key,替换为YOUR_API_KEY |
404 page not found | Base URL 仍指向旧域名或路径多余 | 客户端 Base URL 设为https://taotoken.net/api |
model not found | 写了旧供应商模型名 | 用 TaoToken 控制台实际模型 ID 填充YOUR_*_MODEL_ID |
| Claude Code 鉴权失败 | settings.json没生效或 shell 覆盖 | 检查ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY |
| Codex 鉴权失败 | 把ANTHROPIC_API_KEY当成 Codex Key | 改config.toml的env_key = "TAOTOKEN_API_KEY" |
| 同一请求时而成功时而失败 | 多套 Key 分布在不同环境 | 用 Key 复用表统一到TAOTOKEN_API_KEY |
| 本地成功,CI 失败 | CI Secret 没更新 | 在 CI 中重新写入TAOTOKEN_API_KEY |
排障时先把请求打到你自己的本地脚本,不要直接在 Agent 或在线工具里连生产库。命令和 SQL 都由你在本地终端执行。你只要确认三件事:Base URL 是不是https://taotoken.net/api,Key 是不是YOUR_API_KEY,模型 ID 是不是控制台里的实际值。
如果仍然报错,可以回到 TaoToken 官网检查 Key 状态和权限:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=cohere_aleph_troubleshoot。不要靠猜,先把错误码、请求路径和模型 ID 三件事对齐。
9. 可复制验证:两条路由跑通后再删旧 Key
在删除旧 Key 之前,至少跑通 Cohere 路由和 Aleph Alpha 路由。下面这段 Python 可以作为本地验证脚本:
import os from openai import OpenAI client = OpenAI( api_key=os.environ["TAOTOKEN_API_KEY"], base_url="https://taotoken.net/api", ) CASES = { "cohere": os.environ.get("TAOTOKEN_COHERE_MODEL", "YOUR_COHERE_MODEL_ID"), "aleph": os.environ.get("TAOTOKEN_ALEPH_MODEL", "YOUR_ALEPH_MODEL_ID"), } for route, model in CASES.items(): resp = client.chat.completions.create( model=model, messages=[{"role": "user", "content": f"ping {route}"}], temperature=0, ) text = resp.choices[0].message.content or "" print(route, "OK", text[:80])运行前设置:
export TAOTOKEN_API_KEY="YOUR_API_KEY" export TAOTOKEN_COHERE_MODEL="YOUR_COHERE_MODEL_ID" export TAOTOKEN_ALEPH_MODEL="YOUR_ALEPH_MODEL_ID" python verify_routes.py看到两个OK之后,再检查 Claude Code 和 Codex。Claude Code 用settings.json验证,Codex 用config.toml验证。两边都通过后,再把旧环境变量从 CI、服务器和本地.env中移除。不要一边保留旧 Key,一边说 Key 分家,那只是把问题藏起来。
10. 迁移清单与后续入口
把这次迁移压缩成一张清单:
- 在 TaoToken 官网注册,创建
YOUR_API_KEY。 - 所有业务脚本的 Base URL 改为
https://taotoken.net/api。 - 建
ROUTES路由表,把 Cohere / Aleph Alpha 路由映射到实际模型 ID。 - Claude Code 配
settings.json,只写ANTHROPIC_*。 - Codex 配
config.toml,只写model_provider、base_url、env_key。 - CC Switch 三件套固定为
settings.json、config.toml、本地环境变量。 - 跑双路由验证,再删旧 Key。
如果你还处在选型阶段,可以先打开模型对话页做一次真实请求,确认模型 ID 和返回格式:
https://taotoken.net/models/detail/chat?utm_source=taotoken_aicg_blog_end&utm_content=cohere_aleph_chat
如果你准备把编码客户端也切过来,可以查看 Coding Plan:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=cohere_aleph_plan
创建和管理 Key 在 API Keys 控制台:
https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=cohere_aleph_keys
Claude Code 的完整配置说明看这里:
https://taotoken.net/doc/ClaudeCodeAnthropic?utm_source=taotoken_aicg_blog_end&utm_content=cohere_aleph_claudecode
从 Cohere 切到 Aleph Alpha,真正要避免的是 Key、Base URL、模型名三处分家。把 Base URL 统一到https://taotoken.net/api,把 Key 收敛到YOUR_API_KEY,再用路由表区分模型,迁移就会变成一次配置更新,而不是一次代码重写。