对话接口

这是生成文本响应的主要接口。传入一组对话消息,模型会返回对应的响应。

接口地址

POST https://api.routic.ai/v1/chat/completions
Content-Type: application/json
Authorization: Bearer sk-xxxxxxxx

如使用自定义部署,将域名替换为你的 Base URL。

请求参数

必填参数

参数类型说明
modelstring标准模型名或智能路由名(如 deepseek-r1auto/reasoning)。见模型目录
messagesarray对话消息列表,每条消息必须有 rolesystemuserassistant)和 content(字符串)。

可选参数

参数类型默认值范围说明
streambooleanfalse-设为 true 时以服务器发送事件流式输出。
temperaturenumber1.00–2采样温度。值越低,输出越稳定;0 最稳定,2 最随机。
max_tokensinteger模型默认-最大生成 token 数。
top_pnumber1.00–1核采样概率阈值。
frequency_penaltynumber0-2–2根据 token 在已出现文本中的频率进行惩罚。
presence_penaltynumber0-2–2根据 token 是否已出现进行惩罚。
stoparray / string / nullnull-最多 4 个停止序列,模型生成到这些序列时停止。
toolsarraynull-工具定义列表,用于函数调用。见工具调用
tool_choicestring / object"none"-控制调用哪个工具。"none" = 不调用,"auto" = 模型决定,或指定一个工具。
response_formatobject{ "type": "text" }-设为 { "type": "json_object" } 启用 JSON 输出模式。见JSON 输出
thinkingobjectnull-设为 { "type": "enabled" } 在推理模型上启用思维链模式。见思维链模式
logprobsbooleanfalse-是否返回输出 token 的对数概率。
top_logprobsintegernull0–20每个位置返回最可能 top N 个 token 的概率。
stream_optionsobjectnull-流式输出配置。仅在 stream: true 时设置。

消息格式

messages 数组中的每条消息必须包含:

字段类型必填说明
rolestringsystemuserassistant 之一。
contentstring消息的文本内容。

系统消息示例(可选,引导模型行为):

{ "role": "system", "content": "你是一个有用的编程助手。" }

用户消息示例

{ "role": "user", "content": "请解释 JWT 认证的工作原理。" }

助手消息示例(来自之前的响应):

{ "role": "assistant", "content": "JWT 认证的工作原理是..." }

响应体(非流式)

{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1713593400,
  "model": "deepseek-r1",
  "system_fingerprint": "fp_xxxxx",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "以下是详细说明...",
        "reasoning_content": "..." // 启用思维链模式时的思维链内容
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 120,
    "total_tokens": 145,
    "prompt_cache_hit_tokens": 0,
    "prompt_cache_miss_tokens": 25
  }
}

响应字段说明

字段类型说明
idstring本次响应的唯一标识符。
objectstring始终为 "chat.completion"
createdinteger响应创建时的 Unix 时间戳。
modelstring生成响应的模型名。
system_fingerprintstring代表后端配置的指纹。
choicesarray响应选项列表,通常包含一个条目。
choices[].indexinteger该选项在列表中的索引。
choices[].messageobject生成的消息,包含 rolecontent
choices[].message.reasoning_contentstring思维链内容(仅在思维链模式启用时出现)。
choices[].finish_reasonstring模型停止的原因:"stop""length""tool_calls""content_filter"
usageobjectToken 使用量统计。
usage.prompt_tokensintegerprompt 中的 token 数。
usage.completion_tokensinteger生成响应中的 token 数。
usage.total_tokensinteger总 token 数(prompt + 响应)。
usage.prompt_cache_hit_tokensinteger从缓存命中的 token 数(按较低费率计费)。
usage.prompt_cache_miss_tokensinteger未从缓存命中的 token 数(按正常费率计费)。

流式输出

stream: true 时,模型一边生成 token 一边推送事件。每个事件是一条 text/event-stream 消息:

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1713593400,"model":"deepseek-r1","choices":[{"index":0,"delta":{"role":"assistant","content":"以下是"},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1713593400,"model":"deepseek-r1","choices":[{"index":0,"delta":{"content":"详细说明"},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1713593400,"model":"deepseek-r1","choices":[{"index":0,"delta":{"content":"..."},"finish_reason":null}]}

data: [DONE]

流式增量格式

每个 chunk 包含:

字段说明
delta.role消息的 role(仅在第一个 chunk 中出现)。
delta.content增量生成的文本。拼接所有 chunk 得到完整响应。
delta.reasoning_content增量思维链内容(启用思维链模式时)。
finish_reason生成中为 null,最终 chunk 为 "stop" / "length" / "tool_calls"

流以 data: [DONE] 结束。


代码示例

cURL(基础)

curl -X POST "https://api.routic.ai/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -d '{
    "model": "deepseek-r1",
    "messages": [
      { "role": "user", "content": "请解释 REST 和 GraphQL 的区别。" }
    ],
    "temperature": 0.7,
    "max_tokens": 500
  }'

cURL(流式)

curl -X POST "https://api.routic.ai/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -d '{
    "model": "deepseek-v3",
    "messages": [
      { "role": "user", "content": "写一首关于编程的俳句。" }
    ],
    "stream": true
  }'

cURL(智能路由名)

curl -X POST "https://api.routic.ai/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -d '{
    "model": "auto/reasoning",
    "messages": [
      { "role": "user", "content": "分析这个业务需求并给出下一步建议。" }
    ]
  }'

Python(OpenAI SDK)

from openai import OpenAI

client = OpenAI(
    base_url="https://api.routic.ai/v1",
    api_key="sk-xxxxxxxx",
)

response = client.chat.completions.create(
    model="deepseek-r1",
    messages=[
        {"role": "user", "content": "请解释 REST 和 GraphQL 的区别。"}
    ],
    temperature=0.7,
    max_tokens=500,
)

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

Node.js(OpenAI SDK)

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.routic.ai/v1",
  apiKey: "sk-xxxxxxxx",
});

const response = await client.chat.completions.create({
  model: "deepseek-r1",
  messages: [{ role: "user", content: "请解释 REST 和 GraphQL 的区别。" }],
  temperature: 0.7,
  max_tokens: 500,
});

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

两种调用方式

方式一:标准模型名(推荐)

使用行业公认的模型名,精确控制调用哪个模型:

{ "model": "deepseek-r1", "messages": [...] }

方式二:智能路由名

使用 Routic 管理的路由标识符,由 Routic 自动选择该能力下最优的模型:

{ "model": "auto/reasoning", "messages": [...] }

两种方式走同一个接口。详见模型目录


从其他平台迁移

如果你已经在用 OpenAI、OpenRouter 或其他兼容网关,迁移只需 3 步:

  1. base_url 改为 Routic 接入地址。
  2. 把 API 密钥改为你的 Routic API Key。
  3. model 参数改为 Routic 支持的标准模型名。

请求结构、消息格式和响应解析都不用改。


相关文档