package com.yb.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.core.JsonParser; import com.yb.config.R; import com.yb.config.XzConfig; import com.yb.service.AgentService; import com.yb.service.IntentionService; import com.yb.util.EntityHttpUtil; 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.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Tag(name = "Agent意图") @RestController @RequestMapping("/api/agent") @Api(tags = "Agent意图") @Component public class agentController { @Autowired private XzConfig xzConfig; @Autowired private AgentService agentService; @Autowired private IntentionService intentionService; @Autowired private EntityHttpUtil entityHttpUtil; @ApiOperation("意图识别") @PostMapping("/intention") @Operation(summary = "意图识别") public R getIntention(@RequestParam Map allParams) throws Exception { System.out.println("rec getMessage:" + allParams); String msg = allParams.get("message"); // 判断msg是否为空 if (StringUtils.isEmpty(msg)) { String info = agentService.getAgentIntention(xzConfig.agentUrl, xzConfig.agentIntent, "''"); 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 hashMap = new HashMap(); if (isMap) { hashMap.put("type", "Map"); String funcInfo = agentService.getAgentIntention(xzConfig.agentUrl, xzConfig.agentIntent, 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); } // 意图函数匹配 HashMap mapObj = intentionService.getFunctionMatch(orderString, allParams); // hashMap.put("place",place) String args = JSONObject.parseObject(orderString).getString("args"); if(args!= null){ String place = JSONObject.parseObject(args).getString("place"); mapObj.put("place",place); } hashMap.put("content", mapObj); return R.ok(hashMap); } else { String ragInfo1 = agentService.getAgentRag(xzConfig.agentUrl, xzConfig.agentRag, allParams.get("session_id"), allParams.get("lib_id"), msg); System.out.println("rec rag:" + ragInfo1); if (ragInfo1.equals("")) { String ragInfo = agentService.getAgentIntention(xzConfig.agentUrl, xzConfig.agentChat, 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); } else { JSONObject jsonObject1 = JSON.parseObject(ragInfo1); String answer1 = jsonObject1.getString("content"); System.out.println("Answer: " + answer1); String jso = JSONObject.parseObject(answer1).getString("answer"); String context = JSONObject.parseObject(answer1).getString("context"); if (context != "") { hashMap.put("fileSrource", JSON.parseArray(context)); } hashMap.put("content", jso); hashMap.put("type", "Rag"); return R.ok(hashMap); } } } @ApiOperation("获取图层列表") @GetMapping("/layerList") @Operation(summary = "获取图层列表") public R getLayerList() throws Exception { HashMap formData = new HashMap<>(); formData.put("token", xzConfig.token); formData.put("dbid", xzConfig.dbid); String obj = entityHttpUtil.getPostMessage(xzConfig.permissionLayer, formData); System.out.println("layerList: " + obj); HashMap hashMap = new HashMap(); String layers = JSON.parseObject(JSONObject.parseObject(obj).getString("data")).getString("layers"); JSONArray dataArray = JSONArray.parseArray(layers); ArrayList list = new ArrayList<>(); for (int i = 0; i < dataArray.size(); i++) { JSONObject itmObj = JSONObject.parseObject(dataArray.get(i).toString()); String item = itmObj.getString("dataformat"); String id = itmObj.getString("id"); if (item.equals("entity")) { HashMap itmHash = new HashMap<>(); String name = itmObj.getString("name"); String url = itmObj.getString("lod_url"); if (url != null) { String url3d = JSONObject.parseObject(url).getString("3d"); if (url3d != null) { String l1 = JSONObject.parseObject(url3d).getString("l0"); itmHash.put("url", l1); itmHash.put("sourceType", "Tileset"); itmHash.put("name", name); itmHash.put("id", id); list.add(itmHash); } } } } System.out.println("layerList: " + list); hashMap.put("data", list); return R.ok(hashMap); } }