会话管理
对话服务模块包含应用对话、会话记录、反馈管理等功能。
应用对话
应用对话
- 接口地址:
/openapi/store/api/v1/chat/completions - 请求方法:POST
- 权限要求:
app_chatREAD - 接口描述:发起对话并获取AI回复,支持SSE流式输出和JSON响应
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| appid | String | 是 | 应用ID |
| prompt | String | 是 | 用户提问内容 |
| userId | String | 否 | 用户ID |
| conversationId | String | 否 | 会话ID,保持上下文 |
| containId | String | 否 | 容器ID |
RequestBody示例
{
"appid": "app_001",
"prompt": "介绍一下产品",
"userId": "user_001",
"conversationId": "conv_001"
}
响应示例
返回SSE流或JSON格式数据
请求示例
curl -X POST "${domain}/openapi/store/api/v1/chat/completions" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"appid": "app_001",
"prompt": "介绍一下产品"
}'
会话记录
会话记录列表
- 接口地址:
/store/api/saas/app/chat/list - 请求方法:GET
- 权限要求:
app_chat_recordREAD - 接口描述:分页查询应用会话记录
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageNo | Integer | 是 | 当前页码,默认1 |
| pageSize | Integer | 是 | 页码大小,默认10 |
| question | String | 否 | 问题内容(模糊查询) |
| userName | String | 否 | 用户名 |
| startTime | String | 是 | 开始时间,格式:yyyy-MM-dd |
| endTime | String | 是 | 结束时间,格式:yyyy-MM-dd |
| conversationId | String | 否 | 会话ID |
| appid | String | 否 | 应用ID |
| containId | String | 否 | 容器ID |
| userId | String | 否 | 用户ID |
| sort | String | 否 | 排序方式,默认desc |
响应示例
{
"data": [
{
"id": 1,
"messageId": "msg_001",
"conversationId": "conv_001",
"parentMessageId": null,
"apiType": "chat",
"questionCount": 1,
"question": "如何使用产品?",
"originalData": null,
"userId": "user_001",
"userName": "张三",
"ip": "192.168.1.1",
"status": "success",
"type": "text",
"modelName": "glm-3-turbo",
"content": "产品使用方法如下...",
"messageType": 1,
"responseErrorData": null,
"fileSource": null,
"costTime": 1500,
"startTime": "2024-01-01 10:00:00",
"creator": "user_001",
"createTime": "2024-01-01 10:00:00",
"modifier": "user_001",
"modifiedTime": "2024-01-01 10:00:00",
"timeLogs": null
}
],
"total": 1,
"totalPage": 1,
"pageNo": 1,
"pageSize": 10
}
请求示例
curl -X GET "${domain}/store/api/saas/app/chat/list?pageNo=1&pageSize=10&startTime=2024-01-01&endTime=2024-12-31" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxx" \
-H "Content-Type: application/json"
会话记录详情
- 接口地址:
/store/api/saas/app/chat/queryById - 请求方法:GET
- 权限要求:
app_chat_recordREAD - 接口描述:查询会话记录详情
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Integer | 是 | 记录ID |
响应示例
{
"code": 8200,
"message": "操作成功",
"data": {
"id": 1,
"messageId": "msg_001",
"conversationId": "conv_001",
"parentMessageId": null,
"apiType": "chat",
"questionCount": 1,
"question": "如何使用产品?",
"originalData": null,
"userId": "user_001",
"userName": "张三",
"ip": "192.168.1.1",
"status": "success",
"type": "text",
"modelName": "glm-3-turbo",
"content": "产品使用方法如下...",
"messageType": 1,
"responseErrorData": null,
"fileSource": null,
"costTime": 1500,
"startTime": "2024-01-01 10:00:00",
"creator": "user_001",
"createTime": "2024-01-01 10:00:00",
"modifier": "user_001",
"modifiedTime": "2024-01-01 10:00:00",
"timeLogs": null
}
}
请求示例
curl -X GET "${domain}/store/api/saas/app/chat/queryById?id=1" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxx" \
-H "Content-Type: application/json"
会话主题列表
- 接口地址:
/store/api/saas/app/topic/list - 请求方法:GET
- 权限要求:
app_chat_recordREAD - 接口描述:分页查询会话主题列表
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageNo | Integer | 是 | 当前页码,默认1 |
| pageSize | Integer | 是 | 页码大小,默认10 |
| question | String | 否 | 问题内容(模糊查询) |
| userName | String | 否 | 用户名 |
| startTime | String | 是 | 开始时间,格式:yyyy-MM-dd |
| endTime | String | 是 | 结束时间,格式:yyyy-MM-dd |
| conversationId | String | 否 | 会话ID |
| appid | String | 否 | 应用ID |
| containId | String | 否 | 容器ID |
| userId | String | 否 | 用户ID |
| sort | String | 否 | 排序方式,默认desc |
响应示例
{
"data": [
{
"id": 1,
"messageId": "msg_001",
"conversationId": "conv_001",
"parentMessageId": null,
"apiType": "chat",
"questionCount": 1,
"question": "产品咨询",
"originalData": null,
"userId": "user_001",
"userName": "张三",
"ip": "192.168.1.1",
"status": "success",
"type": "text",
"modelName": "glm-3-turbo",
"content": "产品使用方法如下...",
"messageType": 1,
"responseErrorData": null,
"fileSource": null,
"costTime": 1500,
"startTime": "2024-01-01 10:00:00",
"creator": "user_001",
"createTime": "2024-01-01 10:00:00",
"modifier": "user_001",
"modifiedTime": "2024-01-01 10:00:00",
"timeLogs": null
}
],
"total": 1,
"totalPage": 1,
"pageNo": 1,
"pageSize": 10
}
请求示例
curl -X GET "${domain}/store/api/saas/app/topic/list?pageNo=1&pageSize=10&startTime=2024-01-01&endTime=2024-12-31" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxx" \
-H "Content-Type: application/json"
导出会话记录
- 接口地址:
/store/api/saas/app/chat/export - 请求方法:GET
- 权限要求:
app_chat_recordREAD - 接口描述:导出会话记录为Excel文件
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| question | String | 否 | 问题内容(模糊查询) |
| userName | String | 否 | 用户名 |
| startTime | String | 是 | 开始时间,格式:yyyy-MM-dd |
| endTime | String | 是 | 结束时间,格式:yyyy-MM-dd |
| conversationId | String | 否 | 会话ID |
| appid | String | 否 | 应用ID |
| containId | String | 否 | 容器ID |
| userId | String | 否 | 用户ID |
| sort | String | 否 | 排序方式,默认desc |
响应示例
返回文件流
请求示例
curl -X GET "${domain}/store/api/saas/app/chat/export?startTime=2024-01-01&endTime=2024-12-31" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxx" \
-o chat_records.xlsx
会话反馈
提交反馈
- 接口地址:
/kl/api/saas/feedback/add - 请求方法:POST
- 权限要求:
app_chat_feedbackWRITE - 接口描述:提交对话反馈信息
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| conversationId | String | 是 | 会话ID |
| model | String | 否 | 模型名称,默认glm-3-turbo |
| question | String | 是 | 用户问题 |
| answer | String | 是 | AI回答内容 |
| remark | String | 否 | 备注说明 |
| type | String | 是 | 反馈类型:like-点赞,tap-点踩,other-其他 |
| tag | String | 否 | 标签 |
| messageId | String | 否 | 消息ID |
| appid | String | 否 | 应用ID |
RequestBody示例
{
"conversationId": "conv_001",
"question": "如何使用产品?",
"answer": "产品使用方法如下...",
"type": "like",
"remark": "回答很有帮助",
"messageId": "msg_001",
"appid": "app_001"
}
响应示例
{
"code": 8200,
"message": "提交成功",
"data": null
}
请求示例
curl -X POST "${domain}/kl/api/saas/feedback/add" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"conversationId": "conv_001",
"question": "如何使用产品?",
"answer": "产品使用方法如下...",
"type": "like",
"remark": "回答很有帮助"
}'
反馈列表
- 接口地址:
/kl/api/saas/feedback/list - 请求方法:GET
- 权限要求:
app_chat_feedbackREAD - 接口描述:分页查询反馈信息列表
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pageNo | Integer | 是 | 当前页码,默认1 |
| pageSize | Integer | 是 | 页码大小,默认10 |
| question | String | 否 | 问题内容(模糊查询) |
| startTime | String | 否 | 开始时间,格式:yyyy-MM-dd |
| endTime | String | 否 | 结束时间,格式:yyyy-MM-dd |
| type | String | 否 | 反馈类型:like-点赞,tap-点踩,other-其他 |
| status | Integer | 否 | 处理状态:0-未处理,1-已处理 |
| appid | String | 否 | 应用ID |
| appName | String | 否 | 应用名称 |
响应示例
{
"data": [
{
"id": 1,
"conversationId": "conv_001",
"userNameDisplay": "张三",
"userId": "user_001",
"userName": "zhangsan",
"tel": "13800138000",
"question": "如何使用产品?",
"answer": "产品使用方法如下...",
"remark": "回答很有帮助",
"type": "like",
"tag": null,
"status": 0,
"feedbackSource": null,
"feedbackSourceType": null,
"creator": "user_001",
"createTime": "2024-01-01 10:00:00",
"modifier": "user_001",
"modifierTime": "2024-01-01 10:00:00",
"sort": 1
}
],
"total": 1,
"totalPage": 1,
"pageNo": 1,
"pageSize": 10
}
请求示例
curl -X GET "${domain}/kl/api/saas/feedback/list?pageNo=1&pageSize=10" \
-H "Authorization: Bearer sk_xxxxxxxxxxxxx" \
-H "Content-Type: application/json"