Browse Source

智能体服务接口(语义大模型小助手)

master
wangxun 5 months ago
parent
commit
2dfd5babd5
10 changed files with 221 additions and 2 deletions
  1. +3
    -2
      src/main/java/com/inspect/simulator/controller/InfraredController.java
  2. +10
    -0
      src/main/java/com/inspect/simulator/domain/assistant/Answer.java
  3. +16
    -0
      src/main/java/com/inspect/simulator/domain/assistant/Assistant.java
  4. +17
    -0
      src/main/java/com/inspect/simulator/domain/assistant/AssistantResponse.java
  5. +15
    -0
      src/main/java/com/inspect/simulator/domain/assistant/AssistantResponseData.java
  6. +17
    -0
      src/main/java/com/inspect/simulator/domain/assistant/Session.java
  7. +14
    -0
      src/main/java/com/inspect/simulator/domain/assistant/SessionResponse.java
  8. +17
    -0
      src/main/java/com/inspect/simulator/domain/assistant/SessionResponseData.java
  9. +3
    -0
      src/main/java/com/inspect/simulator/service/ModelService.java
  10. +109
    -0
      src/main/java/com/inspect/simulator/service/impl/ModelServiceImpl.java

+ 3
- 2
src/main/java/com/inspect/simulator/controller/InfraredController.java View File

@ -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);
}


+ 10
- 0
src/main/java/com/inspect/simulator/domain/assistant/Answer.java View File

@ -0,0 +1,10 @@
package com.inspect.simulator.domain.assistant;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Answer {
private String output;
}

+ 16
- 0
src/main/java/com/inspect/simulator/domain/assistant/Assistant.java View File

@ -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;
}

+ 17
- 0
src/main/java/com/inspect/simulator/domain/assistant/AssistantResponse.java View File

@ -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;
}

+ 15
- 0
src/main/java/com/inspect/simulator/domain/assistant/AssistantResponseData.java View File

@ -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;
}

+ 17
- 0
src/main/java/com/inspect/simulator/domain/assistant/Session.java View File

@ -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;
}

+ 14
- 0
src/main/java/com/inspect/simulator/domain/assistant/SessionResponse.java View File

@ -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;
}

+ 17
- 0
src/main/java/com/inspect/simulator/domain/assistant/SessionResponseData.java View File

@ -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;
}

+ 3
- 0
src/main/java/com/inspect/simulator/service/ModelService.java View File

@ -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);
}

+ 109
- 0
src/main/java/com/inspect/simulator/service/impl/ModelServiceImpl.java View File

@ -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);
}
}


Loading…
Cancel
Save