跳到主要内容

OpenAI 兼容接口

MoziaVerse 提供 OpenAI API 兼容接口。支持 OpenAI API 格式的客户端只需替换基础地址和 API Key,即可通过统一网关调用当前账号可用的文本与向量模型。

本文档描述平台通用协议,不绑定任何具体模型。不同模型对工具调用、结构化输出、推理、流式响应等高级能力的支持可能不同,请以控制台模型信息和实际响应为准。

接口总览

方法路径作用
GET/v1/models查询当前 API Key 可用的模型
GET/v1/models/{model}查询指定模型
POST/v1/chat/completions创建聊天补全
POST/v1/responses使用 Responses API 创建响应
POST/v1/completions传统文本补全兼容接口
POST/v1/embeddings创建文本向量

基础地址:https://mzsjai.com

所有请求都需要 API Key:

Authorization: Bearer <YOUR_API_KEY>

请只在服务端保存 API Key,不要将其写入浏览器代码、公开仓库或日志。以下示例使用环境变量:

export MOZIA_API_KEY='<YOUR_API_KEY>'
export MODEL_ID='<MODEL_ID>'

查询可用模型

不同 API Key 可能因为账号分组、权限或 Key 的模型限制而看到不同的模型列表。调用前可以查询当前 Key 实际可用的模型:

curl --fail-with-body \
'https://mzsjai.com/v1/models' \
-H "Authorization: Bearer ${MOZIA_API_KEY}"

响应采用 OpenAI 模型列表结构:

{
"object": "list",
"data": [
{
"id": "<MODEL_ID>",
"object": "model",
"created": 0,
"owned_by": "<OWNER>"
}
]
}

请求中 model 字段必须填写返回结果里的完整 id,不要使用页面展示名称或自行缩写。

Chat Completions

POST /v1/chat/completions 接收 OpenAI Chat Completions 格式的消息数组,支持非流式和流式响应。

简单调用

curl --fail-with-body \
'https://mzsjai.com/v1/chat/completions' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"${MODEL_ID}\",
\"messages\": [
{
\"role\": \"system\",
\"content\": \"You are a helpful assistant.\"
},
{
\"role\": \"user\",
\"content\": \"用三句话解释什么是向量数据库。\"
}
]
}"

常用参数

字段类型必填说明
modelstring/v1/models 返回的完整模型 ID
messagesarray对话消息,常用角色为 systemuserassistanttool
streamboolean是否使用 SSE 流式响应,默认 false
stream_options.include_usageboolean流式响应结束前是否返回用量信息
max_completion_tokensinteger最大输出 Token 数,新接入优先使用此字段
max_tokensinteger最大输出 Token 数的兼容字段
temperaturenumber采样温度
top_pnumber核采样参数
stopstring 或 array停止序列
toolsarray可供模型调用的工具定义
tool_choicestring 或 object工具选择策略
response_formatobject结构化输出格式
reasoning_effortstring推理强度;仅对支持该能力的模型生效

推荐在 temperaturetop_p 中只调整一个。模型不支持的参数可能被忽略或返回错误。

非流式响应

{
"id": "chatcmpl_...",
"object": "chat.completion",
"created": 1780000000,
"model": "<MODEL_ID>",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 60,
"total_tokens": 80
}
}

调用方应从 choices[0].message.content 读取文本,并使用 finish_reason 判断生成结束原因。Token 用量以实际响应为准,部分模型或渠道可能不会返回完整明细。

流式调用

curl --fail-with-body -N --no-buffer \
'https://mzsjai.com/v1/chat/completions' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"${MODEL_ID}\",
\"messages\": [
{
\"role\": \"user\",
\"content\": \"介绍一下杭州。\"
}
],
\"stream\": true,
\"stream_options\": {
\"include_usage\": true
}
}"

流式响应使用 Server-Sent Events。客户端应逐行处理 data: 事件,并在流结束后关闭连接。是否返回单独的用量事件取决于模型与渠道支持情况。

工具调用

curl --fail-with-body \
'https://mzsjai.com/v1/chat/completions' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"${MODEL_ID}\",
\"messages\": [
{
\"role\": \"user\",
\"content\": \"杭州现在天气怎么样?\"
}
],
\"tools\": [
{
\"type\": \"function\",
\"function\": {
\"name\": \"get_weather\",
\"description\": \"查询指定城市的天气\",
\"parameters\": {
\"type\": \"object\",
\"properties\": {
\"city\": {
\"type\": \"string\"
}
},
\"required\": [\"city\"]
}
}
}
],
\"tool_choice\": \"auto\"
}"

finish_reasontool_calls 时,调用方需要执行 message.tool_calls 中的函数,将结果作为 tool 消息加入对话,再发起下一次请求。工具不会由平台自动执行。

Responses API

POST /v1/responses 支持 OpenAI Responses API 格式。适合使用字符串或结构化输入,并支持工具调用、推理和流式输出等能力。

简单调用

curl --fail-with-body \
'https://mzsjai.com/v1/responses' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"${MODEL_ID}\",
\"instructions\": \"回答应简洁、准确。\",
\"input\": \"解释 HTTP 状态码 429 的含义。\"
}"

常用参数

字段类型必填说明
modelstring/v1/models 返回的完整模型 ID
inputstring 或 array条件必填输入文本或结构化消息
instructionsstring对本次响应的系统级指令
streamboolean是否使用流式响应
max_output_tokensinteger最大输出 Token 数
temperaturenumber采样温度
top_pnumber核采样参数
toolsarray工具定义
tool_choicestring 或 object工具选择策略
reasoningobject推理配置,仅对支持该能力的模型生效
previous_response_idstring用于关联上一轮响应
truncationstring上下文截断策略,可用值包括 autodisabled

响应正文位于 output 数组中。调用方应按 output[].typeoutput[].content[].type 解析内容,不要假设所有输出都是纯文本。

流式调用

curl --fail-with-body -N --no-buffer \
'https://mzsjai.com/v1/responses' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"${MODEL_ID}\",
\"input\": \"列出设计 REST API 时最重要的五条原则。\",
\"stream\": true
}"

Embeddings

POST /v1/embeddings 将文本转换为向量。输入可以是一段文本,也可以是文本数组。

curl --fail-with-body \
'https://mzsjai.com/v1/embeddings' \
-H "Authorization: Bearer ${MOZIA_API_KEY}" \
-H 'Content-Type: application/json' \
-d "{
\"model\": \"${MODEL_ID}\",
\"input\": [
\"第一段待向量化的文本\",
\"第二段待向量化的文本\"
],
\"encoding_format\": \"float\"
}"
字段类型必填说明
modelstring支持向量生成的完整模型 ID
inputstring 或 array待向量化的文本
encoding_formatstringfloatbase64,默认 float
dimensionsinteger输出向量维度;仅对支持该参数的模型生效

响应中的向量位于 data[].embedding,顺序与输入文本一致。

兼容客户端配置

支持自定义 OpenAI 服务地址的客户端通常只需要以下配置:

配置项
Base URLhttps://mzsjai.com/v1
API KeyMatrix API Key
Model/v1/models 返回的完整模型 ID

如果客户端要求填写不带 /v1 的服务器地址,请使用 https://mzsjai.com。是否需要包含 /v1 取决于客户端会不会自动拼接版本路径。

错误处理

错误响应采用 OpenAI 兼容结构:

{
"error": {
"message": "Error description",
"type": "invalid_request_error",
"param": null,
"code": "error_code"
}
}
状态码说明建议
400请求体或参数无效修正请求后重试
401API Key 缺失或无效检查鉴权配置
403当前 Key 无权使用该模型检查模型权限和 Key 限制
404接口或模型不存在检查路径和完整模型 ID
429余额不足、请求过多或触发限流检查余额并降低请求频率
500平台或上游处理失败保存请求 ID 后联系平台
502/503/504上游服务暂不可用或超时使用指数退避进行有限重试

不要无限重试参数错误。对 429 和临时服务错误重试时,应设置最大次数,并使用指数退避和随机抖动。