对话补全
对话补全接口为 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 对话补全参数。 最常用的字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型标识,例如 gpt-4.1。 |
messages | array | 是 | 对话消息列表,每条含 role 与 content。 |
stream | boolean | 否 | 以 SSE 流式返回响应,默认 false。 |
temperature | number | 否 | 采样温度。 |
max_tokens | integer | 否 | 生成的最大 token 数。 |
SmartAPI 仅校验 model 字段,其余参数均原样转发给模型服务。
思考 / 推理#
是否开启「思考 / 推理」由你的请求参数决定。
支持思考的模型在模型页面带有 thinking 标签;未传以下参数时默认不开启思考。
| 字段 | 类型 | 说明 |
|---|---|---|
reasoning_effort | string | 推理强度:none / minimal / low / medium / high / xhigh。none 表示关闭,其余表示开启。 |
thinking | object | 扩展思考配置(对齐 Anthropic / Bedrock Claude)。与 reasoning_effort 同时存在时,以 thinking.type 为准。 |
thinking 对象字段:
| 字段 | 类型 | 说明 |
|---|---|---|
type | string | enabled 开启 / disabled 关闭。 |
budget_tokens | number | 思考 token 预算;需保证 max_tokens > budget_tokens。 |
display | string | 如 omitted,按上游是否支持透传。 |
{
"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_tokens、completion_tokens 和 total_tokens。
当模型服务支持提示缓存时,usage 还可能包含
prompt_tokens_details.cached_tokens。token 用量决定计费。