代码示例
本页面提供 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 功能。如需其他场景的示例,欢迎在社区中提出需求:
- Telegram:t.me/+usySmwAIO-I3YjBl
- Discord:discord.gg/URHXXkVJ6y
