From 2dfd5babd51701a9cdad4cab201357159b33ea5e Mon Sep 17 00:00:00 2001 From: wangxun Date: Thu, 3 Jul 2025 14:04:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=99=BA=E8=83=BD=E4=BD=93=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3(=E8=AF=AD=E4=B9=89=E5=A4=A7=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=B0=8F=E5=8A=A9=E6=89=8B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/InfraredController.java | 5 +- .../simulator/domain/assistant/Answer.java | 10 ++ .../simulator/domain/assistant/Assistant.java | 16 +++ .../domain/assistant/AssistantResponse.java | 17 +++ .../assistant/AssistantResponseData.java | 15 +++ .../simulator/domain/assistant/Session.java | 17 +++ .../domain/assistant/SessionResponse.java | 14 +++ .../domain/assistant/SessionResponseData.java | 17 +++ .../simulator/service/ModelService.java | 3 + .../service/impl/ModelServiceImpl.java | 109 ++++++++++++++++++ 10 files changed, 221 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/inspect/simulator/domain/assistant/Answer.java create mode 100644 src/main/java/com/inspect/simulator/domain/assistant/Assistant.java create mode 100644 src/main/java/com/inspect/simulator/domain/assistant/AssistantResponse.java create mode 100644 src/main/java/com/inspect/simulator/domain/assistant/AssistantResponseData.java create mode 100644 src/main/java/com/inspect/simulator/domain/assistant/Session.java create mode 100644 src/main/java/com/inspect/simulator/domain/assistant/SessionResponse.java create mode 100644 src/main/java/com/inspect/simulator/domain/assistant/SessionResponseData.java diff --git a/src/main/java/com/inspect/simulator/controller/InfraredController.java b/src/main/java/com/inspect/simulator/controller/InfraredController.java index f162ea5..179f540 100644 --- a/src/main/java/com/inspect/simulator/controller/InfraredController.java +++ b/src/main/java/com/inspect/simulator/controller/InfraredController.java @@ -3,6 +3,7 @@ package com.inspect.simulator.controller; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A; import com.inspect.simulator.domain.Infrared.*; +import com.inspect.simulator.domain.assistant.Session; import com.inspect.simulator.domain.bigmodelr.Multimodal; import com.inspect.simulator.hikVision.utils.StringUtils; @@ -171,9 +172,9 @@ public class InfraredController { @PostMapping("/ir/semanticsModel") @ResponseBody - public AjaxResult semanticsModel(@RequestBody Multimodal multimodal) + public AjaxResult semanticsModel(@RequestBody Session sessionInfo) { - String string = modelService.semanticsModel(multimodal); + String string = modelService.intelligentAssistant(sessionInfo); return AjaxResult.success().put("data", string); } diff --git a/src/main/java/com/inspect/simulator/domain/assistant/Answer.java b/src/main/java/com/inspect/simulator/domain/assistant/Answer.java new file mode 100644 index 0000000..a254fef --- /dev/null +++ b/src/main/java/com/inspect/simulator/domain/assistant/Answer.java @@ -0,0 +1,10 @@ +package com.inspect.simulator.domain.assistant; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Answer { + private String output; +} diff --git a/src/main/java/com/inspect/simulator/domain/assistant/Assistant.java b/src/main/java/com/inspect/simulator/domain/assistant/Assistant.java new file mode 100644 index 0000000..81cb38d --- /dev/null +++ b/src/main/java/com/inspect/simulator/domain/assistant/Assistant.java @@ -0,0 +1,16 @@ +package com.inspect.simulator.domain.assistant; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Assistant { + + private String agentId; + private String agentVersion; + +} diff --git a/src/main/java/com/inspect/simulator/domain/assistant/AssistantResponse.java b/src/main/java/com/inspect/simulator/domain/assistant/AssistantResponse.java new file mode 100644 index 0000000..2721566 --- /dev/null +++ b/src/main/java/com/inspect/simulator/domain/assistant/AssistantResponse.java @@ -0,0 +1,17 @@ +package com.inspect.simulator.domain.assistant; + + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.*; + +@Getter +@Setter +@JsonIgnoreProperties(ignoreUnknown = true) +public class AssistantResponse { + private String code; + private String message; + private AssistantResponseData data; + private Boolean success; + + +} diff --git a/src/main/java/com/inspect/simulator/domain/assistant/AssistantResponseData.java b/src/main/java/com/inspect/simulator/domain/assistant/AssistantResponseData.java new file mode 100644 index 0000000..faebcfc --- /dev/null +++ b/src/main/java/com/inspect/simulator/domain/assistant/AssistantResponseData.java @@ -0,0 +1,15 @@ +package com.inspect.simulator.domain.assistant; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AssistantResponseData { + + private String sessionId; + private String traceId; + +} diff --git a/src/main/java/com/inspect/simulator/domain/assistant/Session.java b/src/main/java/com/inspect/simulator/domain/assistant/Session.java new file mode 100644 index 0000000..971a900 --- /dev/null +++ b/src/main/java/com/inspect/simulator/domain/assistant/Session.java @@ -0,0 +1,17 @@ +package com.inspect.simulator.domain.assistant; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Session { + + private String agentId; + private String agentVersion; + private String sessionId; + private String text; + private boolean stream; +} diff --git a/src/main/java/com/inspect/simulator/domain/assistant/SessionResponse.java b/src/main/java/com/inspect/simulator/domain/assistant/SessionResponse.java new file mode 100644 index 0000000..4bf209d --- /dev/null +++ b/src/main/java/com/inspect/simulator/domain/assistant/SessionResponse.java @@ -0,0 +1,14 @@ +package com.inspect.simulator.domain.assistant; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.*; + +@Getter +@Setter +@JsonIgnoreProperties(ignoreUnknown = true) +public class SessionResponse { + private String code; + private String message; + private Boolean success; + private SessionResponseData data; +} diff --git a/src/main/java/com/inspect/simulator/domain/assistant/SessionResponseData.java b/src/main/java/com/inspect/simulator/domain/assistant/SessionResponseData.java new file mode 100644 index 0000000..5cab02f --- /dev/null +++ b/src/main/java/com/inspect/simulator/domain/assistant/SessionResponseData.java @@ -0,0 +1,17 @@ +package com.inspect.simulator.domain.assistant; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.*; + +@Setter +@Getter +@JsonIgnoreProperties(ignoreUnknown = true) +public class SessionResponseData { + + private String traceId; + private String answer; + private String messageId; + private boolean isEnd; + private Object metadata; + private String conversationId; +} diff --git a/src/main/java/com/inspect/simulator/service/ModelService.java b/src/main/java/com/inspect/simulator/service/ModelService.java index 9b805db..8a0d049 100644 --- a/src/main/java/com/inspect/simulator/service/ModelService.java +++ b/src/main/java/com/inspect/simulator/service/ModelService.java @@ -1,6 +1,7 @@ package com.inspect.simulator.service; +import com.inspect.simulator.domain.assistant.Session; import com.inspect.simulator.domain.bigmodelr.Multimodal; import com.inspect.simulator.domain.bigmodelr.VisualModel; @@ -12,5 +13,7 @@ public interface ModelService { public String semanticsModel(Multimodal multimodal); + //智能体服务接口(语义大模型小助手) + public String intelligentAssistant(Session session); } diff --git a/src/main/java/com/inspect/simulator/service/impl/ModelServiceImpl.java b/src/main/java/com/inspect/simulator/service/impl/ModelServiceImpl.java index 1436b1a..7beadd6 100644 --- a/src/main/java/com/inspect/simulator/service/impl/ModelServiceImpl.java +++ b/src/main/java/com/inspect/simulator/service/impl/ModelServiceImpl.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; +import com.inspect.simulator.domain.assistant.*; import com.inspect.simulator.domain.bigmodelr.*; import com.inspect.simulator.service.ModelService; import okhttp3.*; @@ -127,6 +128,114 @@ public class ModelServiceImpl implements ModelService { + //智能体服务接口(语义大模型小助手) + public String intelligentAssistant(Session session) { + + String answer = ""; + try { + // 构建请求JSON + Assistant request = buildAssistantBody(); + // 发送请求并获取响应 + AssistantResponse response = assistantResponse(request); + String sessionId = response.getData().getSessionId(); + System.out.println("会话sessionId:" + sessionId); + + if (StringUtils.isNotEmpty(sessionId)) { + //调用智能体会话 + Session sessionRequest = new Session(); + sessionRequest.setText(session.getText()); + sessionRequest.setSessionId(sessionId); + Session sessionBody = buildSessionBody(sessionRequest); + + SessionResponse sessionResponse = sessionResponse(sessionBody); + Answer answerReturn = new Gson().fromJson(sessionResponse.getData().getAnswer(), Answer.class); + answer=answerReturn.getOutput(); + System.out.println("智能体服务API此次会话回复内容: " + answerReturn.getOutput()); + } + + return answer; + } catch (IOException e) { + } + return "请求处理失败"; + } + + private Assistant buildAssistantBody() { + Assistant assistantRequest = new Assistant(); + assistantRequest.setAgentId("61e44de3-f6a0-4f3c-ac7e-8cf9941e8ff0"); +// assistantRequest.setAgentVersion("v1"); + return assistantRequest; + } + + private AssistantResponse assistantResponse(Assistant request) throws IOException { + String requestBody; + try { + requestBody = objectMapper.writeValueAsString(request); + } catch (JsonProcessingException e) { + throw new IOException("请求体序列化失败", e); + } + + Request httpRequest = new Request.Builder() + .url("http://25.80.45.92:18063/lmp-cloud-ias-server/api/session/create") + .post(RequestBody.create(MediaType.parse("application/json"), requestBody)) + .addHeader("Authorization", "Bearer 54c1ae2c5fd54afe85e74d6fe9161f7f") + .addHeader("Content-Type", "application/json") + .build(); + + try (Response response = httpClient.newCall(httpRequest).execute()) { + if (!response.isSuccessful()) { + String errorBody = response.body() != null ? response.body().string() : "无响应体"; + throw new IOException(String.format("请求失败,状态码: %d,错误信息: %s", response.code(), errorBody)); + } + String responseBody = response.body().string(); + System.out.println("智能体服务接口Api返回: " + responseBody); + return objectMapper.readValue(responseBody, AssistantResponse.class); + + } catch (SocketTimeoutException e) { + throw new IOException("请求超时,请检查网络连接或增加超时时间", e); + } + } + + + private Session buildSessionBody(Session session) { + Session sessionRequest = new Session(); + sessionRequest.setAgentId("61e44de3-f6a0-4f3c-ac7e-8cf9941e8ff0"); +// sessionRequest.setAgentVersion("v1"); + sessionRequest.setSessionId(session.getSessionId()); + sessionRequest.setText(session.getText()); + sessionRequest.setStream(false); + return sessionRequest; + } + + private SessionResponse sessionResponse(Session session) throws IOException { + String requestBody; + try { + requestBody = objectMapper.writeValueAsString(session); + } catch (JsonProcessingException e) { + throw new IOException("请求体序列化失败", e); + } + + Request httpRequest = new Request.Builder() + .url("http://25.80.45.92:18063/lmp-cloud-ias-server/api/session/run") + .post(RequestBody.create(MediaType.parse("application/json"), requestBody)) + .addHeader("Authorization", "Bearer 54c1ae2c5fd54afe85e74d6fe9161f7f") + .addHeader("Content-Type", "application/json") + .build(); + + try (Response response = httpClient.newCall(httpRequest).execute()) { + if (!response.isSuccessful()) { + String errorBody = response.body() != null ? response.body().string() : "无响应体"; + throw new IOException(String.format("请求失败,状态码: %d,错误信息: %s", response.code(), errorBody)); + } + String responseBody = response.body().string(); + System.out.println("会话api响应内容: " + responseBody); + return objectMapper.readValue(responseBody, SessionResponse.class); + + } catch (SocketTimeoutException e) { + throw new IOException("请求超时,请检查网络连接或增加超时时间", e); + } + } + +