星火微调服务Web API文档文档
1. Spark API V1 协议描述
#2. 接口说明
#2.1 请求方法和URL
模型版本 | url地址 | domain |
---|---|---|
V1.5版本 | ws(s): //spark-api.xf-yun.com/v1.1/chat | general |
微调模型 | ws(s): //spark-api-n.xf-yun.com/v1.1/chat | patch |
#2.2 接口Demo
go_demo.go
java_demo.java
python3_demo.py
#2.3 接口要求
#2.4 接口权限说明
#3. 请求
#3.1 请求协议示例
{
"header": {
"app_id": "123456",
"uid": "39769795890"
"patch_id":["xxx"] //调用微调大模型时必传,否则不传
},
"parameter": {
"chat": {
"domain": "patch", //调用微调大模型时,设置为“patch”
"temperature": 0.5,
"top_k": 4,
"max_tokens": 2048,
"auditing": "default",
"chat_id":"xxx"
}
},
"payload": {
"message": {
"text": [
{
"role": "system",
"content": "你是星火认知大模型"
},
{
"role": "user",
"content": "今天的天气"
}
]
}
}
}
#3.2 请求参数
#3.2.1 平台参数
字段名 | 类型 | 是否必传 | 含义 | 备注 | 限制 |
---|---|---|---|---|---|
header.app_id | string | 是 | 应用的app_id,需要在飞云交互平台申请 | "maxLength":8 | |
header.uid | string | 否 | 每个用户的id,非必传字段,用于后续扩展 | "maxLength":32 | |
header.patch_id | array | 否 | 用户微调训练后发布的模型服务ID,非必传字段,用于后续扩展(当调用微调模型时,必传) | "maxLength":32 |
#3.2.2 服务特性参数
#3.2.2.1 对话服务参数
字段名 | 类型 | 是否必传 | 含义 | 备注 | 默认值 |
---|---|---|---|---|---|
parameter.chat | object | 是 | 用于上传对话的参数信息 | ||
parameter.chat.domain | string | 是 | 需要使用的领域 | 通用模型:general,其他领域具体值联系接口提供方。 | |
parameter.chat.temperature | float | 否 | 核采样阈值,向上调整可以增加结果的随机程度 | 取值范围 (0,1] | 0.5 |
parameter.chat.top_k | int | 否 | 从k个中随机选择一个(非等概率) | 最小值1,最大值6。 | 4 |
parameter.chat.max_tokens | int | 否 | 回答的tokens的最大长度 | 最小值是1, 最大值是4096。 | 2048 |
parameter.chat.auditing | string | 否 | 内容审核的严格程度 | strict表示严格审核策略;moderate表示中等审核策略;show表示演示场景参数;default表示默认的审核程度;(需继续下调策略需要申请) | default |
parameter.chat.chat_id | string | 否 | 用于关联会话chat | 需要保障用户下唯一 | |
parameter.chat.suppress_plugin | string | 否 | 用于关闭云端搜索 | 目前传固定值,字符串格式: {"knowledge", "medical"} |
#3.2.3 请求数据
#3.2.3.1 文本数据
字段 | 含义 | 数据类型 | 取值范围 | 默认值 | 说明 | 必填 |
---|---|---|---|---|---|---|
text | 文本数据 | json object array | 受Token限制,有效内容不能超过8192Token | 是 |
[
// 用户的提问
{"role": "user", "content": "你会做什么?"}
]
[
// 拼接对话历史信息:
{"role": "user", "content": "你好"}, // 用户第一个问题 role是user,表示是用户的提问
{"role": "assistant", "content": "你好!"}, // AI的第一个回复 role是assistant,表示是AI的回复
{"role": "user", "content": "你是谁?"}, // 用户第二个问题
{"role": "assistant", "content": "我是Spark API。"}, // AI的第二个回复
// ...... 对话历史信息
// 用户最新的提问
{"role": "user", "content": "你会做什么?"}
]
字段 | 含义 | 数据类型 | 取值范围 | 默认值 | 说明 |
---|---|---|---|---|---|
role | 角色 | string | user, assistant | user表示是用户的问题,assistant表示AI的回复 | |
content | 文本内容 | string | -- | 该角色的对话内容 |
#4. 响应
#4.1 响应协议示例
#4.1.1 结果示例
{
"header": {
"code": 0,
"message": "Success",
"sid": "cht000704fa@dx16ade44e4d87a1c802",
"status": 0
},
"payload": {
"choices": {
"status": 2,
"seq": 0,
"text": [
{
"content": "xxxxs",
"index": 0,
"role": "assistant"
}
]
},
"usage": {
"text": {
"completion_tokens": 0,
"question_tokens": 0,
"prompt_tokens": 0,
"total_tokens": 0
}
}
}
}
#4.1.2 异常结果
{
"header": {
"code": 10110, // 错误码(重要)
"message": "xxxx", // 错误描述信息(重要)
"sid": "cht00120013@dx181c8172afb0001102",
"status": 2,
}
}
#4.2 响应参数
#4.2.1 平台参数
字段名 | 类型 | 含义 | 备注 |
---|---|---|---|
header.code | int | 服务错误码 | 0表示正常,非0表示出错 |
header.sid | string | 会话的sid | |
header.status | int | 会话的状态 | 取值[0,1,2], 其中0表示第一个结果, 1表示中间结果, 2表示最后一个结果 |
header.message | string | 返回消息描述 | 错误码的描述信息 |
#4.2.2 响应数据参数
字段 | 含义 | 数据类型 | 取值范围 | 默认值 | 说明 | 必填 |
---|---|---|---|---|---|---|
status | 数据状态 | int | 0:开始, 1:开始, 2:结束 | 2表示文本响应结束 | 是 | |
seq | 数据序号 | int | 最小值:0, 最大值:9999999 | 数据序号 | 是 | |
text | 文本结果 | json object array | 是一个json 数组 | 是 |
字段 | 含义 | 数据类型 | 取值范围 | 默认值 | 说明 | 必填 |
---|---|---|---|---|---|---|
payload.usage.text | 文本数据 | json object |
字段 | 含义 | 数据类型 | 取值范围 | 默认值 | 说明 | 必填 |
---|---|---|---|---|---|---|
text | 文本数据 | json object |
#4.3 响应数据解析
#4.3.1 payload.choices.text格式解析
[
{
"content": "这是AI的回复文本",
"index": 0,
"role": "assistant"
}
]
字段 | 含义 | 数据类型 | 默认值 | 说明 |
---|---|---|---|---|
content | 回答的结果 | string | -- | -- |
index | 结果序号,在多候选中使用 | int | 0 | -- |
role | 角色 | string | assistant | assistant说明这是AI的回复 |
#4.3.2 payload.usage.text格式解析
{
"prompt_tokens": 0,
"question_tokens": 0,
"completion_tokens": 0,
"total_tokens": 0
}
字段 | 含义 | 数据类型 | 默认值 | 说明 |
---|---|---|---|---|
completion_tokens | 回答tokens大小 | int | -- | -- |
question_tokens | 问题不带历史的tokens大小 | int | -- | 单轮情况下,此数值会略小于prompt_tokens |
prompt_tokens | 问题总tokens大小 | int | -- | -- |
total_tokens | 问题和回答的tokens大小 | int | -- | -- |
#4.3.4 结果格式补充说明
#
#5. 使用方式
#5.1 连接管理
#5.1.1 建立ws连接
#5.1.2 关闭ws连接
// 用户侧关闭连接
closeInfo := websocket.FormatCloseMessage(websocket.CloseNormalClosure, "close ws conn")
_ = conn.WriteControl(websocket.CloseMessage, closeInfo, time.Now().Add(2*time.Second))
_ = conn.Close()
#5.2 内容审核说明
#6. 错误码列表
错误码 | 错误信息 |
---|---|
0 | 成功 |
10000 | 升级为ws出现错误 |
10001 | 通过ws读取用户的消息 出错 |
10002 | 通过ws向用户发送消息 出错 |
10003 | 用户的消息格式有错误 |
10004 | 用户数据的schema错误 |
10005 | 用户参数值有错误 |
10006 | 用户并发错误:当前用户已连接,同一用户不能多处同时连接。 |
10007 | 用户流量受限:服务正在处理用户当前的问题,需等待处理完成后再发送新的请求。 (必须要等大模型完全回复之后,才能发送下一个问题) |
10008 | 服务容量不足,联系服务商 |
10009 | 和引擎建立连接失败 |
10010 | 接收引擎数据的错误 |
10011 | 向引擎发送数据的错误 |
10012 | 引擎内部错误 |
10013 | 用户问题涉及敏感信息,审核不通过,拒绝处理此次请求。 |
10014 | 回复结果涉及到敏感信息,审核不通过,后续结果无法展示给用户。(建议清空当前结果,并给用户提示/警告:该答案涉 及到敏感/政治/恐怖/色情/暴力等方面,不予显示/回复) |
10015 | appid在黑名单中 |
10016 | appid授权类的错误。比如:未开通此功能,未开通对应版本,token不足,并发超过授权 等等。 (联系我们开通授权或提高限制) |
10018 | 用户在5分钟内持续发送ping消息,但并没有实际请求数据,会返回该错误码并断开ws连接。短链接使用无需关注 |
10019 | 该错误码表示返回结果疑似敏感,建议拒绝用户继续交互 |
10110 | 服务忙,请稍后再试。 |
10163 | 请求引擎的参数异常 引擎的schema 检查不通过 |
10222 | 引擎网络异常 |
10223 | LB找不到引擎节点 |
10907 | token数量超过上限。对话历史+问题的字数太多,需要精简输入。 |
11200 | 授权错误:该appId没有相关功能的授权 或者 业务量超过限制(联系我们开通授权或提高限制) |
11201 | 授权错误:日流控超限。超过当日最大访问量的限制。(联系我们提高限制) |
11202 | 授权错误:秒级流控超限。秒级并发超过授权路数限制。(联系我们提高限制) |
11203 | 授权错误:并发流控超限。并发路数超过授权路数限制。(联系我们提高限制) |
修改于 2023-12-18 07:05:16