Commit b61b4e32 authored by 赵灿灿's avatar 赵灿灿

修改配置信息

parent 05b75a64
Pipeline #21037 passed with stages
in 3 minutes and 2 seconds
...@@ -60,6 +60,7 @@ import java.util.concurrent.TimeUnit; ...@@ -60,6 +60,7 @@ import java.util.concurrent.TimeUnit;
@RequestMapping("/api/langchain") @RequestMapping("/api/langchain")
public class LangChainController { public class LangChainController {
@Autowired @Autowired
private Auth auth; private Auth auth;
...@@ -278,75 +279,80 @@ public class LangChainController { ...@@ -278,75 +279,80 @@ public class LangChainController {
//调用智能体 //调用智能体
@GetMapping("/sseIntelligent") @GetMapping("/sseIntelligent")
public ResponseEntity<SseEmitter> sse(@RequestParam String chatMessage) { public ResponseEntity<SseEmitter> sse(@RequestParam String chatMessage,@RequestParam String dialogId) {
// curl http://10.32.41.228:39080/v1/chat/completions -X POST logger.info("开始调用1");
// -H "Content-Type:application/json;charset=UTF-8" //String urlAddr = "http://10.32.41.35:40517/scene_gateway/agent/6809d0895428476bb6789ad70c525c97";
// -H "AI-API-CODE:usOPREkI33" -H "AI-APP-KEY:vXRDti1mJg" String urlAddr = "http://10.32.41.35:40517/scene_gateway/agent/83f77143b09c461993dd9a7db403eb94";
// --data '{"stream":false,"model":"Qwen1.5-32B-NPU910B","messages":[{"role":"user","content":""}]} ' SseEmitter emitter = new SseEmitter(0L);
String urlAddr = "http://10.32.41.35:40517/scene_gateway/agent/6809d0895428476bb6789ad70c525c97"; QuestionRequest questionRequest=new QuestionRequest();
BufferedReader reader = null; questionRequest.setKeyword(chatMessage);
questionRequest.setRequestId(getRequestId());
questionRequest.setDialogId(dialogId);
String params = JsonUtils.objectToJson(questionRequest);
new Thread(() -> {
HttpURLConnection connection = null;
try { try {
URL url = new URL(urlAddr); URL url = new URL(urlAddr);
// 建立链接 // 建立链接
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection = (HttpURLConnection) url.openConnection();
String responseEntity="";
QuestionRequest questionRequest=new QuestionRequest();
questionRequest.setKeyword(chatMessage);
// (yyyyMMddHHmmssSSS)+6位随机数;
Random random = new Random();
Integer min = 100000; // 最小值(6位起始)
Integer max = 999999; // 最大值(6位结束)
// 生成范围:min <= num <= max
Integer randomNum = random.nextInt(max - min + 1) + min;
String currentDay = DateTool.format(new Date(), "yyyyMMddHHmmssSSS");
connection.setRequestMethod("GET"); connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "text/event-stream"); //connection.setRequestProperty("AuthToken", "4009fe23e6b648539792330c14f5ed8e");
connection.setRequestProperty("Content-type", "application/json; charset=UTF-8"); connection.setRequestProperty("AuthToken", "fc40db5b7abe47dabfe1899e61fde2d7");
connection.setRequestProperty("AuthToken", "4009fe23e6b648539792330c14f5ed8e");
connection.setRequestProperty("Cache-Control", "no-cache");
connection.setRequestProperty("Connection", "keep-alive");
questionRequest.setRequestId(currentDay+randomNum.toString());
questionRequest.setDialogId(currentDay+randomNum.toString());
String params = JsonUtils.objectToJson(questionRequest);
// 允许输入和输出 // 允许输入和输出
connection.setDoInput(true); connection.setDoInput(true);
connection.setDoOutput(true); connection.setDoOutput(true);
// 设置超时为0,表示无限制 // 设置超时为0,表示无限制
connection.setConnectTimeout(0); connection.setConnectTimeout(0);
connection.setReadTimeout(0); connection.setReadTimeout(0);
// 传参
//String params = "prompt=哈哈哈哈"; logger.info(params);
// 写入POST数据 try (OutputStream os = connection.getOutputStream()) {
DataOutputStream out = new DataOutputStream(connection.getOutputStream()); os.write(params.getBytes(StandardCharsets.UTF_8));
out.write(params.getBytes(StandardCharsets.UTF_8)); os.flush();
out.flush(); }
out.close(); logger.info("开始调用2");
// 读取SSE事件 // 检查响应码
reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); int responseCode = connection.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK) {
emitter.completeWithError(new RuntimeException("SSE 连接失败: " + responseCode));
return;
}
logger.info("开始调用3");
// 持续读取 SSE 数据流
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
String line; String line;
SseEmitter emitter = new SseEmitter();
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
System.out.println(line); logger.info(line);
emitter.send(SseEmitter.event().data(line)); if (!line.startsWith("data:CALLBACK#")) {
if (line.startsWith("data:")) {
String data = line.substring(5).trim();
if("stop".equals(data))
{
emitter.send(SseEmitter.event().data("stop"),MediaType.parseMediaType("application/json; charset=UTF-8"));
}else
{
emitter.send(SseEmitter.event().data(data), MediaType.parseMediaType("application/json; charset=UTF-8"));
} }
reader.close();
System.out.println(" __stop__"); }
emitter.send(SseEmitter.event().data(" __stop__")); }
emitter.complete(); }
// 断开链接 }
connection.disconnect(); emitter.complete(); // 流结束
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_EVENT_STREAM_VALUE)
.body(emitter);
} catch (Exception e) { } catch (Exception e) {
emitter.completeWithError(e);
logger.info(e.getMessage()); logger.info(e.getMessage());
e.printStackTrace();
} finally { } finally {
if (connection != null) {
connection.disconnect();
}
}
}).start();
return ResponseEntity.ok() return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_EVENT_STREAM_VALUE) .header(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_EVENT_STREAM_VALUE)
.body( null); .body(emitter);
//IoUtils.copy(reader);
}
} }
...@@ -412,7 +418,7 @@ public class LangChainController { ...@@ -412,7 +418,7 @@ public class LangChainController {
//调用大模型接口 //调用大模型接口
@GetMapping("/sseQwen") @GetMapping("/sseQwen")
public ResponseEntity<SseEmitter> sseBigTwo(@RequestParam String chatMessage,@RequestParam String sessionId) { public ResponseEntity<SseEmitter> sseQwen(@RequestParam String chatMessage,@RequestParam String sessionId) {
String history= redisTool.get(sessionId); String history= redisTool.get(sessionId);
List<Map<String,Object>> historyList=new ArrayList<>(); List<Map<String,Object>> historyList=new ArrayList<>();
...@@ -474,6 +480,7 @@ public class LangChainController { ...@@ -474,6 +480,7 @@ public class LangChainController {
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
if (line.startsWith("data: ")) { if (line.startsWith("data: ")) {
String data = line.substring(5).trim(); String data = line.substring(5).trim();
logger.info(data);
QwenLine qwenLine= JsonUtils.jsonToObject(data,QwenLine.class); QwenLine qwenLine= JsonUtils.jsonToObject(data,QwenLine.class);
String lineContent=qwenLine.getChoices().get(0).getDelta().getContent(); String lineContent=qwenLine.getChoices().get(0).getDelta().getContent();
String lineFinish=qwenLine.getChoices().get(0).getFinish_reason(); String lineFinish=qwenLine.getChoices().get(0).getFinish_reason();
...@@ -491,8 +498,6 @@ public class LangChainController { ...@@ -491,8 +498,6 @@ public class LangChainController {
contentAssistant.append(lineContent); contentAssistant.append(lineContent);
emitter.send(SseEmitter.event().data(lineContent),MediaType.parseMediaType("application/json; charset=UTF-8")); emitter.send(SseEmitter.event().data(lineContent),MediaType.parseMediaType("application/json; charset=UTF-8"));
} }
logger.info(line);
logger.info(lineContent);
// 将数据转发给前端 // 将数据转发给前端
} }
} }
...@@ -516,7 +521,7 @@ public class LangChainController { ...@@ -516,7 +521,7 @@ public class LangChainController {
private static final CloseableHttpClient httpClient; private static final CloseableHttpClient httpClient;
private static final Logger log = LoggerFactory.getLogger(LangChainController.class);
static { static {
PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(); PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();
connManager.setMaxTotal(100); connManager.setMaxTotal(100);
...@@ -561,8 +566,8 @@ public class LangChainController { ...@@ -561,8 +566,8 @@ public class LangChainController {
}).start(); }).start();
// 超时和完成回调 // 超时和完成回调
emitter.onTimeout(() -> log.warn("SSE连接超时")); emitter.onTimeout(() -> logger.warn("SSE连接超时"));
emitter.onCompletion(() -> log.info("SSE连接完成")); emitter.onCompletion(() -> logger.info("SSE连接完成"));
return emitter; return emitter;
} }
...@@ -599,7 +604,7 @@ public class LangChainController { ...@@ -599,7 +604,7 @@ public class LangChainController {
// 统一异常处理 // 统一异常处理
private void handleException(Exception e, SseEmitter emitter) { private void handleException(Exception e, SseEmitter emitter) {
log.error("API调用异常", e); logger.error("API调用异常", e);
if (e instanceof SocketTimeoutException) { if (e instanceof SocketTimeoutException) {
emitter.completeWithError(new RuntimeException("连接DeepSeek服务超时")); emitter.completeWithError(new RuntimeException("连接DeepSeek服务超时"));
} else { } else {
...@@ -607,10 +612,34 @@ public class LangChainController { ...@@ -607,10 +612,34 @@ public class LangChainController {
} }
} }
//获取sessionId
@GetMapping("/getSessionId") @GetMapping("/getSessionId")
public Result getSessionId() { public Result getSessionId() {
return Result.successData(UUID.randomUUID().toString().replace("-", "")); return Result.successData(UUID.randomUUID().toString().replace("-", ""));
} }
//获取requestId
public String getRequestId() {
// (yyyyMMddHHmmssSSS)+6位随机数;
Random random = new Random();
Integer min = 100000; // 最小值(6位起始)
Integer max = 999999; // 最大值(6位结束)
// 生成范围:min <= num <= max
Integer randomNum = random.nextInt(max - min + 1) + min;
String currentDay = DateTool.format(new Date(), "yyyyMMddHHmmssSSS");
return currentDay+randomNum.toString();
}
//获取会话ID
@GetMapping("/getDialogId")
public Result getDialogId() {
// (yyyyMMddHHmmssSSS)+6位随机数;
Random random = new Random();
Integer min = 100000; // 最小值(6位起始)
Integer max = 999999; // 最大值(6位结束)
// 生成范围:min <= num <= max
Integer randomNum = random.nextInt(max - min + 1) + min;
String currentDay = DateTool.format(new Date(), "yyyyMMddHHmmssSSS");
return Result.successData(currentDay+randomNum.toString());
}
} }
...@@ -110,7 +110,8 @@ require(['jquery', 'vue', 'utils', 'echarts', 'global'], function ($, Vue, utils ...@@ -110,7 +110,8 @@ require(['jquery', 'vue', 'utils', 'echarts', 'global'], function ($, Vue, utils
// 会话相关方法 // 会话相关方法
async getSessionId() { async getSessionId() {
try { try {
const response = await fetch('../../api/langchain/getSessionId'); //const response = await fetch('../../api/langchain/getSessionId');
const response = await fetch('../../api/langchain/getDialogId');
const dataJson = await response.json(); const dataJson = await response.json();
this.sessionId = dataJson.data; this.sessionId = dataJson.data;
} catch (error) { } catch (error) {
...@@ -185,16 +186,14 @@ require(['jquery', 'vue', 'utils', 'echarts', 'global'], function ($, Vue, utils ...@@ -185,16 +186,14 @@ require(['jquery', 'vue', 'utils', 'echarts', 'global'], function ($, Vue, utils
messagesDiv.scrollTop = messagesDiv.scrollHeight; messagesDiv.scrollTop = messagesDiv.scrollHeight;
} }
}); });
// 连接SSE // 连接SSE
this.currentEventSource = new EventSource('../../api/langchain/sseBigTwo?chatMessage=' + encodeURIComponent(chatMessage) + "&sessionId=" + this.sessionId); this.currentEventSource = new EventSource('../../api/langchain/sseIntelligent?chatMessage=' + encodeURIComponent(chatMessage) + "&dialogId=" + this.sessionId);
let responseText = ''; let responseText = '';
this.currentEventSource.onmessage = (event) => { this.currentEventSource.onmessage = (event) => {
const data = JSON.parse(event.data); const data = JSON.parse(event.data);
const content = data.dataToSend[1].data; const content = data.dataToSend[1].data;
if (content !== "stop") { if (content !== "stop") {
responseText += content; responseText += content;
this.messages[aiMessageIndex].content = responseText; this.messages[aiMessageIndex].content = responseText;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment