SDK 与 CLI 使用

Routic 提供与 OpenAI API 完全兼容的接口。你可以使用 OpenAI 官方的 Python 和 Node.js SDK,也可以通过 curl 等 CLI 工具直接调用。

Python (OpenAI SDK)

安装

pip install openai

基础用法

from openai import OpenAI

client = OpenAI(
    base_url="https://api.routic.ai/v1",
    api_key="sk-xxxxxxxx",  # 你的 Routic API Key
)

response = client.chat.completions.create(
    model="deepseek-v3",
    messages=[{"role": "user", "content": "你好,世界!"}],
)

print(response.choices[0].message.content)

流式输出

stream = client.chat.completions.create(
    model="deepseek-v3",
    messages=[{"role": "user", "content": "给我讲个笑话"}],
    stream=True,
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

工具调用 (Function Calling)

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "获取城市的当前天气",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string", "description": "城市名称"},
                },
                "required": ["city"],
            },
        },
    }
]

response = client.chat.completions.create(
    model="deepseek-v3",
    messages=[{"role": "user", "content": "东京的天气怎么样?"}],
    tools=tools,
)

JSON 模式

response = client.chat.completions.create(
    model="deepseek-v3",
    messages=[{"role": "user", "content": "列出3个国家及其首都"}],
    response_format={"type": "json_object"},
)

Node.js (OpenAI SDK)

安装

npm install openai
# 或
yarn add openai
# 或
pnpm add openai

基础用法

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.routic.ai/v1",
  apiKey: "sk-xxxxxxxx", // 你的 Routic API Key
});

const response = await client.chat.completions.create({
  model: "deepseek-v3",
  messages: [{ role: "user", content: "你好,世界!" }],
});

console.log(response.choices[0].message.content);

流式输出

const stream = await client.chat.completions.create({
  model: "deepseek-v3",
  messages: [{ role: "user", content: "给我讲个笑话" }],
  stream: true,
});

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

工具调用 (Function Calling)

const tools = [
  {
    type: "function",
    function: {
      name: "get_weather",
      description: "获取城市的当前天气",
      parameters: {
        type: "object",
        properties: {
          city: { type: "string", description: "城市名称" },
        },
        required: ["city"],
      },
    },
  },
];

const response = await client.chat.completions.create({
  model: "deepseek-v3",
  messages: [{ role: "user", content: "东京的天气怎么样?" }],
  tools,
});

CLI (curl)

基础请求

curl -sS "https://api.routic.ai/v1/chat/completions" \
  -H "Authorization: Bearer $ROUTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v3",
    "messages": [{"role": "user", "content": "你好,世界!"}]
  }'

流式输出

curl -sS "https://api.routic.ai/v1/chat/completions" \
  -H "Authorization: Bearer $ROUTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v3",
    "messages": [{"role": "user", "content": "给我讲个笑话"}],
    "stream": true
  }'

获取可用模型列表

curl -sS "https://api.routic.ai/v1/models" \
  -H "Authorization: Bearer $ROUTIC_API_KEY"

环境变量

建议将 API Key 设置为环境变量,避免硬编码:

# Linux/macOS
export ROUTIC_API_KEY="sk-xxxxxxxx"

# Windows (PowerShell)
$env:ROUTIC_API_KEY = "sk-xxxxxxxx"

然后在代码中引用:

import os
client = OpenAI(
    base_url="https://api.routic.ai/v1",
    api_key=os.environ.get("ROUTIC_API_KEY"),
)

错误处理

所有 SDK 都遵循相同的错误处理模式:

from openai import OpenAI, APIError, AuthenticationError, RateLimitError

client = OpenAI(
    base_url="https://api.routic.ai/v1",
    api_key="sk-xxxxxxxx",
)

try:
    response = client.chat.completions.create(
        model="deepseek-v3",
        messages=[{"role": "user", "content": "你好"}],
    )
except AuthenticationError as e:
    print(f"API Key 无效: {e}")
except RateLimitError as e:
    print(f"请求频率超限,请稍后重试: {e}")
except APIError as e:
    print(f"API 错误: {e}")

HTTP 状态码和错误详情请参考 HTTP 语义与错误格式


智能路由

使用路由别名让 Routic 自动选择最佳模型:

response = client.chat.completions.create(
    model="auto/reasoning",  # Routic 自动选择最佳推理模型
    messages=[{"role": "user", "content": "证明根号2是无理数"}],
)

可用别名:

  • auto/chat — 最佳通用对话模型
  • auto/reasoning — 最佳推理模型

思考模式

为推理模型启用扩展思考:

response = client.chat.completions.create(
    model="deepseek-r1",
    messages=[{"role": "user", "content": "证明根号2是无理数"}],
    extra_body={"thinking": {"type": "enabled", "budget_tokens": 1024}},
)

相关文档