使用文档

API 接入、模型选择、计费规则、错误码 —— 一份够用的指南。

快速开始

三步上手:注册账户拿 API key,用 OpenAI 兼容 SDK 调用,base_url 改成我们的就行。

  1. 注册账户(首次注册赠送 $0.10 试用额度)。
  2. 进入 API Keys 页面,点 “创建 Key” 取得一个 sk-aip- 开头的密钥(只显示一次,立即复制)。
  3. 把任何 OpenAI SDK 的 base_url 换成 https://47.90.183.175.nip.io/v1,api_key 换成 sk-aip-…,所有现有代码都直接能用。

cURL

curl https://47.90.183.175.nip.io/v1/chat/completions \
  -H "Authorization: Bearer sk-aip-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "auto",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

Python

from openai import OpenAI

client = OpenAI(
    api_key="sk-aip-...",
    base_url="https://47.90.183.175.nip.io/v1",
)

resp = client.chat.completions.create(
    model="auto",                    # or "cheap" / "smart" / "gpt-5" / "claude" / ...
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)

Node.js

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-aip-...",
  baseURL: "https://47.90.183.175.nip.io/v1",
});

const stream = await client.chat.completions.create({
  model: "auto",
  messages: [{ role: "user", content: "Hello" }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}

鉴权

通过 HTTP Authorization 头携带 API key:

Authorization: Bearer sk-aip-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Key 只在 创建那一刻显示一次。我们只保存哈希,弄丢了只能撤销重建。

智能路由策略

model 字段可以是具体模型 slug,也可以是路由策略 —— 由平台选最合适的真实模型。

策略行为
auto智能路由:长上下文 / 数学 → 旗舰;代码 → 代码专家(如 Codestral);其他 → 最便宜可用模型。
cheap总是选最便宜能完成任务的模型。
smart总是选旗舰(GPT-5.5 Pro / Claude Opus 4.7 等)。
fast按 speed_tier=fast 排序,优先低延迟。

兼容别名

把 OpenAI / Anthropic 等家族的常见模型名映射到我们的内部 slug,让你的现有代码无改动迁移:

你写实际路由到
gpt-4 / gpt-4o / gpt-4-turbogpt-5-4
gpt-4o-minigpt-5-4-mini
gpt-5gpt-5-5
o1gpt-5-5-pro
claude / claude-3-5-sonnetclaude-sonnet-4-6
claude-3-opusclaude-opus-4-7
gemini / gemini-progemini-3-1-pro
deepseek / deepseek-chatdeepseek-v4-pro
qwen / qwen-maxqwen3-6-235b
llama-4llama-4-maverick

完整列表见 模型目录,搜索能找到全部 57 个模型的当前价格。

Chat Completions 接口

POST /v1/chat/completions —— 完全对齐 OpenAI 的 Chat Completions API,支持流式 / 工具调用 / JSON mode。

请求体字段

字段类型说明
modelstring目标模型 slug、别名或路由策略(auto/cheap/smart/fast)
messagesarray消息列表,至少 1 条;支持 system/user/assistant/tool
max_tokensnumber?输出上限。不传时按模型分类自动套合理默认值
temperaturenumber?采样温度 0~2
top_pnumber?nucleus 采样阈值
stopstring | string[]?停止序列(最多 4 个)
streamboolean?是否流式输出(SSE 格式)
toolsarray?OpenAI 风格函数调用 schema
response_formatobject?对象格式:type 字段为 json_object 或 text

流式响应(SSE)

设置 stream:true 后服务器逐 chunk 推送,最后一行是 [DONE]。我们会在 [DONE] 前多发一条 usage chunk,包含真实 token 数。

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"}}]}

data: {"id":"chatcmpl-...","choices":[{"index":0,"delta":{"content":"Hello"}}]}

data: {"id":"chatcmpl-...","choices":[{"index":0,"delta":{"content":"!"}}]}

data: {"id":"chatcmpl-...","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: {"id":"chatcmpl-...","choices":[],"usage":{"prompt_tokens":11,"completion_tokens":2,"total_tokens":13}}

data: [DONE]

GET /v1/models

列出全部可用模型 + 路由策略,包含价格、能力分类、上下文窗口等元数据(额外字段在 x_model_router 下,OpenAI SDK 会自动忽略)。

curl https://47.90.183.175.nip.io/v1/models

# returns:
# {
#   "object": "list",
#   "data": [
#     {"id":"auto","object":"model","owned_by":"model-router","x_model_router":{"kind":"strategy",...}},
#     {"id":"gpt-5-5","object":"model","owned_by":"OpenAI","x_model_router":{"kind":"model",...}},
#     ...
#   ]
# }

响应缓存

重复的问题不重复收费。两层都是自动的:完全相同的请求走精确命中;换个说法问同一件事,相似度够高时走语义命中。缓存保留 72 小时。

X-Cache行为
HIT型号、完整消息、参数一模一样
HIT-SEMANTIC换个说法问同一件事(相似度 ≥ 0.90)
MISS没命中,这次真的送去上游

语义命中时,响应体里会多一个 cache_similarity 字段告诉你匹配得有多近。

不想走缓存

有些场景就是要每次重新生成 —— 抽奖文案、随机示例、A/B 测试。把 temperature 设成大于 0.3 就完全跳过缓存:你要的本来就是随机性,拿旧答案给你是错的。带 tools 的请求也一律不缓存。

{
  "model": "auto",
  "temperature": 1,
  "messages": [{"role": "user", "content": "..."}]
}

不传 temperature 时默认是 0,也就是默认走缓存。这是省钱的默认值,但如果你的场景需要每次都不一样,记得显式传。

谁的缓存给谁

  • 语义命中只在「同一把 API 密钥 + 同一套 system prompt」的范围内找。别的项目、别的账号、甚至同一把密钥下的另一套人设,都拿不到你的答案,你也拿不到他们的 —— 语义命中回的是另一道题的答案,所以这条边界是必须的。
  • 精确命中是全局的,但那要求型号、完整消息、参数全都一样,回给你的就是你自己那份输入对应的答案,里面不会有别人的东西。

计费规则

钱包预存制,按 token 实时扣费。

  • 充值用 Stripe 信用卡,到账即可使用,不退款部分按使用次数计算。
  • 每次请求按实际 token 数计费,写入流水可追溯。失败请求不收费。
  • 提示词缓存命中部分按 1/10 价格计费(自动开启,无需配置)。
  • 金额按微分(μ¢)记账,零售价向上取整 —— 永不漏收,永不漏算。

想知道每月会花多少?用 成本计算器 输入预估用量看跨模型对比。

错误码

所有错误响应符合 OpenAI 错误格式:error 对象含 message / type / code / param 四个字段。

状态码错误码含义
401missing_authorization请求未携带 Authorization 头
401invalid_api_keyAPI key 不存在或格式错误
401key_revokedkey 已被撤销
402insufficient_quota钱包余额不足,请充值
403account_inactive账户已停用
404model_not_found模型 slug 不存在;用 /v1/models 看全部可用 slug
429monthly_cap_exceededAPI key 月度上限超出,下月自动重置
500server_error服务器内部错误;上游 provider 全失败时也会返回此码

常见问题

我用的是 OpenAI 官方 SDK,能直接接入吗?
可以。把 base_url 改成 https://47.90.183.175.nip.io/v1,api_key 换成 sk-aip-…,其他代码不用动。
auto 路由会让我选到比预期贵的模型吗?
不会。auto 默认偏好便宜模型;只有当请求被识别为 “数学 / 长上下文” 才会升级到旗舰。强制用 cheap 可锁死成本。
失败请求会扣钱吗?
不会。只有 Provider 真的开始流式输出后才计费;fallback 切换前的失败不收费。
怎么开启提示词缓存?
对支持的模型(Anthropic / OpenAI / Google)自动开启,无需配置。命中部分按 1/10 价格计费,可以在 Dashboard 首页看到累计省下多少。