客户端接入(Claude Code / Codex CLI / SDK)
一键脚本把 Claude Code、Codex CLI 指向网关,以及 OpenAI / Anthropic SDK 配置。
把现成的 AI 客户端指向无界模型云(Wujie Model Cloud)只需切换 Base、Key——数据面是 https://api.tos.run,鉴权用以 gk_ 开头的网关 API Key。下面给出 Claude Code、Codex CLI 的一键安装脚本,以及 OpenAI / Anthropic SDK 的手动配置。
私有化部署接入方式一致,把
api.tos.run换成你自己的数据面域名即可 → 企业私有化部署。
所有接入的 Base 都是数据面 https://api.tos.run(不是控制台 https://ai.tos.run)。控制台只用于浏览器登录、建 Key、看用量。
Codex CLI
一键安装脚本会写入 ~/.codex/config.toml 的命名 provider 段 [model_providers.tos-run],并把 Key 写入独立环境变量 TOS_API_KEY。
curl -fsSL https://tos.run/install/codex.sh | bash -s -- --key gk_YOUR_KEYirm https://tos.run/install/codex.ps1 -OutFile setup-codex.ps1
.\setup-codex.ps1 -Key gk_YOUR_KEY脚本写入的 ~/.codex/config.toml 等价于:
model_provider = "tos-run"
model = "gpt-5.3-codex"
model_reasoning_effort = "medium"
preferred_auth_method = "apikey"
[model_providers.tos-run]
name = "Tensor Gateway"
base_url = "https://api.tos.run/v1"
env_key = "TOS_API_KEY"
wire_api = "responses"
request_max_retries = 0
stream_max_retries = 0关键点:
base_url = https://api.tos.run/v1,wire_api = responses(Codex 的 responses 协议)。env_key = TOS_API_KEY:Codex 从该环境变量读取 Key(脚本会写入~/.zshrc/~/.bashrc)。model_provider = tos-run:把默认 provider 切到网关命名段,否则 Codex 会路由到内置openaiprovider 并 401。- 具体
model以控制台展示的可用模型为准,建议作为配置项管理。
不要复用 OPENAI_API_KEY 作为网关 Key。Codex 内置 openai provider 读取 OPENAI_API_KEY,复用会(1)覆盖你真实的 OpenAI Key,(2)让 Codex 无法区分 Key 归属。一定要用独立的 TOS_API_KEY。
如果还没装 Codex:npm install -g @openai/codex。
Claude Code
一键安装脚本会写入 ~/.claude/settings.json 的 env 块,把 Claude Code 指向网关的 Anthropic 兼容端点。
curl -fsSL https://tos.run/install/claude.sh | bash -s -- --key gk_YOUR_KEY脚本写入的 ~/.claude/settings.json 等价于(已存在的其它键会被保留 / 合并):
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.tos.run",
"ANTHROPIC_AUTH_TOKEN": "gk_YOUR_KEY"
}
}关键点:
ANTHROPIC_BASE_URL = https://api.tos.run(注意是数据面,不带/v1,Claude Code 自行拼接/v1/messages)。ANTHROPIC_AUTH_TOKEN = gk_YOUR_KEY:以Authorization: Bearer形式发往网关。
不要设置全局 ANTHROPIC_API_KEY——它的优先级高于 settings.json 的 env 块,会绕过网关把请求发到原生 Anthropic。同理,shell 里导出的 ANTHROPIC_BASE_URL 若指向别处也会覆盖 settings.json。安装脚本检测到这类冲突会发出警告,按提示 unset ANTHROPIC_API_KEY / unset ANTHROPIC_BASE_URL 即可。
如果还没装 Claude Code:npm install -g @anthropic-ai/claude-code。
OpenAI SDK
OpenAI 兼容接口,base_url 用 https://api.tos.run/v1,Key 用 gk_ 网关 Key。
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.tos.run/v1",
api_key=os.environ["TOS_API_KEY"], # gk_ 开头的网关 Key
)
resp = client.chat.completions.create(
model="qwen-plus", # 具体模型以控制台为准
messages=[{"role": "user", "content": "用一句话介绍一下你自己。"}],
)
print(resp.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.tos.run/v1",
apiKey: process.env.TOS_API_KEY, // gk_ 开头的网关 Key
});
const resp = await client.chat.completions.create({
model: "qwen-plus", // 具体模型以控制台为准
messages: [{ role: "user", content: "用一句话介绍一下你自己。" }],
});
console.log(resp.choices[0].message.content);部分 OpenAI 兼容客户端会从环境变量 OPENAI_API_KEY 自动读取 Key——它的优先级通常更高,可能绕过你在代码里设的网关 Key。建议显式传入 api_key,并用独立的 TOS_API_KEY 存放网关 Key。
Anthropic SDK
Anthropic 原生 Messages 接口,base_url 用 https://api.tos.run(SDK 会拼接 /v1/messages)。网关在数据面接受 Authorization: Bearer gk_...,因此用 auth_token 传入网关 Key。
import os
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.tos.run",
auth_token=os.environ["TOS_API_KEY"], # → Authorization: Bearer gk_...
)
msg = client.messages.create(
model="claude-sonnet-4-x", # 具体模型以控制台为准
max_tokens=1024,
messages=[{"role": "user", "content": "用三句话介绍一下你自己。"}],
)
print(msg.content)import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://api.tos.run",
authToken: process.env.TOS_API_KEY, // → Authorization: Bearer gk_...
});
const msg = await client.messages.create({
model: "claude-sonnet-4-x", // 具体模型以控制台为准
max_tokens: 1024,
messages: [{ role: "user", content: "用三句话介绍一下你自己。" }],
});
console.log(msg.content);统一用 gk_ 开头的网关 Key,不要混用原生厂商 Key。Anthropic 原生 Messages 的参数、流式与工具调用细节见 Claude 对话 API;错误处理与重试见 错误码与错误处理 与 限流与配额。