文档中心>大模型知识引擎>应用接口文档>对话端接口文档(HTTP SSE)

对话端接口文档(HTTP SSE)

最近更新时间:2024-09-18 18:28:21

我的收藏
HTTP SSE 是单向通道,客户端发起 HTTP 请求之后,服务端持续推送流式数据到客户端,此时不支持双向交互。

1. HTTP SSE 接口请求

请求地址:https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse
请求方式:POST
注意:
触发对话接口前,需要有已发布的应用。

1.1 参数说明

请放到 HTTP Body 中, 以 JSON 的形式发送,具体如下:
名称
类型
是否必填
说明
request_id
string(255)
请求 ID,用于标识一个请求(作消息串联,建议每个请求使用不同的 request_id)
content
string(6000)
消息内容,如果发送图片,在此传递 markdown 格式的图片链接,例如![](图片连接),其中图片链接需要可公有读。
file_infos
Object 数组
文件信息,如果填写该字段,content 字段可以为空。可参考实时文档解析
session_id
string(64)
会话 ID,用于标识一个会话(外部系统提供,建议不同的用户端会话传入不同的 session_id,否则同一个应用下的不同用户的消息记录会串掉)
参数长度:2-64个字符
校验规则: ^[a-zA-Z0-9_-]{2,64}$ ,一般可以用 uuid 来生成该值
uuid 示例:1b9c0b03-dc83-47ac-8394-b366e3ea67ef
bot_app_key
string
应用密钥(可参考 1.2 如何获取 AppKey 章节)
visitor_biz_id
string(64)
访客 ID(外部输入,建议唯一,标识当前接入会话的用户)
visitor_labels
Object 数组
知识标签(用于知识库中知识的检索过滤);知识标签结构为:
{"name": "subject", "values": ["语文", "数学"]}
知识标签里面定义了相关的属性,属性标识,标签。



文档适用范围选择了“语文”,“数学”标签。



注意:
visitor_labels 中的 name 字段对应上图中的属性标识。
streaming_throttle
int32
流式回复频率控制:控制应用回包频率。该值表示应用每积攒多少字符向调用方回包一次,值越小回包越频繁(体验上越流畅,但流量开销也越大)。当不传值或者为 0 时以系统配置为准。
注意:
该设置项也不会加快大模型输出的时间,只是改变了向调用方回包的频率。因此如果设置很大,则会出现很长时间没有回包的现象。

custom_variables
map[string]string
自定义参数的值。可以配置多个 key: value 对,key 为自定义参数的参数名称,value 为对应的自定义参数的运行时的值。
system_role
string(2000)
角色指令(提示词), 为空时使用应用配置默认设定,填写时取当前值。
visitor_labels 知识标签列表的数据结构:
名称
类型
说明
name
string
知识标签名
values
string 数组
知识标签值
file_infos 文件信息的数据结构:
名称
类型
是否必填
说明
file_name
string
文件名称
file_size
string
实时文档解析接口返回的文件大小
file_url
string
实时文档解析接口返回的文件 URL
file_type
string
文件类型
doc_id
string
实时文档解析接口返回的 doc_id

1.2 如何获取 AppKey

应用管理界面,找到您处于运行中的应用(需要先发布),单击调用,会弹出“调用信息”窗口。



调用信息窗口可以看到 AppKey,单击复制即可。




1.3 curl 调用示例

curl -XPOST -vvv --no-buffer --location 'https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse' \\
--header 'Content-Type: application/json' \\
--data '{
"content": "消息内容",
"bot_app_key": "<your appkey>",
"visitor_biz_id": "<your visitor id>",
"session_id": "<your session_id>",
"visitor_labels": []
}'

1.4 postman 调用示例





2. HTTP SSE 接口返回

2.1 回复事件

事件名:reply
事件方向:后端 > 前端
注意:
如果收到的消息中 is_evil == true 表示该消息命中敏感信息,发送失败。
因并发超限导致排队超时,会下发 "超出并发数限制" 错误。
数据结构:
名称
类型
说明
request_id
string(255)
请求 ID,用于标识一个请求(作消息串联,建议每个请求使用不同的 request_id)
content
string
消息内容
file_infos
Object 数组
文件信息
record_id
string(64)
消息唯一 ID
related_record_id
string(64)
关联的消息唯一 ID
session_id
string(64)
会话 ID,用于标识一个会话(外部系统提供,建议不同的用户端会话传入不同的 session_id,否则同一个应用下的不同用户的消息记录会串掉)
is_from_self
bool
消息是否由自己发出
(如果是自己发出,显示在聊天框右侧,否则在左侧)
can_rating
bool
该消息记录是否能评价
timestamp
int64
消息时间戳(秒级)
is_final
bool
消息是否已输出完
(流式模式下,消息会多次返回,每次返回均覆盖之前的答案)
(当 is_final == true 时,停止生成按钮隐藏,并且显示点赞点踩按钮)
is_evil
bool
是否被敏感词打击
is_llm_generated
bool
是否为模型生成内容
reply_method
uint8
回复方式:
1: 大模型回复 2: 未知问题回复 3: 拒答问题回复 4: 敏感回复 5: 已采纳问答对优先回复 6: 欢迎语回复
7: 并发数超限回复 8: 全局干预知识 9: 任务流回复 10: 任务流答案
11: 搜索引擎回复 12: 知识润色后回复 13: 图片理解回复 14: 实时文档回复
knowledge
Object 数组
命中的知识
option_cards
string 数组
选项卡,任务流程专有
custom_params
string 数组
用户自定义业务参数,用于透传问答中业务参数
task_flow
Object
任务流程调试信息
knowledge 命中的知识的数据结构:
名称
类型
说明
id
string
命中的知识 ID
type
uint32
命中的知识类型: 1: 问答 2: 文档片段
task_flow 任务流调试信息的数据结构:
名称
类型
说明
task_flow_name
string
任务流程名称
task_flow_id
string
任务流程 ID
query_rewrite
string
问题改写结果
hit_intent
string
命中的意图
slot_info
map[string]Object
运行时收集的槽位信息
api_response
map[string]Object
API 节点的返回信息
type
int
任务流程回复类型
0:任务流程回复
1:任务流程静默回复
2:任务流程拉回话术
3:任务流程自定义回复

2.2 token 统计事件

事件名:token_stat
事件方向:后端 > 前端
数据结构:
名称
类型
说明
session_id
string(64)
会话 id
request_id
string(255)
对应发送事件对应的请求 id
record_id
string(64)
对应发送事件对应的消息记录 id
status_summary
string
本轮对话状态, 处理中: processing, 成功: success, 失败: failed
status_summary_title
string
本轮对话状态描述
elapsed
int
本轮调用耗时, 单位 ms
token_count
int
本轮请求消耗 token 数(当包含多个过程时, 计算将汇总)
procedures
Object 数组
调用过程列表
procedures 调用过程列表的数据结构:
名称
类型
说明
name
string
英文名, 与下面的 title 字段一一对应. knowledge, task_flow, search_engine, image, large_language_model, pot_math, file
title
string
调用过程描述, 对应 name 字段, 各中文含义如下: 调用知识库, 调用任务流程, 调用搜索引擎, 调用图片理解, 大模型回复, 调用计算器, 阅读文件
status
string
调用过程状态, 处理中: processing, 成功: success, 失败: failed
input_count
int
当次过程输入消耗 token 数
output_count
int
当次过程输出消耗 token 数
count
int
当次过程消耗总 token 数:输入 + 输出
示例:
[
"token_stat",
{
"type": "token_stat",
"payload": {
"elapsed": 1616,
"order_count": 50000000,
"procedures": [
{
"count": 323,
"input_count": 308,
"name": "knowledge",
"output_count": 15,
"status": "success",
"title": "调用知识库"
}
],
"record_id": "Hpe_20240625_185659_215_EsH2uf8L",
"request_id": "8PUcDU6xyQ-301747294000",
"session_id": "2d071ef7-ef76-44df-84a4-9210672ed700c8",
"status_summary": "success",
"status_summary_title": "调用知识库",
"token_count": 323,
"used_count": 553
},
"message_id": "89d91395-06bc-4f2e-b240-06f7b4498b0c6e"
}
]

2.3 参考来源事件

事件名:reference
事件方向:后端 > 前端
数据结构:
名称
类型
说明
record_id
string(64)
消息唯一 ID
references
Object 数组
参考来源
references 参考来源的数据结构:
名称
类型
说明
id
uint64
参考来源 ID, 可调用 获取来源详情列表 接口查看参考来源详情
说明:
该 id 字段对应 DescribeRefer 中的 ReferBizIds 字段
type
uint32
参考来源类型 1: 问答 2: 文档片段
url
string
参考来源链接(仅参考来源类型为文档片段时使用)
name
string
参考来源名称
doc_id
uint64
参考来源文档 ID
doc_biz_id
uint64
参考来源文档业务 ID, 可调用 文档详情 接口查看对应文档的基础信息
doc_name
string
参考来源文档名称
qa_biz_id
string
参考来源问答业务 ID

2.4 错误事件

事件名:error
事件方向:后端 > 前端
数据结构:
名称
类型
说明
request_id
string(255)
请求 ID,用于标识一个请求(作消息串联,建议每个请求使用不同的request_id)
error
Object
错误
error 错误的数据结构:
名称
类型
说明
code
uint32
错误码
message
string
错误信息

2.5 返回示例

event:reply
data:{"type":"reply","payload":{"can_rating":false,"content":"你是谁","from_avatar":"","from_name":"","is_evil":false,"is_final":true,"is_from_self":true,"is_llm_generated":false,"knowledge":null,"record_id":"83ecd23c-6283-48d0-ac5e-7d8ab604770d","related_record_id":"","reply_method":0,"request_id":"","session_id":"sse_session8","timestamp":1701330804,"trace_id":"5daf1726c254241810bb160b4c8efbed"},"message_id":"808727d6-260a-4b7f-8a70-99330feaef3f"}

event:reply
data:{"type":"reply","payload":{"can_rating":true,"content":"我是大模型知识引擎,能够回答各种问题和提供信息。","from_avatar":"https://qbot-1251316161.cos.ap-nanjing.myqcloud.com/avatar.png","from_name":"bot","is_evil":false,"is_final":true,"is_from_self":false,"is_llm_generated":true,"knowledge":[{"id":33386,"type":1},{"id":452,"type":1},{"id":33388,"type":1}],"record_id":"7cfaf2dc-8e95-475b-9aa5-d6a5d4358f71","related_record_id":"83ecd23c-6283-48d0-ac5e-7d8ab604770d","reply_method":1,"request_id":"","session_id":"sse_session8","timestamp":1701330805,"trace_id":"5daf1726c254241810bb160b4c8efbed"},"message_id":"21b3eb5b-b0eb-4a2c-907b-2a287ad26a34"}
event:error
data:{"type":"error","error":{"code":460004,"message":"应用不存在"}}
注意:
接口使用时需判断取值是否为200,是则正常返回。

3. 错误码

错误码
错误信息
400
请求参数错误, 请参阅接入文档
460001
Token 校验失败
460002
事件处理器不存在
460004
应用不存在
460010
会话不存在或没有操作权限
460011
超出并发数限制
460020
模型请求超时
460021
知识库未发布
460024
标签不合法
460025
图像识别失败
460031
当前应用连接数超出请求限制,请稍后再试
460032
当前应用模型余额不足
460033
应用不存在或没有操作权限
460034
输入内容过长

4. 对话端 Demo 代码

Demo 代码描述了一个完整链接建立和消息收发流程。
JS 版本

4.1 后端版本

其他编程语言暂无 Demo,可以参考文档和现有 Demo 自行实现。