集成 · OpenAI SDK

最推荐的接入方式 —— 既有代码零改动,只换两个字段。

Python

bash
pip install -U openai
python
from openai import OpenAI

client = OpenAI(
    api_key="sk-swx-xxxxxxxxxxxxxxxxxxxx",
    base_url="http://router.swarmixtoken.com/v1",
)

# 非流式
resp = client.chat.completions.create(
    model="aliyun/qwen-max",
    messages=[{"role": "user", "content": "你好"}],
    temperature=0.7,
    max_tokens=500,
)
print(resp.choices[0].message.content)
print(resp.usage)  # CompletionUsage(prompt_tokens=4, completion_tokens=8, total_tokens=12)

# 流式
stream = client.chat.completions.create(
    model="aliyun/deepseek-r1",
    messages=[{"role": "user", "content": "写首秋天的诗"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Node.js / TypeScript

bash
npm install openai
typescript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.SWARMIX_API_KEY,
  baseURL: "http://router.swarmixtoken.com/v1",
});

// 非流式
const resp = await client.chat.completions.create({
  model: "tencent/hunyuan-turbo",
  messages: [{ role: "user", content: "hi" }],
});
console.log(resp.choices[0].message.content);

// 流式
const stream = await client.chat.completions.create({
  model: "aliyun/qwen-max",
  messages: [{ role: "user", content: "write a haiku" }],
  stream: true,
});
for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || "");
}

Go

bash
go get github.com/sashabaranov/go-openai
go
package main

import (
    "context"
    "fmt"
    "github.com/sashabaranov/go-openai"
)

func main() {
    cfg := openai.DefaultConfig("sk-swx-xxxxxxxxxxxxxxxxxxxx")
    cfg.BaseURL = "http://router.swarmixtoken.com/v1"
    client := openai.NewClientWithConfig(cfg)

    resp, err := client.CreateChatCompletion(
        context.Background(),
        openai.ChatCompletionRequest{
            Model: "aliyun/deepseek-r1",
            Messages: []openai.ChatCompletionMessage{
                {Role: "user", Content: "hi"},
            },
        },
    )
    if err != nil {
        panic(err)
    }
    fmt.Println(resp.Choices[0].Message.Content)
}

常见坑

base_url 末尾要不要带 /v1
OpenAI Python SDK 会自动把 base_url 拼接上 /chat/completions等 path。如果你填 http://router.swarmixtoken.com(不带 /v1), 会变成 /chat/completions(无 v1 前缀)导致 404。务必填 http://router.swarmixtoken.com/v1
httpx 超时
大模型流式响应时长有可能超过默认 60s 超时。Python OpenAI SDK 支持:
client = OpenAI(..., timeout=300.0)  # 秒

环境变量风格(推荐)

bash
# .env
OPENAI_API_KEY=sk-swx-xxxxxxxxxxxxxxxxxxxx
OPENAI_BASE_URL=http://router.swarmixtoken.com/v1

这样代码里就不用传任何参数:

python
from openai import OpenAI
client = OpenAI()  # 自动从环境变量读