pom.xml
@@ -5,7 +5,7 @@ <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.13</version> <version>2.3.7.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.yb</groupId> src/main/java/com/yb/OllamaAiApplication.java
@@ -6,7 +6,7 @@ @SpringBootApplication //@EnableSwagger2 @EnableSwagger2 public class OllamaAiApplication { public static void main(String[] args) { src/main/java/com/yb/config/XzConfig.java
@@ -7,8 +7,9 @@ @Component public class XzConfig { // å°çå®ä½ @Value("${spring.geographical.canview}") public String canview; public String canview; @Value("${spring.geographical.entityName}") public String entityName; @Value("${spring.geographical.dbid}") @@ -21,5 +22,14 @@ public String publickey; @Value("${spring.geographical.token}") public String token; // Agent @Value("${spring.agent.agentUrl}") public String agentUrl; @Value("${spring.agent.agentRag}") public String agentRag; @Value("${spring.agent.agentIntent}") public String agentIntent; @Value("${spring.agent.agentChat}") public String agentChat; } src/main/java/com/yb/controller/XzController.java
@@ -7,6 +7,8 @@ import com.yb.config.XzConfig; import com.yb.entity.ReqEntity; 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.springframework.beans.factory.annotation.Autowired; @@ -18,6 +20,7 @@ @Tag(name = "æ°æºæ¥å£") @RestController @RequestMapping("/api/v1") @Api(tags = "ä¸ä¸ªæå¾") public class XzController { @Autowired WebSocketController webSocketController; @@ -26,6 +29,8 @@ @Autowired private XzConfig xzConfig; @ApiOperation("æ¾ç¤ºå°ç¹") @PostMapping("/poiMap") @Operation(summary = "æ¾ç¤ºå°ç¹") public R poiMap(@RequestParam Map<String, String> allParams) throws Exception { @@ -48,7 +53,7 @@ webSocketController.sendAllMessage(message); return R.ok(hash); } @ApiOperation("å¨è¾¹å±æ§æ¥è¯¢") @PostMapping("/aroundPoi") @Operation(summary = "å¨è¾¹å±æ§æ¥è¯¢") public R aroundPoi(@RequestParam Map<String, String> allParams) throws Exception { @@ -92,7 +97,7 @@ webSocketController.sendAllMessage(message); return R.ok(hash); } @ApiOperation("å ä¿¡æ¯æ¥è¯¢") @PostMapping("/queryMeta") @Operation(summary = "å ä¿¡æ¯æ¥è¯¢") public R queryMeta(@RequestParam Map<String, String> allParams) { src/main/java/com/yb/controller/agentController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,149 @@ 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("æªæ¥è¯¢å°ç¸å ³ä¿¡æ¯"); } } src/main/java/com/yb/service/AgentService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,53 @@ package com.yb.service; import com.alibaba.fastjson.JSONObject; import com.yb.config.XzConfig; import com.yb.entity.ReqEntity; import com.yb.util.EntityHttpUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class AgentService { @Autowired private EntityHttpUtil entityHttpUtil; @Autowired private XzService xzService; @Autowired private XzConfig xzConfig; // Agent_Ragæå¡è°ç¨ public String getAgentRag(String url, String api, String sessionId, String libId, String msg) throws Exception { String http = url + api + "?session_id=" + sessionId + "&lib_id=" + libId + "&message=" + msg; System.out.println("rec getAgentRag:" + http); String obj = entityHttpUtil.getAgentMessage(http); System.out.println("rec getAgentRag:" + obj); return obj; } public String getAgentIntention(String url, String api, String msg) throws Exception { String http = url + api + "?message=" + msg; System.out.println("rec getMessage:" + http); String obj = entityHttpUtil.getAgentMessage(http); System.out.println("rec getMessage:" + obj); return obj; } // public String getAgentPoiMap(String func, String filed) throws Exception { String poiObj= xzService.getQueryFiled(func, filed, xzConfig.layerId, xzConfig.dbid, xzConfig.queryEntity); System.out.println("rec poiMap:" + poiObj); return poiObj; } public String getAgentAroundPoi(String place, String type, int dis, String filed, String typeFiled) throws Exception { String item = xzService.getQueryFiled(place, filed, xzConfig.layerId, xzConfig.dbid, xzConfig.queryEntity); JSONObject obj = JSONObject.parseObject(item); Double lon = Double.parseDouble(obj.getString("lon")); Double lat = Double.parseDouble(obj.getString("lat")); String wkt = xzService.getWKt(lon, lat, dis); return xzService.getQueryAround(type, wkt, typeFiled, xzConfig.layerId, xzConfig.dbid, xzConfig.queryEntity); } } src/main/java/com/yb/service/XzService.java
@@ -24,6 +24,8 @@ private XzConfig xzConfig; @Autowired private EntityHttpUtil entityHttpUtil; @Autowired private AgentService agentService; // å ³é®åæ¥è¯¢ public String getQueryFiled(String place, String filed, String layerId, String dbId, String queryEntity) throws Exception { @@ -32,10 +34,15 @@ String encrypt = RsaHelper.encrypt(key, query); HashMap formData = getHashMap(layerId, dbId, "1", "0", encrypt, null); String jsonString = entityHttpUtil.getPostMessage(queryEntity, formData); System.out.println("rec getQueryFiled:" + jsonString); JSONObject jsonObject = JSON.parseObject(jsonString); JSONObject dataObjject = jsonObject.getJSONObject("data"); JSONArray dataArray = dataObjject.getJSONArray("items"); return dataArray.getJSONObject(0).toString(); if (dataArray.size() > 0) { return dataArray.getJSONObject(0).toString(); } return ""; } // èå´æ¥è¯¢ @@ -59,10 +66,10 @@ staticField.put("field", filed); staticField.put("outfield", "count_" + filed); jsonArray.add(staticField); HashMap<String, String> formData = getHashMap(layerId,dbid,null,null,null,null); HashMap<String, String> formData = getHashMap(layerId, dbid, null, null, null, null); formData.put("statistics", jsonArray.toString()); formData.put("groupby", filed); return entityHttpUtil.getPostMessage(entity, formData); return entityHttpUtil.getPostMessage(entity, formData); } // è·åè¿åä¿¡æ¯Map src/main/java/com/yb/util/EntityHttpUtil.java
@@ -41,6 +41,25 @@ } return null; } public String getAgentMessage(String aurl){ try{ OkHttpClient client = new OkHttpClient.Builder().connectTimeout(0, TimeUnit.SECONDS) .readTimeout(0, TimeUnit.SECONDS) .writeTimeout(0, TimeUnit.SECONDS) .build(); Request request = new Request.Builder() .url(aurl) .build(); Response response = client.newCall(request).execute(); return response.body().string(); }catch (IOException e){ System.out.println(e.getMessage()); } return null; } public String getPostMessage(String aurl, HashMap<String,String> parms){ try{ String axiosUrl = url+aurl; src/main/resources/application.yml
@@ -31,6 +31,11 @@ # å®ä½åºdbid layerId: a61f2f8f-0bf9-422f-86fe-b7b0a30ebad9 agent: agentUrl: http://106.120.22.26:5367 agentIntent: /intention agentRag: /rag agentChat: /onlyChat application: name: ollama-ai ai: @@ -39,7 +44,8 @@ chat: # model: yi:9b-chat-v1.5-q4_0 model: qwen2:1.5b intent: http://106.120.22.26:5368/intention?message fastgpt: appid: 6673bfa1d14da0cede023f28 apikey: fastgpt-eNuz6Rsc5EMrYMiODBQbBXCbGwQYp9nSpYPE06vBBt3nitnFLdHSoQ0BAmNHDyB target/classes/application.yml
@@ -31,6 +31,11 @@ # å®ä½åºdbid layerId: a61f2f8f-0bf9-422f-86fe-b7b0a30ebad9 agent: agentUrl: http://106.120.22.26:5367 agentIntent: /intention agentRag: /rag agentChat: /onlyChat application: name: ollama-ai ai: @@ -39,7 +44,8 @@ chat: # model: yi:9b-chat-v1.5-q4_0 model: qwen2:1.5b intent: http://106.120.22.26:5368/intention?message fastgpt: appid: 6673bfa1d14da0cede023f28 apikey: fastgpt-eNuz6Rsc5EMrYMiODBQbBXCbGwQYp9nSpYPE06vBBt3nitnFLdHSoQ0BAmNHDyB target/classes/com/yb/OllamaAiApplication.classBinary files differ
target/classes/com/yb/config/XzConfig.classBinary files differ
target/classes/com/yb/controller/XzController.classBinary files differ
target/classes/com/yb/controller/agentController.classBinary files differ
target/classes/com/yb/postgis/GeometryDeserializer.classBinary files differ
target/classes/com/yb/service/AgentService.classBinary files differ
target/classes/com/yb/service/XzService.classBinary files differ
target/classes/com/yb/util/EntityHttpUtil.classBinary files differ
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -19,6 +19,7 @@ com\yb\message\WebSocketStompConfig.class com\yb\service\GisOsmPoisFree1Service.class com\yb\controller\TMetaController.class com\yb\service\AgentService.class com\yb\dao\GisOsmPoisFree1Dao.class com\yb\postgis\PointTypeHandler.class com\yb\util\EntityHttpUtil.class @@ -33,3 +34,4 @@ com\yb\config\PageUtils.class com\yb\controller\XzController.class com\yb\service\TMetaService.class com\yb\controller\agentController.class target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -2,6 +2,7 @@ E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\config\SQLFilter.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\config\XzConfig.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\util\OkHttpUtil.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\config\Swagger3Config.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\postgis\PointTypeHandler.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\controller\TMetaController.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\entity\ResponseEntity.java @@ -20,10 +21,12 @@ E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\controller\WebSocketController.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\dao\TMetaDao.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\message\WebSocketStompConfig.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\service\AgentService.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\helper\RsaHelper.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\message\WebSocketServer.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\config\R.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\postgis\AbstractGeometryTypeHandler.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\controller\agentController.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\postgis\GeometrySerializer.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\config\PageUtils.java E:\project\AI大模å\æ°æºå¯¹æ¥\ollama_ai\src\main\java\com\yb\service\TMetaService.java target/ollama-ai-0.0.1-SNAPSHOT.jarBinary files differ
target/ollama-ai-0.0.1-SNAPSHOT.jar.originalBinary files differ