对话补全

对话补全接口为 OpenAI 兼容。可用于 OpenAI 模型及目录中任意 OpenAI 协议模型。

POST https://api.smartapi.cc/api/openapi/v1/chat/completions

鉴权#

Authorization: Bearer sk-your-key-here
Content-Type: application/json

请求体#

SmartAPI 会将请求体代理给模型服务,因此支持所有标准的 OpenAI 对话补全参数。 最常用的字段:

字段类型必填说明
modelstring模型标识,例如 gpt-4.1
messagesarray对话消息列表,每条含 rolecontent
streamboolean以 SSE 流式返回响应,默认 false
temperaturenumber采样温度。
max_tokensinteger生成的最大 token 数。

SmartAPI 仅校验 model 字段,其余参数均原样转发给模型服务。

思考 / 推理#

是否开启「思考 / 推理」由你的请求参数决定。 支持思考的模型在模型页面带有 thinking 标签;未传以下参数时默认不开启思考。

字段类型说明
reasoning_effortstring推理强度:none / minimal / low / medium / high / xhighnone 表示关闭,其余表示开启。
thinkingobject扩展思考配置(对齐 Anthropic / Bedrock Claude)。与 reasoning_effort 同时存在时,以 thinking.type 为准。

thinking 对象字段:

字段类型说明
typestringenabled 开启 / disabled 关闭。
budget_tokensnumber思考 token 预算;需保证 max_tokens > budget_tokens
displaystringomitted,按上游是否支持透传。
{
  "model": "gpt-5.5",
  "messages": [{ "role": "user", "content": "你好" }],
  "reasoning_effort": "medium"
}

基础示例#

curl https://api.smartapi.cc/api/openapi/v1/chat/completions \
  -H "Authorization: Bearer $SMARTAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4.1",
    "messages": [
      { "role": "system", "content": "You are a helpful assistant." },
      { "role": "user", "content": "What is SmartAPI?" }
    ]
  }'

响应#

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1730000000,
  "model": "gpt-4.1",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "SmartAPI is..." },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 24,
    "completion_tokens": 88,
    "total_tokens": 112
  }
}

流式响应#

stream 设为 true,即可通过 text/event-stream 服务端事件增量接收响应。 SmartAPI 会自动在最后一个数据块中请求用量信息。

from openai import OpenAI
 
client = OpenAI(
    api_key="sk-your-key-here",
    base_url="https://api.smartapi.cc/api/openapi/v1",
)
 
stream = client.chat.completions.create(
    model="gpt-4.1",
    messages=[{"role": "user", "content": "Write a haiku about APIs."}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="")

每个 SSE 数据块形如:

data: {"id":"chatcmpl-...","choices":[{"delta":{"content":"Hello"}}]}

data: [DONE]

流以一行 data: [DONE] 结束。

用量与计费#

usage 对象返回 prompt_tokenscompletion_tokenstotal_tokens。 当模型服务支持提示缓存时,usage 还可能包含 prompt_tokens_details.cached_tokens。token 用量决定计费