Skip to content

AI对话

AI对话说明

AI对话定义

一个用户下面,有很多个对话(conversations),每个对话有很多个回合(chats),每个回合包含用户问题(prompt)、问题之外的衡石对象相关信息(userConfig和autoConfig)和ai的文本回答(answer)、生成的chart等信息。userConfig由对话的客户端根据用户所在的产品功能点来设置。 后端主要分成AgentManager和具体Agent两大模块。AgentManager根据chat的prompt和userConfig,判断应该使用哪个Agent来执行任务返回结果,并根据需要设置autoConfig。 具体Agent 5.1版本支持三个:SuggestQuestionsAgent、HQLAgent、MetricSelectAgent。SuggestQuestionsAgent用于生成图表按固定模板的问题列表。HQLAgent用于即时查询。MetricSelectAgent用于指标查询。

数据结构

AgentType

状态值意义
SUGGEST_QUESTIONS_AGENT根据userConfig中图表信息,生成当前用户适宜的推荐问题
HQL_AGENT根据userConfig中数据集信息和用户问题,生成即时查询结果
METRIC_SELECT_AGENT根据userConfig中数据集信息和用户问题,生成指标查询结果

ProcessStatus

状态值意义
PENDING在等待队列中,所有agent类型适用
ANALYZE_REQUEST正在分析请求,所有agent类型适用
GENERATE_METRIC_QUERY生成指标查询,只有METRIC_SELECT_AGENT适用
DOING_METRIC_QUERY执行指标查询,只有METRIC_SELECT_AGENT适用
HQL_SELECT_FIELDS执行即时查询字段选择,只有HQL_AGENT适用
HQL_SELECT_FUNCTIONS执行即时查询函数例子选择,只有HQL_AGENT适用
GENERATE_HQL_QUERY生成即时查询,只有HQL_AGENT适用
DOING_HQL_QUERY执行即时查询,只有HQL_AGENT适用
DOING_SUMMARY执行总结,HQL_AGENT和METRIC_SELECT_AGENT适用
DOING_QUESTION_SUGGESTING执行问题推荐,HQL_AGENT和METRIC_SELECT_AGENT,SUGGEST_QUESTIONS_AGENT适用
DONE执行完成,所有agent类型适用
FAILED执行失败,所有agent类型适用
CANCELLED执行取消,所有agent类型适用

Conversation

字段类型描述
idINTEGER一个对话的唯一id
titleSTRING一个对话的标题,默认是对话开头的用户提问
createdAtDATETIME创建的时间
createdByINTEGER创建用户的 id
updatedAtDATETIME最后更新的时间
updatedByINTEGER最后修改用户的 id
isDeleteBOOL后端软删除使用

Chat

字段类型描述
conversationIdINTEGERchat 所属对话的id
uidSTRING一个问答回合的唯一标识
createdAtDATETIME创建的时间
createdByINTEGER创建用户的 id
updatedAtDATETIME最后更新的时间
updatedByINTEGER最后修改用户的 id
responseAtDATETIME最后响应的时间
promptSTRING一个问答回合的用户问题
answerSTRING一个问答回合的ai文本回答
chartsOBJECT ARRAY一个问答回合的ai生成的chart,可能有多个
suggestQuestionsSTRING ARRAY一个问答回合的ai下一步的推荐问题
isContextEndBOOL是否结束话题切换新话题,计算时忽略本回合和之前的对话内容
statusListSTRING ARRAYProcessStatus中当前选择的agent已经完成的步骤
modelSTRING使用的ai模型
temperatureDOUBLE模型的temperature设置
userConfigOBJECT用户问题当前所处的衡石对象上下文信息,比如数据集信息
userConfig.appIdINTEGER用户问题当前所处的衡石对象上下文信息的应用id
userConfig.datasetIdINTEGER用户问题当前所处的衡石对象上下文信息的数据集id
userConfig.chartIdINTEGER用户问题当前所处的衡石对象上下文信息的图表id
autoConfigOBJECTAgentManager和执行过程自动设置的一些信息,比如选择的agent等
autoConfig.agentTypeSTRINGAgentManager判定应该使用的agent
likedBOOL赞或者踩
likedMsgSTRING赞或者踩的具体内容
isDeleteBOOL后端软删除使用
isCurrentBOOL在重新回答的回合中,被用户使用的回合是true,其他回合是false
parentUidSTRING在重新回答的回合中,第一次回答的parentUid是null,其他次的parentUid是第一次回答的uid
subChatsOBJECT ARRAYChat对象的数组,有重新回答的情况才有,包括第一次回答和其他次回答的Chat
usageOBJECT ARRAY本次对话回合调用大模型api消耗的token情况,每次api调用对应一个统计OBJECT

ChatLog

字段类型描述
uidSTRING一个问答回合的唯一标识
logsOBJECT ARRAY一个问答回合的日志
logs[i].typeSTRING日志类型,包括ASSISTANT,USER,PROCESS,ERROR
logs[i].contentSTRING日志内容
logs[i].timestampDATETIME日志时间
createdAtDATETIME创建的时间
createdByINTEGER创建用户的 id
updatedAtDATETIME最后更新的时间
updatedByINTEGER最后修改用户的 id

接口设计

创建对话

请求URL

http
POST /api/conversations HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
Request Body 参数

Conversation结构说明。主要是title字段,如果为空,默认生成Conversation YYYY-mm-DD HH:MM:SS为对话标题

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataOBJECT对话信息,包括id和标题等
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例:

http
POST /api/conversations HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

// Request Body:
{
  "title": "去分析1",
  ...
}
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "id":1,
    "title":"去分析1",
    ...
  }
  ...
}

删除对话

请求URL

http
DELETE /api/conversations/${conversationId} HTTP/1.1

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id
Request Body 参数

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例:

http
DELETE /api/conversations/1 HTTP/1.1
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "version": "version@9a5e106#6730f0d",
  ...
}

获取对话列表

请求URL

http
GET /api/conversations HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
offsetINTERGER偏移的值
limitINTERGER查询的最大个数
orderBySTRING排序字段名,比如 id,title,createdAt, updatedAt 等
orderTypeSTRING排序规则,asc 或者 desc
returnChatsBOOL是否把对话下面的所有回合都获取并放入chats字段中一起返回
Request Body 参数

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataOBJECT ARRAY对话列表
msgSTRINGhttp code不是200的话,返回具体的错误信息
totalHitsINTEGER所有结果列表总数
offsetINTEGER本次分页结果偏移量

接口示例:

http
GET /api/conversations HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": [
    {
      "id":1,
      "title":"去分析1",
      ...
    },
    ...
  ]
  ...
}

修改对话

请求URL

http
PUT /api/conversations/${conversationId} HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id
Request Body 参数

Conversation结构说明。主要是title字段,用于修改标题

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataOBJECT对话信息,包括id和标题等
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例:

http
PUT /api/conversations/1 HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

// Request Body:
{
  "title": "去分析11",
  ...
}
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "id":1,
    "title":"去分析11",
    ...
  }
  ...
}

获取一个对话

请求URL

http
GET /api/conversations/${conversationId} HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id
Request Body 参数

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataOBJECT对话信息,包括id和标题等
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例:

http
GET /api/conversations/1 HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "id":1,
    "title":"去分析11",
    ...
  }
  ...
}

创建一个对话下的回合

请求URL

http
POST /api/conversations/${conversationId}/chats HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id,如果是专门获取推荐问题,对话内容不展示给用户,用固定的id 0
Request Body 参数

对话回合chat结构说明。主要包括prompt和userConfig,prompt是用户的本回合对话内容,userConfig配置当前用户所针对的衡石实体,目前只支持数据集或图表。

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataOBJECT对话回合信息,包括uid和ai的回答等信息,详见对话回合chat结构说明
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例1 创建即时查询对话回合:

http
POST /api/conversations/1/chats HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

// Request Body:
{
  "prompt": "每个short_name的最大的latitude是多少?",
  "userConfig":{
    "appId": 130535,
    "datasetId": 2
  }
}
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "conversationId":1,
    "uid": "a6137043-4074-4e00-a2ff-6ece1dbdabbf",
    "createdAt": "2023-12-13 17:26:55",
    "charts": [],
    "answer": "",
    "responseAt": "",
    "prompt": "每个short_name的最大的latitude是多少?",
    "suggestQuestions":[],
    "statusList": ["ANALYZE_REQUEST"],
    "userConfig":{
      "appId": 130535,
      "datasetId": 2
      },
    "autoConfig":{}
  }
  ...
}

接口示例2 创建指标查询对话回合:

http
POST /api/conversations/1/chats HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

// Request Body:
{
  "prompt": "服务咨询量",
  "userConfig":{
    "appId": 130535,
    "datasetId": 3
  }
}
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "conversationId": 1,
    "uid": "1814fd1a-cbdd-43eb-83f7-014404241379",
    "createdAt": "2023-11-27 14:21:35",
    "charts": [],
    "answer": "",
    "responseAt": "",
    "prompt": "服务咨询量",
    "suggestQuestions":[],
    "statusList": ["ANALYZE_REQUEST"],
    "userConfig":{
      "appId": 130535,
      "datasetId": 3
      },
    "autoConfig":{}
  }
  ...
}

接口示例3 创建图表推荐问题对话回合:

http
POST /api/conversations/0/chats HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

// Request Body:
{
  "prompt": "请根据图表字段推荐问题",
  "userConfig":{
    "appId": 130535,
    "chartId": 2
  }
}
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "conversationId": 0,
    "uid": "1814fd1a-cbdd-43eb-83f7-014404241234",
    "createdAt": "2023-11-27 14:21:35",
    "charts": [],
    "answer": "",
    "responseAt": "",
    "prompt": "请根据图表字段推荐问题",
    "suggestQuestions":[],
    "statusList": ["ANALYZE_REQUEST"],
    "userConfig":{
      "appId": 130535,
      "chartId": 2
      },
    "autoConfig":{}
  }
  ...
}

删除一个对话下的一个回合

请求URL

http
DELETE /api/conversations/${conversationId}/chats/${uid} HTTP/1.1

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id
uidSTRING对话回合的唯一标识
Request Body 参数

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例:

http
DELETE /api/conversations/1/chats/550e8400-e29b-41d4-a716-446655440000 HTTP/1.1
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "version": "version@9a5e106#6730f0d",
  ...
}

删除一个对话下的所有回合

请求URL

http
DELETE /api/conversations/${conversationId}/chats HTTP/1.1

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id
Request Body 参数

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例:

http
DELETE /api/conversations/1/chats HTTP/1.1
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "version": "version@9a5e106#6730f0d",
  ...
}

获取一个对话下的回合列表

请求URL

http
GET /api/conversations/${conversationId}/chats HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id
offsetINTERGER偏移的值
limitINTERGER查询的最大个数
orderByString排序字段名,比如 id,title,createdAt, updatedAt 等
orderTypeString排序规则,asc 或者 desc
Request Body 参数

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataOBJECT ARRAY对话回合列表
msgSTRINGhttp code不是200的话,返回具体的错误信息
totalHitsINTEGER所有结果列表总数
offsetINTEGER本次分页结果偏移量

接口示例:

http
GET /api/conversations/1/chats HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": [
    {
      "conversationId":1,
      "uid": "a6137043-4074-4e00-a2ff-6ece1dbdabbf",
      "createdAt": "2023-12-13 17:26:55",
      "charts": [
        {
          "appId": 130535,
          "datasetId": 2,
          "options": {
            "axes": [
              {
                "op": "{{2}}.{short_name}",
                "uid": "uid1",
                "fieldName": "short_name",
                "kind": "formula",
                "datasetId": 2,
                "labelOrigin": "short_name",
                "label": "short_name",
                "isAggregate": false,
                "value": "{{china_map_province1}}.{short_name}",
                "dataset": 2,
                "fieldType": "string"
              },
              {
                "op": "max({{2}}.{latitude})",
                "uid": "uid2",
                "fieldName": "latitude",
                "kind": "formula",
                "datasetId": 2,
                "labelOrigin": "latitude",
                "label": "latitude",
                "isAggregate": true,
                "value": "max({{china_map_province1}}.{latitude})",
                "dataset": 2,
                "fieldType": "number"
              }
            ],
            "limit": 100
          },
          "dataAppId": 130535,
          "datasetIds": [
            2
          ]
        }
      ],
      "answer": "根据提供的数据,我们可以看到每个short_name(这里指的是中国的各个省份、直辖市和特别行政区)对应的最大纬度值。例如,\"内蒙古\"的最大纬度是40.8182330000,\"湖北\"的最大纬度是30.5462220000,\"海南\"的最大纬度是20.0186390000,以此类推。从数据中我们可以看出,纬度最大的是\"黑龙江\",纬度为45.7422530000,纬度最小的是\"海南\",纬度为20.0186390000。这些数据可以帮助我们了解中国各地区的地理位置分布。",
      "responseAt": "2023-12-13 17:27:20",
      "prompt": "每个short_name的最大的latitude是多少?",
      "suggestQuestions":["哪个short_name的latitude最大?","哪个short_name的latitude最小?"],
      "statusList": ["ANALYZE_REQUEST","HQL_SELECT_FIELDS","GENERATE_HQL_QUERY","DOING_HQL_QUERY","DOING_SUMMARY","DONE"],
      "userConfig":{
        "appId": 130535,
        "datasetId": 2
        },
      "autoConfig":{
        "agentType":"HQL_AGENT"
        }
    },
    {
      "conversationId": 1,
      "uid": "1814fd1a-cbdd-43eb-83f7-014404241379",
      "createdAt": "2023-11-27 14:21:35",
      "charts": [
        {
          "appId": 130535,
          "datasetId": 3
          "options": {
            "axes": [
              {
                "op": "c38",
                "uid": "uid1",
                "fieldName": "c38",
                "kind": "measure",
                "datasetId": 3
                "labelOrigin": "咨询量",
                "label": "咨询量",
                "isAggregate": true,
                "dataset": 3
                "fieldType": "number"
              }
            ],
            "limit": 100
          },
          "dataAppId": 130535
          "datasetIds": [
            3
          ]
        }
      ],
      "answer": "根据你的问题和提供的数据,这个数字369可能代表的是\"服务咨询量\"。这意味着在特定的时间段内,有369次服务咨询的记录。这个指标可以帮助我们了解客户对我们的服务有多大的需求,以及我们的服务是否能满足客户的需求。如果服务咨询量持续增长,那么可能意味着我们的服务有很大的市场需求,或者我们的服务有待改进以更好地满足客户的需求。",
      "responseAt": "2023-11-27 14:22:05",
      "prompt": "服务咨询量",
      "suggestQuestions":["成交量","成交率"],
      "statusList": ["ANALYZE_REQUEST","GENERATE_METRIC_QUERY","DOING_METRIC_QUERY","DOING_SUMMARY","DONE"],
      "userConfig":{
        "appId": 130535,
        "datasetId": 3
        },
      "autoConfig":{
        "agentType":"METRIC_SELECT_AGENT"
        }
    },
    ...
  ]
  ...
}

修改一个对话下的回合

请求URL

http
PUT /api/conversations/${conversationId}/chats/${uid} HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id
uidSTRING对话回合的唯一标识
Request Body 参数

Chat结构说明。主要用于更新liked,likedMsg,isContextEnd,分别表示点赞,踩和结束对话上下文。

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataOBJECT对话回合信息,参考Chat结构说明
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例:

http
PUT /api/conversations/1/chats/1814fd1a-cbdd-43eb-83f7-014404241379 HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

// Request Body:
{
  "liked": "false",
  "likedMsg":"总结不是很好"
  ...
}
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "conversationId": 1,
    "uid": "1814fd1a-cbdd-43eb-83f7-014404241379",
    "createdAt": "2023-11-27 14:21:35",
    "charts": [
      {
        "appId": 130535,
        "datasetId": 3
        "options": {
          "axes": [
            {
              "op": "c38",
              "uid": "uid1",
              "fieldName": "c38",
              "kind": "measure",
              "datasetId": 3
              "labelOrigin": "咨询量",
              "label": "咨询量",
              "isAggregate": true,
              "dataset": 3
              "fieldType": "number"
            }
          ],
          "limit": 100
        },
        "dataAppId": 130535
        "datasetIds": [
          3
        ]
      }
    ],
    "answer": "根据你的问题和提供的数据,这个数字369可能代表的是\"服务咨询量\"。这意味着在特定的时间段内,有369次服务咨询的记录。这个指标可以帮助我们了解客户对我们的服务有多大的需求,以及我们的服务是否能满足客户的需求。如果服务咨询量持续增长,那么可能意味着我们的服务有很大的市场需求,或者我们的服务有待改进以更好地满足客户的需求。",
    "responseAt": "2023-11-27 14:22:05",
    "prompt": "服务咨询量",
    "suggestQuestions":["成交量","成交率"],
    "statusList": ["ANALYZE_REQUEST","GENERATE_METRIC_QUERY","DOING_METRIC_QUERY","DOING_SUMMARY","DONE"],
    "userConfig":{
      "appId": 130535,
      "datasetId": 3
      },
    "autoConfig":{
      "agentType":"METRIC_SELECT_AGENT"
      }
    "liked": "false",
    "likedMsg":"总结不是很好"
  }
  ...
}

获取一个对话下的回合

请求URL

http
GET /api/conversations/${conversationId}/chats/${uid} HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id,如果是专门获取推荐问题,对话内容不展示给用户,用固定的id 0
uidSTRING对话回合的唯一标识
Request Body 参数

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataOBJECT对话回合信息,包括状态和结果等,参考Chat结构说明
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例1 获取即时查询结果:

http
GET /api/conversations/1/chats/a6137043-4074-4e00-a2ff-6ece1dbdabbf HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "conversationId":1,
    "uid": "a6137043-4074-4e00-a2ff-6ece1dbdabbf",
    "createdAt": "2023-12-13 17:26:55",
    "charts": [
      {
        "appId": 130535,
        "datasetId": 2,
        "options": {
          "axes": [
            {
              "op": "{{2}}.{short_name}",
              "uid": "uid1",
              "fieldName": "short_name",
              "kind": "formula",
              "datasetId": 2,
              "labelOrigin": "short_name",
              "label": "short_name",
              "isAggregate": false,
              "value": "{{china_map_province1}}.{short_name}",
              "dataset": 2,
              "fieldType": "string"
            },
            {
              "op": "max({{2}}.{latitude})",
              "uid": "uid2",
              "fieldName": "latitude",
              "kind": "formula",
              "datasetId": 2,
              "labelOrigin": "latitude",
              "label": "latitude",
              "isAggregate": true,
              "value": "max({{china_map_province1}}.{latitude})",
              "dataset": 2,
              "fieldType": "number"
            }
          ],
          "limit": 100
        },
        "dataAppId": 130535,
        "datasetIds": [
          2
        ]
      }
    ],
    "answer": "根据提供的数据,我们可以看到每个short_name(这里指的是中国的各个省份、直辖市和特别行政区)对应的最大纬度值。例如,\"内蒙古\"的最大纬度是40.8182330000,\"湖北\"的最大纬度是30.5462220000,\"海南\"的最大纬度是20.0186390000,以此类推。从数据中我们可以看出,纬度最大的是\"黑龙江\",纬度为45.7422530000,纬度最小的是\"海南\",纬度为20.0186390000。这些数据可以帮助我们了解中国各地区的地理位置分布。",
    "responseAt": "2023-12-13 17:27:20",
    "prompt": "每个short_name的最大的latitude是多少?",
    "suggestQuestions":["哪个short_name的latitude最大?","哪个short_name的latitude最小?"],
    "statusList": ["ANALYZE_REQUEST","HQL_SELECT_FIELDS","GENERATE_HQL_QUERY","DOING_HQL_QUERY","DOING_SUMMARY","DONE"],
    "userConfig":{
      "appId": 130535,
      "datasetId": 2
      },
    "autoConfig":{
      "agentType":"HQL_AGENT"
      }
  }
  ...
}

接口示例2 获取指标查询结果:

http
GET /api/conversations/1/chats/1814fd1a-cbdd-43eb-83f7-014404241379 HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "conversationId": 1,
    "uid": "1814fd1a-cbdd-43eb-83f7-014404241379",
    "createdAt": "2023-11-27 14:21:35",
    "charts": [
      {
        "appId": 130535,
        "datasetId": 3
        "options": {
          "axes": [
            {
              "op": "c38",
              "uid": "uid1",
              "fieldName": "c38",
              "kind": "measure",
              "datasetId": 3
              "labelOrigin": "咨询量",
              "label": "咨询量",
              "isAggregate": true,
              "dataset": 3
              "fieldType": "number"
            }
          ],
          "limit": 100
        },
        "dataAppId": 130535
        "datasetIds": [
          3
        ]
      }
    ],
    "answer": "根据你的问题和提供的数据,这个数字369可能代表的是\"服务咨询量\"。这意味着在特定的时间段内,有369次服务咨询的记录。这个指标可以帮助我们了解客户对我们的服务有多大的需求,以及我们的服务是否能满足客户的需求。如果服务咨询量持续增长,那么可能意味着我们的服务有很大的市场需求,或者我们的服务有待改进以更好地满足客户的需求。",
    "responseAt": "2023-11-27 14:22:05",
    "prompt": "服务咨询量",
    "suggestQuestions":["成交量","成交率"],
    "statusList": ["ANALYZE_REQUEST","GENERATE_METRIC_QUERY","DOING_METRIC_QUERY","DOING_SUMMARY","DONE"],
    "userConfig":{
      "appId": 130535,
      "datasetId": 3
      },
    "autoConfig":{
      "agentType":"METRIC_SELECT_AGENT"
      }
  }
  ...
}

接口示例3 获取图表推荐问题:

http
GET /api/conversations/0/chats/1814fd1a-cbdd-43eb-83f7-014404241234 HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "conversationId": 0,
    "uid": "1814fd1a-cbdd-43eb-83f7-014404241234",
    "createdAt": "2023-11-27 14:21:35",
    "charts": [],
    "answer": "",
    "responseAt": "2023-11-27 14:22:05",
    "prompt": "请根据图表字段推荐问题",
    "suggestQuestions":["各省份的经纬度分布情况是怎样的?","哪个short_name的latitude最大?"],
    "statusList": ["ANALYZE_REQUEST","DOING_QUESTION_SUGGESTING","DONE"],
    "userConfig":{
      "appId": 130535,
      "chartId": 2
      },
    "autoConfig":{
      "agentType":"SUGGEST_QUESTIONS_AGENT"
      }
  }
  ...
}

获取一个对话下的一个回合的执行日志

请求URL

http
GET /api/conversations/${conversationId}/chats/${uid}/logs HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id
uidSTRING对话回合的唯一标识
Request Body 参数

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataOBJECT ARRAY对话回合的日志信息,参考ChatLog结构说明下的logs字段
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例:

http
GET /api/conversations/1/chats/a6137043-4074-4e00-a2ff-6ece1dbdabbf/logs HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": [
  {
    "type": "PROCESS",
    "content": "begin to prepare base info",
    "timestamp": "2023-12-13 17:26:55"
  },
  {
    "type": "PROCESS",
    "content": "llm chain build completed:[ContextLLM, HQLLLM, VisualizeLLM, SummaryLLM]",
    "timestamp": "2023-12-13 17:26:55"
  },
  {
    "type": "PROCESS",
    "content": "LLM ContextLLM begin to analyze",
    "timestamp": "2023-12-13 17:26:55"
  },
  {
    "type": "PROCESS",
    "content": "ai answer [{\"datasetId\":2,\"fields\":[\"short_name\",\"latitude\"],\"computation_fields\":[\"latitude\"]}]",
    "timestamp": "2023-12-13 17:26:57"
  },
  {
    "type": "PROCESS",
    "content": "chat answer validateResult is true with message {\"value\":\"[{\\\"datasetId\\\":2,\\\"fields\\\":[\\\"short_name\\\",\\\"latitude\\\"],\\\"computation_fields\\\":[\\\"latitude\\\"]}]\"}",
    "timestamp": "2023-12-13 17:26:57"
  },
  {
    "type": "ASSISTANT",
    "content": "[{\"datasetId\":2,\"fields\":[\"short_name\",\"latitude\"],\"computation_fields\":[\"latitude\"]}]",
    "timestamp": "2023-12-13 17:26:57"
  },
  {
    "type": "PROCESS",
    "content": "LLM HQLLLM begin to analyze",
    "timestamp": "2023-12-13 17:26:57"
  },
  {
    "type": "PROCESS",
    "content": "ai answer {\"axes\":[{\"op\":\"{short_name}\",\"uid\":\"uid1\"},{\"op\":\"max({latitude})\",\"uid\":\"uid2\"}]}",
    "timestamp": "2023-12-13 17:27:08"
  },
  {
    "type": "PROCESS",
    "content": "LLM VisualizeLLM begin to analyze",
    "timestamp": "2023-12-13 17:27:09"
  },
  {
    "type": "PROCESS",
    "content": "LLM SummaryLLM begin to analyze",
    "timestamp": "2023-12-13 17:27:09"
  },
  {
    "type": "PROCESS",
    "content": "ai answer 根据提供的数据,我们可以看到每个short_name(这里指的是中国的各个省份、直辖市和特别行政区)对应的最大纬度值。例如,\"内蒙古\"的最大纬度是40.8182330000,\"湖北\"的最大纬度是30.5462220000,\"海南\"的最大纬度是20.0186390000,以此类推。从数据中我们可以看出,纬度最大的是\"黑龙江\",纬度为45.7422530000,纬度最小的是\"海南\",纬度为20.0186390000。这些数据可以帮助我们了解中国各地区的地理位置分布。",
    "timestamp": "2023-12-13 17:27:20"
  }
  ]
  ...
}

让ai重新回答一个对话下的一个回合

请求URL

http
GET /api/conversations/${conversationId}/chats/${uid}/regenerate HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id
uidSTRING对话回合的唯一标识
Request Body 参数

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataSTRING回合uid
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例:

http
GET /api/conversations/1/chats/a6137043-4074-4e00-a2ff-6ece1dbdabbf/regenerate HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "version": "version@9a5e106#6730f0d",
  "code": 0,
  "msg": "success",
  "data": "a6137043-4074-4e00-a2ff-6ece1dbdabbf",
  "chartDataStartTimeMillis": 0
}

设置一个对话下的回合的多次运行结果为选定答案

请求URL

http
POST /api/conversations/${conversationId}/chats/${uid}/is-current HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

请求参数

URL 参数
字段类型是否必须说明
conversationIdINTEGER对话id,如果是专门获取推荐问题,对话内容不展示给用户,用固定的id 0
uidSTRING对话回合的唯一标识
Request Body 参数

为空就行

返回对象的格式说明

字段类型说明
versionSTRING当前系统版本哈希值
dataOBJECT对话回合信息,包括uid和ai的回答等信息,详见对话回合chat结构说明
msgSTRINGhttp code不是200的话,返回具体的错误信息

接口示例:

http
POST /api/conversations/1/chats/a6137043-4074-4e00-a2ff-6ece1dbdabbf/is-current HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...

// Request Body:
{
}
http
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "data": {
    "conversationId":1,
    "uid": "a6137043-4074-4e00-a2ff-6ece1dbdabbf",
    "isCurrent": true,
    "createdAt": "2023-12-13 17:26:55",
    "charts": [],
    "answer": "",
    "responseAt": "",
    "prompt": "每个short_name的最大的latitude是多少?",
    "suggestQuestions":[],
    "statusList": ["ANALYZE_REQUEST"],
    "userConfig":{
      "appId": 130535,
      "datasetId": 2
      },
    "autoConfig":{}
  }
  ...
}

HENGSHI SENSE API 使用手册