TensorFusion Docs

快速开始

在控制台创建 API Key,用一条 curl 调通第一个 /v1/chat/completions 请求。

在控制台创建一个网关 API Key,再用一条 curl 调通第一个对话请求,全程约 5 分钟。

第一步:创建 API Key

打开控制台 https://ai.tos.run,在 API Key 管理页创建一个网关 API Key。新建的 Key 以 gk_ 为前缀,只在创建时完整展示一次,请立即复制保存。

把它写入环境变量,后续示例都从环境变量读取:

export TOS_API_KEY="gk_xxxxxxxxxxxxxx"

两个 host 不要混用:
控制台 / 创建 Key 用浏览器打开 https://ai.tos.run
API 调用 一律走 https://api.tos.run。把 ai.tos.run 当成 API base 是最常见的接入错误。

第二步:调通第一个请求

https://api.tos.run/v1/chat/completions 发一个 OpenAI 兼容的对话请求。注意 body 里必须带 modelmessages,并且显式声明 provider(号源 / 供应商)

curl "https://api.tos.run/v1/chat/completions?provider=anthropic" \
  -H "Authorization: Bearer $TOS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-x",
    "messages": [
      { "role": "system", "content": "你是一个简洁的中文助手。" },
      { "role": "user", "content": "用三句话介绍一下你自己。" }
    ]
  }'
import os, requests

resp = requests.post(
    "https://api.tos.run/v1/chat/completions",
    params={"provider": "anthropic"},
    headers={
        "Authorization": f"Bearer {os.environ['TOS_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "model": "claude-sonnet-4-x",
        "messages": [
            {"role": "system", "content": "你是一个简洁的中文助手。"},
            {"role": "user", "content": "用三句话介绍一下你自己。"},
        ],
    },
)
print(resp.json())
const resp = await fetch(
  "https://api.tos.run/v1/chat/completions?provider=anthropic",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.TOS_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "claude-sonnet-4-x",
      messages: [
        { role: "system", content: "你是一个简洁的中文助手。" },
        { role: "user", content: "用三句话介绍一下你自己。" },
      ],
    }),
  },
);
console.log(await resp.json());

返回是标准的 OpenAI 兼容响应,正文在 choices[0].message.content 中。

关于 provider(号源)声明

无界模型云在底层把流量路由到多个号源,因此 OpenAI 兼容请求必须显式声明 provider,否则网关无法决定路由,返回 400

{
  "error": {
    "message": "'provider' is required: pass it via ?provider=X or body.provider (valid: anthropic, deepseek, gemini, openai, ...)",
    "type": "invalid_request_error"
  }
}

报错里的 valid: 列表会列出当前实例真正可用的号源,以返回内容为准。

声明 provider 有三种方式,优先级从高到低:

  1. URL 查询参数 ?provider=anthropic(优先级最高)。
  2. 请求头 X-Provider: anthropic(适合无法在 base_url 上拼查询串的客户端,例如沙箱里的 CLI)。
  3. 请求体字段 body.provider(即 JSON body 里加 "provider": "anthropic")。

provider 的取值是具体号源 / 供应商 ID(如 anthropicopenaideepseekgemini 等),具体可用列表以控制台与上面 400 错误里的 valid: 清单为准。Anthropic 原生 /v1/messages 接口按模型自身协议路由,无需此参数。

下一步

生产环境请把 API Key 放在服务端,不要暴露到浏览器或客户端代码里。给不同应用使用不同的 Key,便于审计、限额和停用。

目录