模型服务API接入接口规范
当前模型网关支持文本对话(Chat)、文本向量化(Embeddings)、文本排序(Rerank)、图像理解类型的API接入。模型API接入之前,请确保符合相对应的接口规范,其中Chat接口、Embeddings、图像理解接口需要符合OpenAI接口规范,Rerank接口需要符合AI引擎标准协议。
文本对话(Chat)API规范
接口格式
类型:POST
协议:HTTP/HTTPS
请求体参数
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
messages |
是 |
Array of ChatCompletionRequestMessage objects |
文本对话消息体类。 |
|
model |
是 |
String |
文本对话使用的模型名称。 |
|
frequency_penalty |
否 |
Number |
介于-2.0和2.0之间的数字。 正值会根据文本中新Token的现有频率对其进行惩罚,从而降低模型重复相同行的可能性。 最小值:-2 最大值:2 缺省值:0 |
|
logit_bias |
否 |
Map<String,Integer> |
该参数接受一个JSON对象,将标记映射到从-100(禁止)到100(独占选择标记)的关联偏差值。 像-1和1这样的适度值将以较小的程度改变选择标记的概率。 使用logit_bias参数时,偏差被添加到模型生成的logits之前进行抽样。 |
|
max_tokens |
否 |
Integer |
返回体允许的最大token数。 |
|
n |
否 |
Integer |
返回体中包含的choices数量,建议默认设置为1,最大限度地降低成本。 最小值:1 最大值:128 缺省值:1 |
|
presence_penalty |
否 |
Number |
介于-2.0和2.0之间的数字。 正值会根据它们是否出现在文本中来惩罚得到新的Token,从而增加模型谈论新主题的可能性。 最小值:-2 最大值:2 缺省值:0 |
|
stream |
否 |
Boolean |
布尔类型。 设为true时,返回结果为流式。 设为false时,返回结果为JSON格式结构化数据。 缺省值:false |
|
temperature |
否 |
Number |
较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定。 最小值:0 最大值:2 缺省值:1 |
|
top_p |
否 |
Number |
影响输出文本的多样性,取值越大,生成文本的多样性越强。 最小值:0.0 最大值:1.0 缺省值:1 |
|
tools |
否 |
Array of FunctionCallTool objects |
可供模型调用的工具。 |
|
tool_choice |
否 |
String |
用于控制模型是如何选择要调用的函数,仅当工具类型为function时补充。 默认为auto,且当前仅支持auto。 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
role |
是 |
String |
消息体对应的角色。 如果是系统则为system。 如果是用户则为user。 枚举值:
|
|
content |
是 |
String |
消息具体内容。 |
|
name |
否 |
String |
对话参与者的可选名称,提供给模型信息以区分相同角色的不同对话参与者。 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
type |
否 |
String |
调用工具类型,目前仅支持function。 |
|
function |
否 |
function object |
仅当工具类型为function时补充。 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
name |
否 |
String |
函数名称,只能包含a-z、A-Z、0-9、下划线和中横线。最大长度限制为64个字符。 |
|
description |
否 |
String |
用于描述函数功能。 模型会根据这段描述决定函数调用方式。 |
|
parameters |
否 |
Object |
Json Schema对象,用于定义函数所接受的参数。 |
- 非工具调用请求示例
{ "model": "my-chat-model", "messages": [ { "role": "system", "content": " You are a helpful assistant. " }, { "role": "user", "content": "你好!" } ], "max_tokens": 20, "presence_penalty": 1.2, "frequency_penalty": 1.0, "temperature": 0.5, "top_p": 0.95, "stream": false } - 工具调用请求示例
{ "model": "my-chat-model", "messages": [ { "role": "user", "content": "请帮我查询南京的天气" } ], "tools": [ { "type": "function", "function": { "name": "get_weather", "description": "获取给定地点的天气", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "地点,例如北京、上海。" } }, "required": ["location"] } } } ], "max_tokens": 200, "presence_penalty": 1.2, "frequency_penalty": 1.0, "temperature": 0.5, "top_p": 0.95, "stream": false }
响应体参数
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
id |
String |
文本对话唯一标识符。 |
|
choices |
Array of choices objects |
返回体列表。 如果'n'大于1,则结果为多个。 |
|
created |
Integer |
问答发生的时间(格式为时间戳)。 |
|
model |
String |
文本对话使用的模型名称。 |
|
object |
String |
固定值'chat.completion'。 |
|
usage |
CompletionUsage object |
文本对话用量统计。 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
index |
Integer |
返回多个choices时,每个choice对应的顺序。 |
|
message |
模型服务返回的具体消息体内容。 |
|
|
finish_reason |
String |
返回结束的原因。
枚举值:
|
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
content |
String |
返回消息体的内容,与tool_calls二选一。 |
|
role |
String |
返回消息体的角色。 枚举值:
|
|
tool_calls |
Array of ToolCall objects |
工具调用消息,与content二选一。 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
id |
String |
工具调用唯一标识符。 |
|
type |
String |
工具类型,当前仅支持function。 |
|
function |
CallFunction Object |
调用函数的详细信息。 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
completion_tokens |
Integer |
回答包含的token数。 |
|
prompt_tokens |
Integer |
提问包含的token数。 |
|
total_tokens |
Integer |
提问+回答token总数。 |
- 非流式响应示例
- 非工具调用
{ "id": "chatcmpl-xxx", "object": "chat.completion", "created": 1718772336, "model": "my-chat-model", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "你好,有什么我可以帮助你的吗?" }, "finish_reason": "stop", "logprobs": null } ], "usage": { "prompt_tokens": 5, "completion_tokens": 10, "total_tokens": 15 } } - 工具调用
{ "id": "chatcmpl-xxx", "object": "chat.completion", "created": 1718772336, "model": "my-chat-model", "choices": [ { "index": 0, "message": { "role": "assistant", "content": null, "tool_calls": [ { "id": "call_123", "type": "function", "function": { "name": "get_weather", "arguments": "{\"location\": \"南京\"}" } } ] }, "finish_reason": "tool_calls", "logprobs": null } ], "usage": { "prompt_tokens": 5, "completion_tokens": 10, "total_tokens": 15 } }
- 非工具调用
- 流式响应示例
- 非工具调用
{"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"role":"assistant","content":""},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":"你好"},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":","},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":"有"},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":"什么"},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":"我"},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":"可以"},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":"帮助"},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":"你"},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":"的"},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":"吗"},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"content":"?"},"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}]} - 工具调用
流式返回的工具调用信息必须在一条消息内,不能分拆返回。
{"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{"role":"assistant","content":null,"tool_calls":[{"id":"call_123","type":"function","function":{"name":"get_weather","arguments":"{\"location\":\"南京\"}"}}]}"logprobs":null,"finish_reason":null}]} {"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718772336,"model":"my-chat-model","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"tool_calls"}]}
- 非工具调用
文本向量化(Embeddings)API规范
接口格式
类型:POST
协议:HTTP/HTTPS
请求体参数
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
input |
是 |
Array of strings |
输入支持2种格式:
数组长度:1-2048 |
|
model |
是 |
String |
向量化模型名称。 |
请求示例:
{
"model": "my-embedding-model",
"input": "你好"
}
响应体参数
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
data |
Array of Embedding objects |
向量化结果。 |
|
model |
String |
向量化模型名称。 |
|
object |
String |
固定值‘list’。 |
|
usage |
usage object |
每次请求的用量统计。 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
index |
Integer |
向量在向量列表中的排序。 |
|
embedding |
Array of numbers |
向量数组(Float类型)。 |
|
object |
String |
固定值‘embedding’。 |
响应示例:
{
"data": [
{
"index": 0,
"embedding": [
0.02513289265334606,
-0.017512470483779907,
-0.029955564066767693,
...
],
"object": "embedding"
}
],
"usage": {
"prompt_tokens": 5,
"total_tokens": 5
},
"model": "my-embedding-model",
"object": "list"
}
文本排序(Rerank)API规范
接口格式
类型:POST
协议:HTTP/HTTPS
请求体参数
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
query |
是 |
String |
原始请求问题,基于该问题对候选文本进行排序。 |
|
top_n |
是 |
Integer |
返回排序靠前的n个结果。 |
|
docs |
是 |
Array of strings |
候选文本,文件大小限制为512M以内。 |
|
model |
是 |
String |
排序模型名称。 |
请求示例:
{
"model": "my-rerank-model",
"query": "请问AI原生应用引擎提供了什么能力?",
"docs": ["AI原生应用引擎提供了应用开发、模型网关等能力。", "AI原生应用引擎正在逐步完善、提高竞争力。"],
"top_n": 3
}
响应体参数
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
model |
String |
排序模型名称。 |
|
usage |
usage object |
每次请求的用量统计。 |
|
results |
Array of RankDocument objects |
排序结果 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
index |
Integer |
文本排序后对应的序号。 |
|
document |
Document object |
文本 |
|
relevance_score |
Number |
文本的排序分数。 |
响应示例:
{
"model": "my-rerank-model",
"usage": {
"prompt_tokens": 5,
"total_tokens": 5
},
"results": [
{
"index": 0,
"document": {"text": "AI原生应用引擎提供了应用开发、模型网关等能力。"},
"relevance_score": 0.9
},
{
"index": 1,
"document": {"text": "AI原生应用引擎正在逐步完善、提高竞争力。"},
"relevance_score": 0.5
}
]
}
图像理解API规范
接口格式
类型:POST
协议:HTTP/HTTPS
请求体参数
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
messages |
是 |
Array of ChatCompletionRequestMessage objects |
图像理解对话消息体类。 |
|
model |
是 |
String |
图像理解对话使用的模型名称。 |
|
frequency_penalty |
否 |
Number |
介于-2.0和2.0之间的数字。 正值会根据文本中新Token的现有频率对其进行惩罚,从而降低模型重复相同行的可能性。 最小值:-2 最大值:2 缺省值:0 |
|
logprobs |
否 |
boolean |
是否返回输出Token的对数概率。 |
|
top_logprobs |
否 |
Integer |
指定在每一步生成时,返回模型最大概率的候选Token个数。 取值范围:[0,5] 仅当logprobs为true时生效。 |
|
max_tokens |
否 |
Integer |
返回体允许的最大token数。 |
|
presence_penalty |
否 |
Number |
介于-2.0和2.0之间的数字。 正值会根据它们是否出现在文本中来惩罚得到新的Token,从而增加模型谈论新主题的可能性。 最小值:-2 最大值:2 缺省值:0 |
|
n |
否 |
Integer |
默认值为1。 生成响应的个数,取值范围是1-4。对于需要生成多个响应的场景(如创意写作、广告文案等),可以设置较大的n值。 |
|
stream |
否 |
Boolean |
布尔类型。 设为true时,返回结果为流式。 设为false时,返回结果为JSON格式结构化数据。 缺省值:false |
|
seed |
否 |
Integer |
设置seed参数会使文本生成过程更具有确定性,通常用于使模型每次运行的结果一致。 在每次模型调用时传入相同的seed值(由您指定),并保持其他参数不变,模型将尽可能返回相同的结果。 取值范围:0到231−1。 |
|
temperature |
否 |
Number |
较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定。 最小值:0 最大值:2 缺省值:1 |
|
top_p |
否 |
Number |
影响输出文本的多样性,取值越大,生成文本的多样性越强。 最小值:0.0 最大值:1.0 缺省值:1 |
|
参数 |
是否必选 |
参数类型 |
描述 |
|---|---|---|---|
|
role |
是 |
String |
消息体对应的角色。 如果是系统则为system。 如果是用户则为user。 枚举值:
|
|
content |
是 |
String |
消息具体内容。 |
|
name |
否 |
String |
对话参与者的可选名称,提供给模型信息以区分相同角色的不同对话参与者。 |
请求示例:
{
"model": "model-img2text",
"messages": [
{
"role": "system",
"content": " You are a helpful assistant. "
},
{
"role": "user",
"content": [ { "type": "text", "text": "图里面有什么" }, { "type": "image_url", "image_url": { "url": "一个图片链接" } } ],
}
],
"max_tokens": 20,
"presence_penalty": 1.2,
"frequency_penalty": 1.0,
"temperature": 0.5,
"top_p": 0.95,
"stream": false
}
响应体参数
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
id |
String |
图像理解文本对话唯一标识符。 |
|
choices |
Array of 表23 ChatNonStreamingChoice objects |
返回体列表。 如果'n'大于1,则结果为多个。 |
|
created |
long |
问答发生的时间(格式为时间戳)。 |
|
model |
String |
图像理解文本对话使用的模型名称。 |
|
object |
String |
固定值'chat.completion'。 |
|
usage |
CompletionUsage object |
图像理解文本对话用量统计。 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
index |
Integer |
返回多个choices时,每个choice对应的顺序。 |
|
message |
表24 ChatMessageResponse object |
模型服务返回的具体消息体内容。 |
|
finish_reason |
String |
返回结束的原因。
枚举值:
|
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
content |
String |
返回消息体的内容,与tool_calls二选一。 |
|
role |
String |
返回消息体的角色。 枚举值:assistant |
|
tool_calls |
Array of ToolCall objects |
工具调用消息,与content二选一。 |
|
audio |
ChatMessageAudio |
聊天信息中的音频部分。 |
|
reasoningContent |
String |
用于展示模型的推理过程,帮助用户理解模型的决策依据。 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
id |
String |
工具调用唯一标识符。 |
|
type |
String |
工具类型,当前仅支持function。 |
|
function |
CallFunction Object |
调用函数的详细信息。 |
|
参数 |
参数类型 |
描述 |
|---|---|---|
|
completion_tokens |
Integer |
回答包含的token数。 |
|
prompt_tokens |
Integer |
提问包含的token数。 |
|
total_tokens |
Integer |
提问+回答token总数。 |
响应示例
{
"choices": [
{
"delta": {
"role": "assistant",
"content": "图像整体呈现出简洁、抽象的风格,主要内容是一个灰色的圆形头像轮廓。"
},
"finish_reason": "stop",
"index": 0
}
],
"created": 1753965925754,
"id": "model-img2text",
"object": "chat.completions",
"usage": {
"prompt_tokens": 142,
"completion_tokens": 118,
"total_tokens": 260
},
"request_id": "xxx"
}