package com.yb.controller;
|
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.yb.config.R;
|
import com.yb.config.XzConfig;
|
import com.yb.service.AgentService;
|
import com.yb.service.XzService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.HashMap;
|
import java.util.Map;
|
|
@Tag(name = "Agent意图")
|
@RestController
|
@RequestMapping("/api/agent")
|
@Api(tags = "Agent意图")
|
@Component
|
public class agentController {
|
|
@Autowired
|
private XzConfig xzConfig;
|
@Autowired
|
private XzService xzService;
|
@Autowired
|
private AgentService agentService;
|
|
@ApiOperation("意图识别")
|
@PostMapping("/intention")
|
@Operation(summary = "意图识别")
|
public R getIntention(@RequestParam Map<String, String> allParams) throws Exception {
|
System.out.println("rec getMessage:" + allParams);
|
String msg = allParams.get("message");
|
String sessionId = allParams.get("session_id");
|
String libId = allParams.get("lib_id");
|
String url = xzConfig.agentUrl;
|
String intent = xzConfig.agentIntent;
|
String rag = xzConfig.agentRag;
|
String chart = xzConfig.agentChat;
|
// 判断msg是否为空
|
if (StringUtils.isEmpty(msg)) {
|
String info = agentService.getAgentIntention(url, intent, "''");
|
JSONObject obj = JSONObject.parseObject(info);
|
String cont = obj.getString("content");
|
System.out.println("rec isEmpty:" + cont);
|
return R.error(cont);
|
//
|
}
|
// 判断是否调用地图
|
boolean isMap = msg.matches("(?i).*@map.*");
|
HashMap<String, Object> hashMap = new HashMap<String, Object>();
|
if (isMap) {
|
hashMap.put("type", "Map");
|
HashMap<String, Object> mapObj = new HashMap<String, Object>();
|
String funcInfo = agentService.getAgentIntention(url, intent, msg);
|
JSONObject jsonObject = JSON.parseObject(funcInfo);
|
String orderString = jsonObject.getString("order");
|
if(orderString == null){
|
hashMap.put("type", "text");
|
JSONObject errInfo = JSON.parseObject(funcInfo);
|
String erroContent = errInfo.getString("content");
|
hashMap.put("content", erroContent);
|
return R.error(erroContent);
|
|
}
|
JSONObject orderObject = JSON.parseObject(orderString);
|
|
String func = orderObject.getString("name");
|
JSONObject argsObject = JSON.parseObject(orderObject.getString("args"));
|
String place = argsObject.getString("place");
|
String type = argsObject.getString("attris");
|
String dis = argsObject.getString("redius");
|
int radius = 5000;
|
if (dis != null) {
|
dis = dis.replace("m", "");
|
radius = Integer.parseInt(dis);
|
}
|
String queryFiled = "enti_name";
|
String typeFiled = "sjnr";
|
String func1 = "poiMap";
|
String func2 = "aroundPoi";
|
String func3 = "queryMeta";
|
if (func.equals(func1)) {
|
String poiMap = agentService.getAgentPoiMap(place, queryFiled);
|
System.out.println("poiMap: " + poiMap);
|
JSONObject poiObj = JSONObject.parseObject(poiMap);
|
System.out.println("poiMap: " + poiObj);
|
mapObj.put("func", func1);
|
mapObj.put("data", poiObj);
|
} else if (func.equals(func2)) {
|
mapObj.put("func", func2);
|
String aroundPoi = agentService.getAgentAroundPoi(place, type, radius, queryFiled, typeFiled);
|
JSONArray dataArray = JSONArray.parseArray(aroundPoi);
|
System.out.println("aroundPoi: " + dataArray);
|
mapObj.put("data", dataArray);
|
} else if (func.equals(func3)) {
|
mapObj.put("func", func3);
|
String filedString= xzService.getQueryMeta(xzConfig.layerId, xzConfig.dbid,typeFiled,xzConfig.queryEntity);
|
JSONObject metaObject = JSON.parseObject(filedString);
|
JSONArray dataArray = metaObject.getJSONArray("data");
|
String markDown = "| 数据类型 | 数据量 |\\n|------|------|\\n";
|
for (int i = 0; i < dataArray.size(); i++) {
|
JSONObject dataObj = dataArray.getJSONObject(i);
|
System.out.println("rec queryMeta:" + dataObj);
|
String[] filedValue = new String[2];
|
|
for (String key : dataObj.keySet()) {
|
if (key == typeFiled) {
|
filedValue[0] = dataObj.getString(key);
|
} else {
|
filedValue[1] = dataObj.getString(key);
|
}
|
}
|
markDown += "| " + filedValue[0] + " | " + filedValue[1] + " |\n";
|
}
|
mapObj.put("data", markDown);
|
}
|
|
hashMap.put("content", mapObj);
|
return R.ok(hashMap);
|
|
} else {
|
String ragInfo = agentService.getAgentIntention(url, chart, msg);
|
JSONObject jsonObject = JSON.parseObject(ragInfo);
|
String answer = jsonObject.getString("content");
|
System.out.println("Answer: " + answer);
|
hashMap.put("content", answer);
|
hashMap.put("type", "Rag");
|
return R.ok(hashMap);
|
}
|
|
// return R.error("未查询到相关信息");
|
|
}
|
|
|
}
|