第一次调用
本页给出流式输出、多模态、工具调用、Claude / Gemini 原生格式的最小可运行示例。
准备
bash
export PRIMEROUTER_KEY="sk-你的key"
export PRIMEROUTER_BASE="https://primerouter.ai/v1"流式输出(SSE)
bash
curl "$PRIMEROUTER_BASE/chat/completions" \
-H "Authorization: Bearer $PRIMEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-chat",
"stream": true,
"messages": [{"role": "user", "content": "写一首五言绝句"}]
}'每个 chunk 形如:
data: {"id":"...","choices":[{"delta":{"content":"床"},"index":0}]}
data: {"id":"...","choices":[{"delta":{"content":"前"},"index":0}]}
...
data: [DONE]stream_options.include_usage = true 可以让最后一个 chunk 带 usage 字段。
多模态(图片)
bash
curl "$PRIMEROUTER_BASE/chat/completions" \
-H "Authorization: Bearer $PRIMEROUTER_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-max",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "图里是什么?"},
{"type": "image_url", "image_url": {"url": "https://example.com/cat.jpg"}}
]
}]
}'也支持 base64:"url": "data:image/png;base64,..."。
工具调用(Function Calling)
json
{
"model": "glm-4-plus",
"messages": [{"role": "user", "content": "今天上海天气"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询某个城市天气",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}]
}模型会返回 tool_calls,照标准 OpenAI 流程处理。
原生 Claude 格式
走 /v1/messages 端点:
bash
curl "$PRIMEROUTER_BASE/messages" \
-H "x-api-key: $PRIMEROUTER_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "glm-4-plus",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'Claude 官方 SDK 直接把 base_url 改成 https://primerouter.ai 即可。
Python(OpenAI SDK)
python
from openai import OpenAI
client = OpenAI(
api_key="sk-你的key",
base_url="https://primerouter.ai/v1",
)
resp = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
print(resp.usage)TypeScript(OpenAI SDK)
ts
import OpenAI from 'openai'
const client = new OpenAI({
apiKey: process.env.PRIMEROUTER_KEY,
baseURL: 'https://primerouter.ai/v1',
})
const resp = await client.chat.completions.create({
model: 'deepseek-chat',
messages: [{ role: 'user', content: 'Hello' }],
})
console.log(resp.choices[0].message.content)