Skip to content

第一次调用

本页给出流式输出多模态工具调用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)

下一步