1.接口描述
- | 描述 |
接口名称 | 对话 |
请求路径 | |
功能描述 | 针对描述会话的消息列表,模型将返回响应 |
2.请求参数
2.1请求头参数
参数 | 示例值 | 描述 |
Authorization | Bearer AppKey | 鉴权信息填入AppKey。 |
Content-Type | application/json |
|
2.2请求参数
备注:此参数为全平台模型通用,每个模型支持的参数、参数范围可能因模型不同而有所差异,详细可见模型广场内每个模型的API文档。
参数名称 | 二级参数 | 三级参数 | 四级参数 | 类型 | 必选 | 描述 |
model |
|
|
| string | 是 | 模型ID。 |
messages |
|
|
| array
| 是
| 用户当前输入的期望模型执行指令。一个列表内多个字典,支持多轮对话。 对话列表,每个列表项为一个message object,message object中包含用户role和content两部分信息: role可选值为user、assistant、system; role为system时,不校验content空值,且message中system只能位于开头,即messages[0]位置; role为user时说明是用户提问,role为assistant时说明是模型回答,而content为实际的对话内容; 单轮/多轮对话中,最后一个message中role必须为user,content为用户输入的最新问题,其余结果除system角色外都为历史信息拼接送入 messages中,assistant和user的role只能交替出现,assistant后只能跟user,user后只能跟assistant。 |
- | role |
|
| string | 否 | 对话角色,role类型枚举值:user、assistant、system。 |
- | content |
|
| string/array | 是 | 对话内容,内容目前有两种格式:string,array。 string类型:表示文本对话内容。 array类型:表示多个对话内容列表,每个列表项为一个content object,每个content object包含type、image_url、text等信息。 type可选值为text、image_url。 type为text时,取text字段作为对话内容。 type为image_url时,取image_url字段作为对话内容。 |
- | - | type |
| string | 否 | 对话内容类型,type类型枚举值: text,image_url。 |
- | - | text |
| string | 否 | 文本对话内容,type为text时传入。 |
- | - | image_url |
| object | 否 | 图片对话内容,type为image_url时传入。 |
- | - | - | url | string | 否 | 图片对话内容中的图片地址,目前可以为二进制数据的base64编码。 |
frequency_penalty |
|
|
| float | 否 | 频率惩罚。它影响模型如何根据文本中词汇token的现有频率惩罚新词汇token。值大于0,会根据新标记在文本中的现有频率来惩罚新标记,从而降低模型逐字重复同一行的可能性。 一般取值范围[-2, 2],具体取值范围、默认值需见对应模型。 |
max_tokens |
|
|
| int | 否 | 最大生成长度。控制最大生成长度,超过该值则截断。 一般取值范围(0, 2048],具体取值范围、默认值需见对应模型。 |
n |
|
|
| int | 否 | 1-n个choices。 |
presence_penalty |
|
|
| float | 否 | 存在惩罚。用户控制模型生成时整个序列中的重复度。 一般取值范围[-2.0, 2.0],具体取值范围、默认值需见对应模型。 |
response_format |
|
|
| object | 否 | 返回格式。 |
- | type |
|
| string | 否 | 返回格式枚举值:text,json_object。 |
seed |
|
|
| int | 否 | 随机种子。用于指定推理过程的随机种子,相同的seed值可以确保推理结果的可重现性,不同的seed值会提升推理结果的随机性。 一般取值范围(0, 9223372036854775807],具体取值范围、默认值需见对应模型。 |
stop |
|
|
| string/array | 否 | 生成停止标识。当模型生成结果以stop中某个元素结尾时,停止文本生成。 |
stream |
|
|
| bool | 否 | 是否以流式接口的形式返回数据。默认为False,非流式。 |
stream_options |
|
|
| object | 否 | 流式选项,stream为True有效。 |
- | include_usage |
|
| bool | 否 | 是否在返回中包含usage,stream为True有效。 取值为True时,会在流式返回的最后一个chunk里返回usage信息,并该chunk中choices列表为空。 |
temperature |
|
|
| float | 否 | 温度采样。该值越高生成文本的多样性越高,该值越低生成文本的确定性越高。 一般取值范围(0, 2),具体取值范围、默认值需见对应模型。 |
top_k |
|
|
| int | 否 | top-k 采样。取值越大,生成的随机性越高;取值越小,生成的确定性越高。 一般取值范围[1, 100],具体取值范围、默认值需见对应模型。 |
top_p |
|
|
| float | 否 | top-p 采样。该值越高生成文本的多样性越高,该值越低生成文本的确定性越高。该值为 0 时没有随机性。 一般取值范围(0, 1],具体取值范围、默认值需见对应模型 |
user |
|
|
| string | 否 | 用户唯一身份ID。 |
请求参数示例
{
"model": "1234567890", // 模型ID
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
}
3.请求返回
3.1非流式返回
3.1.1非流式正常返回
字段名称 | 二级字段 | 三级字段 | 字段类型 | 描述 |
id |
|
| string | 唯一标识符 |
choices |
|
| string | choices列表 |
- | index |
| int | choice索引 |
- | message |
| object | 模型生成的消息 |
- | - | role | string | 对话角色 |
- | - | content | string | 对话消息内容 |
- | finish_reason |
| string | 模型停止生成标记的原因。 stop: 模型生成遇到自然停止点或提供的停止序列; length: 达到请求中指定的最大标记数; content_filter:如果由于内容过滤器中的标志而省略了内容 tool_calls/function_call: 模型调用了函数。 |
created |
|
| int | Unix时间戳(以秒为单位)。 |
model |
|
| string | 调用的模型名称。 |
object |
|
| string | 返回的对象类型。非流式返回始终为:chat.completion |
usage |
|
| object | 请求使用情况的统计信息。 |
- | completion_tokens |
| int | 生成token数。 |
- | prompt_tokens |
| int | 输入token数。 |
- | total_tokens |
| int | 使用的token总数(prompt + completion)。 |
返回结果示例
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"model": "xxx-chat",
"choices": [{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "\n\nHello there, how may I assist you today?"
}
}],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}
3.1.2 非流式异常返回
非流式异常返回时:
● http code 返回非200。
● http body 中返回 error 结构,error结构中包含code、type、message、param等信息,具体可见OpenAPI接口文档中的error结构描述及错误码部分介绍。
错误结果示例
{
"error" : {
"code" : "500001",
"type" : "INVOKE_MODEL_ERROR",
"message" : "服务接口异常,请联系管理员"
}
}
3.2 流式返回
3.2.1 流式正常返回
字段名称 | 二级字段 | 三级字段 | 字段类型 | 描述 |
id |
|
| string | 唯一标识符 |
choices |
|
| string | choices列表 |
- | index |
| int | choice索引 |
- | delta |
| object | 模型生成的消息 |
- | - | role | string | 对话角色 |
- | - | content | string | 对话消息内容 |
- | finish_reason |
| string | 模型停止生成标记的原因。 stop: 模型生成遇到自然停止点或提供的停止序列; length: 达到请求中指定的最大标记数; content_filter:如果由于内容过滤器中的标志而省略了内容 tool_calls/function_call: 模型调用了函数。 |
created |
|
| int | Unix时间戳(以秒为单位)。 |
model |
|
| string | 调用的模型名称。 |
object |
|
| string | 返回的对象类型。流式返回始终为:chat.completion.chunk |
usage |
|
| object | 请求使用情况的统计信息。 仅在stream_options: {"include_usage": true}设置时显示。如果存在,则它包含一个 null 值,但最后一个块包含整个请求的token使用情况的统计信息。 |
- | completion_tokens |
| int | 生成token数。 |
- | prompt_tokens |
| int | 输入token数。 |
- | total_tokens |
| int | 使用的token总数(prompt + completion)。 |
返回结果示例
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"xxx-chat", "choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"xxx-chat", "choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
....
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"xxx-chat", "choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
stream_options.include_usage 为 True 时多返回一条包含usage流式消息。
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268199,"model":"xxx-chat", "choices":[], "usage": {"prompt_tokens": 9,"completion_tokens": 120,"total_tokens": 129}}
3.2.2 流式异常返回
流式异常分为两种:
● 如果在流式请求接收处理之前发生了异常,如鉴权、参数校验等问题,与普通的非流式一样返回http code,并带有error结构。
● 如果在流式请求已经接收,会先对外返回流式请求连接建立的信息,此时http code为200,而在后续模型流式返回过程中发生了异常,会在流失返回的chunk返回error结构,并终止当前的流式请求。
流式请求建立后的异常返回示例
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"xxx-chat", "choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
{"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"xxx-chat", "choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
....
{"error":{"code":"500001","type":"INVOKE_MODEL_ERROR","message":"服务接口异常,请联系管理员"}}
4.请求示例代码
假设慧聚平台用户组AppKey=884c8fc4054548a7b1ca1123592f5b7,模型ID=96dcaaaaaaaaaaaa5ff55ea377831a,以此为例进行说明。
4.1 curl方式请求
curl --request POST \
--url https://wishub-x1.ctyun.cn/v1/chat/completions \
--header 'Accept: */*' \
--header 'Accept-Encoding: gzip, deflate, br' \
--header 'Authorization: Bearer 884c8fc4054548a7b1ca1123592f5b7' \
--header 'Content-Type: application/json' \
--data '{
"model": "96dcaaaaaaaaaaaa5ff55ea377831a",
"messages": [
{
"role": "user",
"content": "Hello"
}
]
}'
4.2 python方式请求
import json
import requests
URL = "https://wishub-x1.ctyun.cn/v1/chat/completions"
headers = {
"Authorization": "Bearer 884c8fc4054548a7b1ca1123592f5b7",
"Content-Type": "application/json"
}
data = {
"model": "96dcaaaaaaaaaaaa5ff55ea377831a",
"messages": [
{"role": "user", "content": "Hello"}
],
"stream": True
}
try:
response = requests.post(URL, headers=headers, json=data, stream=True)
if response.status_code != 200:
print(response.json())
else:
# 流式
for line in response.iter_lines(chunk_size=8192, decode_unicode=True):
## 处理请求
# 非流式直接处理
message = response.json()["choices"][0]["message"]["content"]
except Exception as e:
print(f"Exception: {e}")
4.3 openai 客户端示例代码
import openai
from openai import OpenAI
client = OpenAI(base_url="https://wishub-x1.ctyun.cn/v1", api_key="884c8fc4054548a7b1ca1123592f5b7")
messages = [
{"role": "user", "content": "Hello"}
]
try:
stream = client.chat.completions.create(
model="96dcaaaaaaaaaaaa5ff55ea377831a",
messages=messages,
stream=True
)
# 流式
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)
except openai.APIStatusError as e:
print(f"APIStatusError: {e.status_code}, {e.message}, {e.body}")
except openai.APIError as e:
print(f"APIError: {e.body}")
except Exception as e:
print(f"Exception: {e}")