...
名称 | 描述 | 默认值 | |
接口路径 | http://host:port/aiweb/api/v3/conv/query | ||
接口说明 | V3版本查询方法 -- 异步方法 -- SSE请求 | ||
header | token | 登录key,使用login方法获取;login方法请参考:登录AIChat | |
接口参数 | convId | 会话Id | |
datasetId | 数据模型Id | ||
question | 用户问题 | ||
queryType | 查询类型:
| 建议使用:analysis | |
id | 本次对话id 从外部传入才能做点赞点踩 | ||
need_inquiry | 本次查询是否需要使用反问功能 | default(true) | |
返回内容 | 返回SSE对象,前端处理 SSE返回报文样例: {"role": "SimpleQuery", "response_status": "generating code", "response_message": " \"", "execution_result": "", "send_to": "Unknown", "response_type": "python"} ... SSE 接口会返回很多条这样的报文;具体原理请自行查询百度。 请手工拼接返回报文 "response_message" 和 "execution_result" 部分内容;response_type 表示当前这条报文的返回内容是啥。 |
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
String server = "http://域名:端口/smartbi";
String user = "user";
String password = "password";
ObjectMapper mapper = new ObjectMapper();
Map<String, String> cookies = new HashMap<>();
HttpRequest request = HttpRequest.get(server + "/vision/openresource.jsp?resid=I402882c701552f492f49736e01552f4df2c50013&user=" + user + "&password=" + password);
try (HttpResponse response = request.execute()) {
for (HttpCookie cookie : response.getCookies()) {
cookies.put(cookie.getName(), cookie.getValue());
}
}
request = HttpRequest.post(server + "/vision/aichat/proxy/api/v1/login")
.cookie(toCookie(cookies))
.form("userName", user)
.form("smartbiServer", server)
.form("loginMethod", "login")
.form("cookie", toCookie(cookies));
String token = null;
try (HttpResponse response = request.execute()) {
for (HttpCookie cookie : response.getCookies()) {
cookies.put(cookie.getName(), cookie.getValue());
}
JsonNode tree = mapper.readTree(response.body());
token = tree.get("token").asText();
}
Thread.sleep(5000); // 旧版本由于存在问题,需要 sleep。 新版本后不需要
request = HttpRequest.post(server + "/vision/aichat/proxy/api/v3/conv/query")
.cookie(toCookie(cookies))
.header("token", token)
.form("datasetId", "Iff808081018354c854c8f0fa018354cbde880001")
.form("convId", "70c69b66-7af7-45fc-b51c-b486ceba1a43")
.form("question", "车均价 ")
.form("queryType", "analysis")
.form("id", "285fce7d-14e2-4a63-ab33-cf9abf09c41f")
.form("pageSize", "10000")
.form("showRows", "1000")
.form("need_inquiry", "false")
.form("onlyQueryChart", "false")
.form("autoRecommendedChart", "false");
try (HttpResponse response = request.execute()) {
System.out.println(response.body());
}
|
4.3 查询接口(同步)
名称 | 描述 | 默认值 | |
接口路径 | http://host:port/aiweb/api/v3/conv/query_sync | ||
接口说明 | V3版本查询方法 -- 同步方法 | ||
header | token | 登录key,使用login方法获取;login方法请参考:登录AIChat | |
接口参数 | convId | 会话Id | |
datasetId | 数据模型Id | ||
question | 用户问题 | ||
queryType | 查询类型:
| 建议使用:analysis | |
id | 本次对话id 从外部传入才能做点赞点踩 | ||
need_inquiry | 本次查询是否需要使用反问功能 | default(true) | |
返回内容 | 返回查询结果(JSON),前端处理 { "code": 0, "result": "[\"[{\\\"年月\\\":\\\"2019-01\\\",\\\"销量\\\":132912,\\\"销量环比增长率\\\":\\\"-6.06%\\\",\\\"_销量占比\\\":\\\"8.8272%\\\"},...]", "message": null } code=0,表示返回正确(result是返回结果);否则message就是错误提示。 |
...