suerprisePlus
2024-09-05 cc3a00f52f356c893d9f21798e9e941bb9533d10
接口配置,添加agent意图接口
已添加4个文件
已修改18个文件
280 ■■■■■ 文件已修改
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/OllamaAiApplication.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/config/XzConfig.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/controller/XzController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/controller/agentController.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/service/AgentService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/service/XzService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/util/EntityHttpUtil.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/application.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/OllamaAiApplication.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/config/XzConfig.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/controller/XzController.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/controller/agentController.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/postgis/GeometryDeserializer.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/service/AgentService.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/service/XzService.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/util/EntityHttpUtil.class 补丁 | 查看 | 原始文档 | blame | 历史
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
target/ollama-ai-0.0.1-SNAPSHOT.jar 补丁 | 查看 | 原始文档 | blame | 历史
target/ollama-ai-0.0.1-SNAPSHOT.jar.original 补丁 | 查看 | 原始文档 | blame | 历史
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.class
Binary files differ
target/classes/com/yb/config/XzConfig.class
Binary files differ
target/classes/com/yb/controller/XzController.class
Binary files differ
target/classes/com/yb/controller/agentController.class
Binary files differ
target/classes/com/yb/postgis/GeometryDeserializer.class
Binary files differ
target/classes/com/yb/service/AgentService.class
Binary files differ
target/classes/com/yb/service/XzService.class
Binary files differ
target/classes/com/yb/util/EntityHttpUtil.class
Binary 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.jar
Binary files differ
target/ollama-ai-0.0.1-SNAPSHOT.jar.original
Binary files differ