快速开始
5 分钟接入犀速AI API:Python、Node.js、curl 完整教程
注册充值、创建密钥、改 base_url,用 Python、Node.js 或 curl 发出第一个请求,再到「调用明细」核对 token 和费用。
接入犀速AI 只需要两样东西:一把 API 密钥和一个 base_url。任何兼容 OpenAI 的 SDK 或工具,把这两样换掉就能用,业务代码不用改。
最短路径:
- 注册并充值(建议先充 10 元)
- 在控制台「API 密钥」创建一把密钥
- 把 base_url 设为
https://api.xisu.ai/v1 - 用下面任意一段代码发出第一个请求
下文的代码都已用真实密钥跑通过(截至 2026-10-16)。示例统一用 gpt-6-luna,它是目前单价最低的模型,适合跑通流程;换成其他模型只需改 model。
1. 注册账号
打开 注册页,用邮箱注册,再到邮箱里点验证链接。注册页有新手礼金活动时,验证后礼金会直接进入余额(以活动页为准)。图文步骤见 注册、充值、创建密钥。
2. 充值(建议先充 10 元)
登录控制台,左侧点「费用中心」,选 ¥10.00,点「立即充值」,支持支付宝和微信。

- 控制台的金额以积分显示:¥1 = 100,000 积分,10 元就是 1,000,000 积分。
- 余额不过期,调用结束后按实际用量扣费,不预扣。
- 只支持预付,余额为 0 时新请求会被拒绝。退款规则见 充值与退款。
3. 创建 API 密钥
左侧点「API 密钥」,填一个名字(例如「本地测试」),点「创建密钥」。预算、IP 白名单、模型白名单都可以先留空,以后再设,见 密钥安全与轮换。


密钥明文只显示这一次。 服务端只存哈希,关掉页面后谁都找不回原文。当场复制保存;丢了就吊销旧的、新建一把。
为了不把密钥写进代码,下面的示例都从环境变量 XISU_API_KEY 读取。在运行代码的终端里先设好:
# Windows PowerShell
$env:XISU_API_KEY = "sk-你的密钥"
# macOS / Linux
export XISU_API_KEY="sk-你的密钥"
4. 设置 base_url
https://api.xisu.ai/v1
注意结尾的 /v1。漏掉它,请求会返回 404 Not Found。如果你用的是 Anthropic SDK 或 Claude Code,地址不带 /v1,见 犀速AI是什么。
5. 发出第一个请求
Python
pip install openai
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["XISU_API_KEY"], # 从环境变量读取,别把密钥写进代码
base_url="https://api.xisu.ai/v1",
)
resp = client.chat.completions.create(
model="gpt-6-luna",
messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(resp.choices[0].message.content)
print(resp.usage)
输出类似:
我是一个由人工智能驱动的助手,能够帮助你解答问题、创作内容、分析信息并完成各种任务。
CompletionUsage(completion_tokens=32, prompt_tokens=308, total_tokens=340, ...)
Node.js
Node.js 18 及以上自带 fetch,不用装任何包。把代码存成 hello.mjs,运行 node hello.mjs:
const resp = await fetch("https://api.xisu.ai/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.XISU_API_KEY}`,
},
body: JSON.stringify({
model: "gpt-6-luna",
messages: [{ role: "user", content: "用一句话介绍你自己" }],
}),
});
const data = await resp.json();
if (!resp.ok) throw new Error(JSON.stringify(data.error));
console.log(data.choices[0].message.content);
console.log("x-request-id:", resp.headers.get("x-request-id"));
console.log("usage:", data.usage);
想用官方 SDK,先 npm i openai:
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.XISU_API_KEY,
baseURL: "https://api.xisu.ai/v1",
});
const resp = await client.chat.completions.create({
model: "gpt-6-luna",
messages: [{ role: "user", content: "用一句话介绍你自己" }],
});
console.log(resp.choices[0].message.content);
console.log(resp.usage);
curl
macOS / Linux 终端(或 Git Bash):
curl https://api.xisu.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $XISU_API_KEY" \
-d '{"model":"gpt-6-luna","messages":[{"role":"user","content":"你好"}]}'
返回的 JSON 里,choices[0].message.content 是回复,usage 是本次 token 用量。
Windows PowerShell 里引号转义容易出错,建议用下面这段(Windows 自带的 PowerShell 5.1 实测可用,中文不乱码):
$body = @{
model = "gpt-6-luna"
messages = @(@{ role = "user"; content = "用一句话介绍你自己" })
} | ConvertTo-Json -Depth 5
$resp = Invoke-WebRequest -Uri "https://api.xisu.ai/v1/chat/completions" -Method Post -UseBasicParsing `
-Headers @{ Authorization = "Bearer $env:XISU_API_KEY" } `
-ContentType "application/json; charset=utf-8" `
-Body ([Text.Encoding]::UTF8.GetBytes($body))
$data = [Text.Encoding]::UTF8.GetString($resp.RawContentStream.ToArray()) | ConvertFrom-Json
$data.choices[0].message.content
"x-request-id: " + $resp.Headers["x-request-id"]
流式输出
加上 stream=True,回复会一段一段地返回,适合聊天界面边生成边显示:
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["XISU_API_KEY"], base_url="https://api.xisu.ai/v1")
stream = client.chat.completions.create(
model="gpt-6-luna",
messages=[{"role": "user", "content": "写三句关于秋天的短诗"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage: # 最后一块:choices 为空,只带 usage
print("\n\nusage:", chunk.usage)
流式请求会自动在最后多发一块 usage,它的 choices 是空数组。自己解析 SSE 时别假设每块都有 choices[0],详见 API 兼容性与参数。流中途断开时,已生成的部分照常计费。
6. 在「调用明细」里看这一笔
调用成功后,回到控制台左侧点「调用明细」,就能看到刚才的请求。每一行包括:
| 列 | 内容 |
|---|---|
| 时间 | 请求发生的时刻 |
| 请求编号 | 这一笔的 request_id |
| 模型 / 密钥 | 实际调用的模型、用的哪把密钥(显示前缀) |
| Token | 分项显示:输入(其中缓存命中)、输出(其中推理)、缓存写入、合计 |
| 耗时 | 这一笔花了多久 |
| 费用 | 本次扣除的积分 |
| 状态 | 成功 / 失败 / 客户端中断 / 上游错误 / 未计费 |

可以按时间范围、密钥、状态和请求编号筛选。失败的请求也会列出来,费用显示「0 积分 本次无输出」,不扣钱。页面上标有「数据截至」的时间,刚调用完的请求可能要稍等一会儿才出现。
7. 用 x-request-id 和 usage 对账
每个响应都带一个响应头 x-request-id,响应体里的 usage 是这一次的 token 用量。把它们记下来,就能和控制台逐笔对上:
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["XISU_API_KEY"], base_url="https://api.xisu.ai/v1")
raw = client.chat.completions.with_raw_response.create(
model="gpt-6-luna",
messages=[{"role": "user", "content": "1+1=?"}],
)
resp = raw.parse()
print("x-request-id:", raw.headers.get("x-request-id"))
print("prompt_tokens:", resp.usage.prompt_tokens)
print("completion_tokens:", resp.usage.completion_tokens)
print("total_tokens:", resp.usage.total_tokens)
输出类似:
x-request-id: b694a772-4814-4f3e-973e-15537e7b023d
prompt_tokens: 306
completion_tokens: 5
total_tokens: 311
对账分三步:
- 在「调用明细」里按请求编号筛选,填入
x-request-id的值,找到这一笔。 - 核对 token:明细里的输入、输出应与响应
usage里的prompt_tokens、completion_tokens一致;usage.prompt_tokens_details.cached_tokens对应「其中缓存命中」,usage.completion_tokens_details.reasoning_tokens对应「其中推理」。 - 核对费用:明细里的「输入」已经包含「其中缓存命中」,所以费用 =(输入 − 缓存命中)× 输入价 + 缓存命中 × 缓存读取价 + 缓存写入 × 缓存写入价 + 输出 × 输出价。各项单价在 模型广场 以「积分 / 每 100 万 token」标出;推理 token 按输出价计。算出的积分除以 100,000 就是人民币,例如明细里显示 3,370 积分,就是 ¥0.0337。

更多细节(例如费用显示为 0 的几种原因)见 用量与账单怎么核对。
常见报错
| 现象 | 原因 | 怎么办 |
|---|---|---|
401 invalid_api_key |
密钥填错、已吊销,或来源 IP 不在这把密钥的白名单里 | 检查环境变量里的密钥;设了 IP 白名单的话先确认来源 IP |
400 model_not_found |
模型名拼错或已下架 | 到 模型广场 点击复制完整模型名 |
404 Not Found |
base_url 漏了 /v1 |
改成 https://api.xisu.ai/v1 |
insufficient_balance |
余额不够这一笔 | 到「费用中心」充值。走 Anthropic 原生接口时,余额不足报的是 429 rate_limit_error |
完整错误码见 错误码与限流。报障时请带上 x-request-id、发生时间、模型和完整错误响应。
下一步
- 选模型:模型怎么选
- 在 Claude Code 里用:Claude Code 接入教程
- 在 Codex CLI 里用:Codex CLI 接入教程
- 用桌面客户端聊天:客户端下载与接入
- 上线前要注意的超时与重试:上线前:超时、重试与工具调用