星辰MaaS产品文档
平台介绍
星辰MaaS平台介绍
API文档
认知大模型
Spark X1 Http调用文档
Spark http调用文档
Spark4.0 Ultra
Spark Max
Spark Pro
Spark Pro-128k
Spark Lite
翻译大模型
人格大模型
代码大模型
医疗大模型
办公大模型
汽车大模型
数字员工大模型
虚拟人大模型
工业大模型
科技文献大模型
口语通用大模型
internlm2_7b_chat
llama2_7b
Chinese-Aplaca-2-7B
codellama_7b_instruction
internlm_7b
Chinese-Alpaca-2-13b-16k
llama-3-chinese-8b-instruct
Chinese-Alpaca-7B
baichuan_7b
spark 13b
spark 2.6b
llama3_8b_instruct
llama2_7b_chat_hf
llama2_13b
falcon_7b_instruct
phi_3_mini_4k_instruct
starcoder2-3b
c4ai_command_r_v01
qwen_v2_0.5b_chat
qwen_v2_1.5b_chat
qwen_v2_72b_chat
gemma2_9b_it
qwen_v2.5_7b_chat
Spark Character
语音大模型
中文识别大模型
多语种识别大模型
超拟人语音合成
多模态
图片生成
图像理解
Stable Diffusion-XL
Visual Transformer
通用OCR大模型
Stable-Diffusion-3-medium-diffusers
SDK文档
星火认知大模型
Windows SDK集成文档
Android SDK集成文档
Linux SDK集成文档
iOS SDK集成文档
识别大模型
Android SDK集成文档
Linux SDK集成文档
超拟人语音合成
Android SDK集成文档
Linux SDK集成文档
iOS SDK集成文档
图片生成
Android SDK集成文档
Linux SDK集成文档
Windows SDK集成文档
iOS SDK集成文档
图像理解
Android SDK集成文档
Linux SDK集成文档
用户指南
申请APPID指引
工单授权指引
鉴权说明
OpenAILike鉴权方式使用说明
WebSocket鉴权使用说明
http鉴权使用说明
大模型精调平台
产品使用说明
数据集格式说明
Web API文档
精调服务_WebSocket协议
精调服务_HTTP协议
图像理解_WebSocket协议
stable_diffusion图片生成
图片分类
bert协议服务
批处理API文档
Prompt工程指南
本文档使用 MrDoc 发布
-
+
首页
精调服务_WebSocket协议
# 精调服务_WebSocket协议 本文档旨在帮助开发者快速对接大模型 Web API 服务,详细描述接口调用方法、请求/响应参数、鉴权方式、WebSocket 连接管理及错误码信息。 ## 1. 接口概述 ### 1.1 请求地址 传输协议:支持 ws/wss,为确保数据安全,建议使用 wss 默认请求地址如下: ``` wss://maas-api.cn-huabei-1.xf-yun.com/v1.1/chat ``` **说明**:部分模型因部署配置不同,其请求地址可能略有差异,具体可参考**服务管控**>**模型服务列表**右侧调用信息 ### 1.2 接口要求 接口类型:流式 WebSocket 接口 接口对接:需要按照文档标准的方法进行对接,服务仅支持文档明确描述的功能,未提及的功能可能导致兼容性问题 ### 1.3 鉴权方式 鉴权机制:使用签名机制进行鉴权,签名详情参考[通用URL鉴权文档](https://docs.iflyaicloud.com/doc/285/) ### 1.4 请求demo 在使用demo之前,请修改代码中的app_id、key、secret (用于签名鉴权)以及patch_id(调用微调大模型时必传) [demo python语言](https://xfyun-doc.xfyun.cn/lc-sp-Python_demo-1704954863692.zip) [demo java语言](https://xfyun-doc.xfyun.cn/lc-sp-Java_demo-1704954843934.zip) ## 2. 接口请求 ### 2.1 请求示例 以下示例展示了一个完整的请求结构: ```json { "header": { "app_id": "123456", "uid": "39769795890", "patch_id":["xxx"] // 调用微调大模型时必传,否则不传。对应为模型服务卡片上的resourceId }, "parameter": { "chat": { "domain": "patch", // 调用微调大模型时,对应为模型服务卡片上的serviceid "temperature": 0.5, "top_k": 4, "max_tokens": 2048, "auditing": "default", "chat_id":"xxx" } }, "payload": { "message": { "text": [ { "role": "system", "content": "你是星火认知大模型" }, { "role": "user", "content": "今天的天气" } ] } } } ``` ### 2.2 请求参数 接口请求字段由三个部分组成:header,parameter, payload。 字段解释如下: #### 2.2.1 **Header**参数(平台参数) | 字段 | 类型 | 是否必传 | 含义 | 限制 | 备注 | | -------- | ------ | -------- | -------------------------------------------------- | ------------ | ---- | | app_id | string | 是 | 应用的app_id,需要在平台申请 | maxLength:8 | | | uid | string | 否 | 每个用户的id,非必传字段,用于后续扩展 | maxLength:32 | | | patch_id | array | 否 | 调用用户微调大模型时必传,对应resourceid,否则不传 | maxLength:32 | | #### 2.2.2 **Parameter**参数(服务特性参数) ##### 2.2.2.1 对话服务参数(**parameter.chat**) | 字段 | 类型 | 是否必传 | 含义 | 限制 | 备注 | | -------------- | ------- | -------- | ------------------------------------------------------------ | --------------------------------- | ------------------------------------------------------------ | | domain | string | 是 | 取值为用户服务的modelId | | modelId可从星辰网页获取 | | temperature | float | 否 | 核采样阈值 | 取值:[0,1];默认值:0.5 | 用于决定结果随机性,取值越高随机性越强即相同的问题得到的不同答案的可能性越高 | | top_k | int | 否 | 从k个候选中随机选择一个(非等概率) | 取值:[1, 6];默认值:4 | 无 | | max_tokens | int | 否 | 回答的tokens的最大长度 | 取值:[1,8192];默认值:2048 | 无 | | chat_id | string | 否 | 用于关联用户会话 | | 需保障用户下的唯一性 | | search_disable | boolean | 否 | 关闭联网检索功能 | 取值:[true,false];默认值:true | **该参数仅DeepSeek-R1和DeepSeek-V3支持** ,输出内容是否结合联网检索结果会根据输入文本自动判断 | | show_ref_label | boolean | 否 | 展示检索信源信息 | 取值:[true,false];默认值:false | **该参数仅DeepSeek-R1和DeepSeek-V3支持**。开启联网检索功能后当该参数设置为true,且触发了联网检索功能,会先返回检索信源列表,然后再返回大模型回复结果,否则仅返回大模型回复结果 | | enable_thinking | boolean | 否 | 是否切换思考模式 | 取值:[true,false];默认值:true | **该参数仅Qwen3系列模型支持**。支持在单一模型内无缝切换思考模式(用于复杂的逻辑推理、数学和编程)和非思考模式(用于高效、通用的对话) | #### 2.2.3 **payload**参数(请求数据) **payload.message** 中的 **text** 字段为文本数据,类型为 JSON 数组,示例如下: | 字段 | 类型 | 是否必传 | 含义 | 限制 | 备注 | | ---- | ----------------- | -------- | -------- | -------------------------------------- | ---- | | text | json object array | 是 | 文本数据 | 受Token限制,有效内容不能超过8192Token | | **单轮交互**: 仅传递一条用户消息: ```json [ {"role": "user", "content": "你会做什么?"} ] ``` **多轮交互**: 按 `user -> assistant -> user -> assistant` 顺序传递历史记录,最后一条为当前问题: ```json [ {"role": "user", "content": "你好"}, {"role": "assistant", "content": "你好!"}, {"role": "user", "content": "你是谁?"}, {"role": "assistant", "content": "我是 Spark API。"}, {"role": "user", "content": "你会做什么?"} ] ``` **字段说明:** | 字段 | 类型 | 是否必传 | 含义 | 限制 | 备注 | | ------- | ------ | -------- | -------- | ------------------------------- | ------------------------------------------------------------ | | role | string | 是 | 角色 | 取值范围:system,user,assistant | **通过system设置对话背景信息,user表示用户的问题,assistant表示AI的回复** | | content | string | 是 | 文本内容 | 无 | 该角色的对话内容 | ## 3. 接口响应 ### 3.1 响应示例 #### 3.1.1 成功响应示例 **在不返回检索信源的情况下,大模型流式返回结构如下:** ```json { "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 } } } } ``` > 注意: WebSocket模式中,接口为流式返回,此示例为最后一次返回结果,开发者需要将接口多次返回的结果进行拼接展示。 **在返回检索信源的情况下,在大模型返回结果之前会先返回检索信源,结构如下:** ~~~json { "header": { "code": 0, "message": "Success", "sid": "cht000b79a4@dx190da456b5db80a560", "status": 1 }, "payload": { "plugins": { "text": [ { "name": "ifly_search", "content": "[{\"index\":1,\"url\":\"https://baike.baidu.com/item/%E6%9B%B9%E6%93%8D/6772\",\"title\":\"曹操(中国东汉末年权臣,曹魏政权的奠基者)_百度百科\"},{\"index\":2,\"url\":\"https://zhidao.baidu.com/question/437349472.html\",\"title\":\"曹操是哪一年出生的? - 百度知道\"},{\"index\":3,\"url\":\"http://www.lidaishi.com/default.aspx?did=130019\",\"title\":\"曹操的一生事迹简介-历代史历史网\"},{\"index\":4,\"url\":\"https://zhidao.baidu.com/question/374585705.html\",\"title\":\"曹操生于哪一年? - 百度知道\"},{\"index\":5,\"url\":\"https://baike.baidu.hk/item/%E6%9B%B9%E6%93%8D/6772\",\"title\":\"曹操(中國東漢末年權臣,曹魏政權的奠基者)_百度百科\"}]", "content_type": "text", "content_meta": null, "role": "tool", "status": "finished", "invoked": { "namespace": "ifly_search", "plugin_id": "ifly_search", "plugin_ver": "", "status_code": 200, "status_msg": "Success", "type": "local" } } ] } } } ~~~ #### 3.1.2 异常结果示例 ```json { "header": { "code": 10110, // 错误码(重要) "message": "xxxx", // 错误描述信息(重要) "sid": "cht00120013@dx181c8172afb0001102", "status": 2 } } ``` ### 3.2 响应参数说明 #### 3.2.1 **header**参数 | 字段 | 类型 | 含义 | 备注 | | ------- | ------ | ------------ | ------------------------------------------------------------ | | code | int | 服务错误码 | 0表示正常,非0表示出错 | | sid | string | 会话的sid | | | status | int | 会话的状态 | 取值[0,1,2],**其中0表示第一个结果, 1表示中间结果, 2表示最后一个结果** | | message | string | 返回消息描述 | 错误码的描述信息 | #### 3.2.2 响应数据参数 **文本响应**(字段choices,默认返回): | 字段 | 类型 | 是否必传 | 含义 | 取值范围 | 默认值 | 说明 | | ------ | ----------------- | -------- | -------- | ----------------------- | ------ | ----------------- | | status | int | 是 | 数据状态 | 0:开始,1:进行中,2:结束 | | 2表示文本响应结束 | | seq | int | 是 | 数据序号 | 最小值:0,最大值:9999999 | | 数据序号 | | text | json object array | 是 | 文本结果 | | | 是一个JSON数组 | **token消耗信息**(字段 usage,仅在最终响应时返回): | 字段 | 类型 | 是否必传 | 含义 | 取值范围 | 默认值 | 说明 | | ---------- | ----------- | -------- | -------- | -------- | ------ | ---- | | usage.text | json object | 是 | 文本数据 | | | | ### 3.3 响应数据解析 #### 3.3.1 payload.choices.text格式解析 ```json [ { "content": "这是AI的回复文本", "index": 0, "role": "assistant" } ] ``` | 字段 | 类型 | 是否必传 | 含义 | 取值范围 | 默认值 | 说明 | | ----------------- | ------ | -------- | ---------------------------------------------------- | --------- | --------- | ---------------- | | content | string | 是 | 回答的结果 | | | | | reasoning_content | string | 是 | 模型生成的思考文本内容(支持深度思考的模型才有此字段) | | | | | index | int | 是 | 结果序号 | | 0 | 在多候选中使用 | | role | string | 是 | 角色 | assistant | assistant | 说明这是AI的回复 | #### 3.3.2 payload.usage.text格式解析 示例: ```json { "prompt_tokens": 0, "question_tokens": 0, "completion_tokens": 0, "total_tokens": 0 } ``` | 字段 | 类型 | 是否必传 | 含义 | 说明 | | ----------------- | ---- | -------- | ------------------------ | --------------------------------------- | | completion_tokens | int | 是 | 回答tokens大小 | | | question_tokens | int | 是 | 问题不带历史的tokens大小 | 单轮情况下,此数值会略小于prompt_tokens | | prompt_tokens | int | 是 | 问题总tokens大小 | | | total_tokens | int | 是 | 问题和回答的tokens大小 | | #### 3.3.3 结果格式补充说明 模型返回的结果除了普通文本之外,可能还包含以下标记语言,建议集成方做好适配: - markdown(表格、列表等) - latex(数学公式) ## 4. 连接管理 ### 4.1 建立连接 此协议对应的接口为长连接接口,连接建立之后可以进行长时间的交互,**用户交互完成之后应该主动关闭连接**。 建立连接需要满足以下条件: - 必须符合 websocket 协议规范(rfc6455) - 若在 60 秒内无数据交互,服务端将主动断开连接,请确保在交互结束后主动关闭连接 ### 4.2 关闭连接 正常交互结束后,客户端可以通过websocket协议发送Close类型消息关闭连接。 **建议用户在使用完毕之后,主动关闭websocket连接,不要故意长时间的占用ws连接资源!** 参考GoLand代码如下: ```go // 用户侧关闭连接 closeInfo := websocket.FormatCloseMessage(websocket.CloseNormalClosure, "close ws conn") _ = conn.WriteControl(websocket.CloseMessage, closeInfo, time.Now().Add(2*time.Second)) _ = conn.Close() ``` **提示**:除正常交互外,以下情况也会导致连接断开: - 客户端连续 60 秒未发送数据; - 服务升级、熔断等特殊情况下,API 可能主动断开连接,需要业务集成时,请确保做好异常处理。 ## 5. 错误码说明 ### 5.1 错误码列表 | 错误码 | 错误信息 | | ------ | ------------------------------------------------------------ | | 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 | 授权错误:并发流控超限。并发路数超过授权路数限制。(联系我们提高限制) | ### 5.2 内容审核说明 当返回10013或者10014错误码时,代码内容审核判断当前问题或回复的信息涉及敏感信息。返回错误的同时,在header.message字段中会携带当前的敏感提示语。 - 10013 表示用户的问题涉及敏感信息,服务侧拒绝处理此次请求。 - 10014 表示回复结果中涉及敏感信息,后续结果不可以展示给用户。 - 10019 表示当前的回复疑似敏感,结果文本可以给用户展示。服务会在返回**全部结果**后再返回该错误码,如果继续提问可能会导致被审核拦截。建议在收到该错误码后提示用户涉及敏感信息,并禁掉对话框,禁止用户继续提问。 如果需要调整内容审核的严格程度、敏感词等信息,请联系我们技术支持。
admin
2025年5月6日 16:47
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码