Skip to content

代码示例

本页面提供 TopRouter API 各功能的完整代码示例,涵盖 Python、TypeScript 和 cURL。

聊天补全

Python — 基础对话

python
from openai import OpenAI

client = OpenAI(
    base_url="https://toprouter.cc",
    api_key="your-api-key"
)

response = client.chat.completions.create(
    model="anthropic/claude-4.6-sonnet",
    messages=[
        {"role": "system", "content": "你是一个专业的技术顾问。"},
        {"role": "user", "content": "请解释微服务架构的优缺点。"}
    ],
    temperature=0.7,
    max_tokens=2000
)

print(response.choices[0].message.content)
print(f"\n--- Token 使用 ---")
print(f"输入: {response.usage.prompt_tokens}")
print(f"输出: {response.usage.completion_tokens}")
print(f"总计: {response.usage.total_tokens}")

Python — 流式对话

python
from openai import OpenAI

client = OpenAI(
    base_url="https://toprouter.cc",
    api_key="your-api-key"
)

stream = client.chat.completions.create(
    model="openai/gpt-5.5",
    messages=[
        {"role": "user", "content": "用 Python 实现一个简单的 HTTP 服务器。"}
    ],
    stream=True
)

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

Python — 多轮对话

python
from openai import OpenAI

client = OpenAI(
    base_url="https://toprouter.cc",
    api_key="your-api-key"
)

conversation = [
    {"role": "system", "content": "你是一个 Python 编程导师。"}
]

def chat(user_message):
    conversation.append({"role": "user", "content": user_message})

    response = client.chat.completions.create(
        model="anthropic/claude-4.6-sonnet",
        messages=conversation
    )

    assistant_message = response.choices[0].message.content
    conversation.append({"role": "assistant", "content": assistant_message})
    return assistant_message

# 多轮对话
print(chat("什么是列表推导式?"))
print("---")
print(chat("能给我一个复杂一点的例子吗?"))
print("---")
print(chat("它和 map/filter 函数相比有什么优势?"))

TypeScript — 基础对话

typescript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://toprouter.cc',
  apiKey: 'your-api-key',
});

async function chat() {
  const response = await client.chat.completions.create({
    model: 'anthropic/claude-4.6-sonnet',
    messages: [
      { role: 'system', content: '你是一个专业的技术顾问。' },
      { role: 'user', content: '请解释 RESTful API 设计的最佳实践。' },
    ],
    temperature: 0.7,
  });

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

chat();

TypeScript — 流式对话

typescript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://toprouter.cc',
  apiKey: 'your-api-key',
});

async function streamChat() {
  const stream = await client.chat.completions.create({
    model: \'openai/gpt-5.5\',
    messages: [
      { role: 'user', content: '写一个 Express.js 的中间件示例。' },
    ],
    stream: true,
  });

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

streamChat();

cURL — 基础请求

bash
curl https://toprouter.cc/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "anthropic/claude-4.6-sonnet",
    "messages": [
      {"role": "system", "content": "你是一个有帮助的助手。"},
      {"role": "user", "content": "你好,请介绍你自己。"}
    ],
    "temperature": 0.7
  }'

cURL — 流式请求

bash
curl https://toprouter.cc/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "openai/gpt-5.5",
    "messages": [
      {"role": "user", "content": "写一首诗"}
    ],
    "stream": true
  }'

图像生成

Python — 生成图像

python
from openai import OpenAI

client = OpenAI(
    base_url="https://toprouter.cc",
    api_key="your-api-key"
)

response = client.images.generate(
    model="openai/dall-e-3",
    prompt="一座未来城市的鸟瞰图,悬浮的交通工具,霓虹灯光,赛博朋克风格",
    size="1024x1024",
    quality="hd",
    n=1
)

print(f"图像 URL: {response.data[0].url}")
if response.data[0].revised_prompt:
    print(f"修改后的提示词: {response.data[0].revised_prompt}")

Python — 下载并保存图像

python
import requests
from openai import OpenAI

client = OpenAI(
    base_url="https://toprouter.cc",
    api_key="your-api-key"
)

response = client.images.generate(
    model="openai/dall-e-3",
    prompt="一只可爱的机器人在花园里浇花,卡通风格",
    size="1024x1024",
    n=1
)

image_url = response.data[0].url

# 下载图像
img_response = requests.get(image_url)
with open("generated_image.png", "wb") as f:
    f.write(img_response.content)

print("图像已保存为 generated_image.png")

TypeScript — 生成图像

typescript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://toprouter.cc',
  apiKey: 'your-api-key',
});

async function generateImage() {
  const response = await client.images.generate({
    model: 'openai/dall-e-3',
    prompt: '一座未来城市的鸟瞰图,赛博朋克风格',
    size: '1024x1024',
    quality: 'hd',
    n: 1,
  });

  console.log('图像 URL:', response.data[0].url);
}

generateImage();

cURL — 生成图像

bash
curl https://toprouter.cc/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-api-key" \
  -d '{
    "model": "openai/dall-e-3",
    "prompt": "一座未来城市的鸟瞰图,赛博朋克风格",
    "size": "1024x1024",
    "quality": "hd",
    "n": 1
  }'

视频生成

Python — 文生视频

python
from openai import OpenAI

client = OpenAI(
    base_url="https://toprouter.cc",
    api_key="your-api-key"
)

response = client.chat.completions.create(
    model="seedance/seedance-1-lit",
    messages=[
        {
            "role": "user",
            "content": "一条金鱼在清澈的水中优雅地游动,阳光穿过水面形成光斑,微距拍摄"
        }
    ]
)

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

Python — 图生视频

python
from openai import OpenAI

client = OpenAI(
    base_url="https://toprouter.cc",
    api_key="your-api-key"
)

response = client.chat.completions.create(
    model="seedance/seedance-1-lit",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/landscape.jpg"
                    }
                },
                {
                    "type": "text",
                    "text": "让画面中的云朵缓缓移动,水面泛起涟漪"
                }
            ]
        }
    ]
)

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

模型列表查询

Python

python
from openai import OpenAI

client = OpenAI(
    base_url="https://toprouter.cc",
    api_key="your-api-key"
)

models = client.models.list()
for model in models.data:
    print(f"模型 ID: {model.id}, 提供商: {model.owned_by}")

TypeScript

typescript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://toprouter.cc',
  apiKey: 'your-api-key',
});

async function listModels() {
  const models = await client.models.list();
  for (const model of models.data) {
    console.log(`模型 ID: ${model.id}, 提供商: ${model.owned_by}`);
  }
}

listModels();

cURL

bash
curl https://toprouter.cc/models \
  -H "Authorization: Bearer your-api-key"

实用工具函数

Python — 带重试的请求封装

python
import time
from openai import OpenAI, RateLimitError, APIError

client = OpenAI(
    base_url="https://toprouter.cc",
    api_key="your-api-key"
)

def safe_chat(messages, model="anthropic/claude-4.6-sonnet", max_retries=3, **kwargs):
    """带重试和错误处理的聊天函数"""
    for attempt in range(max_retries):
        try:
            response = client.chat.completions.create(
                model=model,
                messages=messages,
                **kwargs
            )
            return response.choices[0].message.content
        except RateLimitError:
            wait = 2 ** attempt
            print(f"速率限制,{wait}s 后重试...")
            time.sleep(wait)
        except APIError as e:
            if e.status_code >= 500:
                wait = 2 ** attempt
                print(f"服务器错误,{wait}s 后重试...")
                time.sleep(wait)
            else:
                raise
    raise Exception("请求失败:达到最大重试次数")

# 使用
result = safe_chat([
    {"role": "user", "content": "Hello!"}
])
print(result)

TypeScript — 带重试的请求封装

typescript
import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'https://toprouter.cc',
  apiKey: 'your-api-key',
});

async function safeChat(
  messages: OpenAI.ChatCompletionMessageParam[],
  model = 'anthropic/claude-4.6-sonnet',
  maxRetries = 3
): Promise<string> {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    try {
      const response = await client.chat.completions.create({
        model,
        messages,
      });
      return response.choices[0].message.content ?? '';
    } catch (error: any) {
      if (error?.status === 429 || error?.status >= 500) {
        const wait = 2 ** attempt;
        console.log(`错误 ${error.status},${wait}s 后重试...`);
        await new Promise(r => setTimeout(r, wait * 1000));
        continue;
      }
      throw error;
    }
  }
  throw new Error('请求失败:达到最大重试次数');
}

// 使用
const result = await safeChat([
  { role: 'user', content: 'Hello!' },
]);
console.log(result);

💡 更多示例

以上示例覆盖了最常用的 API 功能。如需其他场景的示例,欢迎在社区中提出需求:

Unified AI API Gateway — Access 200+ models through one endpoint.