犀速AI
文档目录
更新于 2026-10-16

快速开始

5 分钟接入犀速AI API:Python、Node.js、curl 完整教程

注册充值、创建密钥、改 base_url,用 Python、Node.js 或 curl 发出第一个请求,再到「调用明细」核对 token 和费用。

接入犀速AI 只需要两样东西:一把 API 密钥和一个 base_url。任何兼容 OpenAI 的 SDK 或工具,把这两样换掉就能用,业务代码不用改。

最短路径:

  1. 注册并充值(建议先充 10 元)
  2. 在控制台「API 密钥」创建一把密钥
  3. 把 base_url 设为 https://api.xisu.ai/v1
  4. 用下面任意一段代码发出第一个请求

下文的代码都已用真实密钥跑通过(截至 2026-10-16)。示例统一用 gpt-6-luna,它是目前单价最低的模型,适合跑通流程;换成其他模型只需改 model。

1. 注册账号

打开 注册页,用邮箱注册,再到邮箱里点验证链接。注册页有新手礼金活动时,验证后礼金会直接进入余额(以活动页为准)。图文步骤见 注册、充值、创建密钥。

2. 充值(建议先充 10 元)

登录控制台,左侧点「费用中心」,选 ¥10.00,点「立即充值」,支持支付宝和微信。

费用中心充值页

  • 控制台的金额以积分显示:¥1 = 100,000 积分,10 元就是 1,000,000 积分。
  • 余额不过期,调用结束后按实际用量扣费,不预扣。
  • 只支持预付,余额为 0 时新请求会被拒绝。退款规则见 充值与退款。

3. 创建 API 密钥

左侧点「API 密钥」,填一个名字(例如「本地测试」),点「创建密钥」。预算、IP 白名单、模型白名单都可以先留空,以后再设,见 密钥安全与轮换。

创建 API 密钥

密钥只显示一次

密钥明文只显示这一次。 服务端只存哈希,关掉页面后谁都找不回原文。当场复制保存;丢了就吊销旧的、新建一把。

为了不把密钥写进代码,下面的示例都从环境变量 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

对账分三步:

  1. 在「调用明细」里按请求编号筛选,填入 x-request-id 的值,找到这一笔。
  2. 核对 token:明细里的输入、输出应与响应 usage 里的 prompt_tokens、completion_tokens 一致;usage.prompt_tokens_details.cached_tokens 对应「其中缓存命中」,usage.completion_tokens_details.reasoning_tokens 对应「其中推理」。
  3. 核对费用:明细里的「输入」已经包含「其中缓存命中」,所以费用 =(输入 − 缓存命中)× 输入价 + 缓存命中 × 缓存读取价 + 缓存写入 × 缓存写入价 + 输出 × 输出价。各项单价在 模型广场 以「积分 / 每 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、发生时间、模型和完整错误响应。

下一步