From 45f335796224e811764810aa9a8d704422db90c6 Mon Sep 17 00:00:00 2001 From: wangxiangshun Date: Mon, 27 Oct 2025 22:09:57 +0800 Subject: [PATCH] =?UTF-8?q?AI=20=E6=8F=90=E9=97=AE=E8=BF=BD=E9=97=AE?= =?UTF-8?q?=E7=8E=AF=E5=A2=83demo,=E4=BB=A5=E5=8F=8A=E8=AF=84=E5=88=86?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vetti/socket/ChatWebSocketHandler.java | 30 +++++-------------- .../vetti/common/ai/gpt/ChatGPTClient.java | 14 +++++---- 2 files changed, 16 insertions(+), 28 deletions(-) diff --git a/vetti-admin/src/main/java/com/vetti/socket/ChatWebSocketHandler.java b/vetti-admin/src/main/java/com/vetti/socket/ChatWebSocketHandler.java index 191ec7e..5bb5670 100644 --- a/vetti-admin/src/main/java/com/vetti/socket/ChatWebSocketHandler.java +++ b/vetti-admin/src/main/java/com/vetti/socket/ChatWebSocketHandler.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.vetti.common.ai.elevenLabs.ElevenLabsClient; +import com.vetti.common.ai.gpt.ChatGPTClient; import com.vetti.common.ai.gpt.OpenAiStreamClient; import com.vetti.common.ai.gpt.service.OpenAiStreamListenerService; import com.vetti.common.ai.whisper.WhisperClient; @@ -145,7 +146,7 @@ public class ChatWebSocketHandler { String cacheResultText = cacheClientTts.get(clientId); log.info("面试者回答信息为:{}", cacheResultText); if (StrUtil.isEmpty(cacheResultText)) { - cacheResultText = "Hi."; + cacheResultText = "I am answering"; } String promptJson = ""; if("YES".equals(startFlag)) { @@ -294,27 +295,12 @@ public class ChatWebSocketHandler { cacheMsgMapData.put(session.getId(),""); } log.info("结束AI提示词为:{}",promptJson); - OpenAiStreamClient aiStreamClient = SpringUtils.getBean(OpenAiStreamClient.class); - aiStreamClient.streamChat(promptJson, new OpenAiStreamListenerService() { - @Override - public void onMessage(String content) { - log.info("返回AI结果:{}", content); - try { - //发送文件流数据 - session.getBasicRemote().sendText(content); - }catch (Exception e){ - e.printStackTrace(); - } - } - - @Override - public void onComplete() { - } - @Override - public void onError(Throwable throwable) { - throwable.printStackTrace(); - } - }); + ChatGPTClient gptClient = SpringUtils.getBean(ChatGPTClient.class); + String resultMsg = gptClient.handleAiChat(promptJson); + Map resultEntity = new HashMap<>(); + resultEntity.put("msg", resultMsg); + resultEntity.put("dataType","score"); + session.getBasicRemote().sendText(JSONUtil.toJsonStr(resultEntity)); } } } catch (Exception e) { diff --git a/vetti-common/src/main/java/com/vetti/common/ai/gpt/ChatGPTClient.java b/vetti-common/src/main/java/com/vetti/common/ai/gpt/ChatGPTClient.java index dc439ed..46189f5 100644 --- a/vetti-common/src/main/java/com/vetti/common/ai/gpt/ChatGPTClient.java +++ b/vetti-common/src/main/java/com/vetti/common/ai/gpt/ChatGPTClient.java @@ -1,5 +1,6 @@ package com.vetti.common.ai.gpt; +import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Value; @@ -71,11 +72,12 @@ public class ChatGPTClient { */ private String sendMessage(String prompt, String model,ObjectMapper objectMapper,HttpClient client,String role) throws IOException, InterruptedException { // 创建消息列表 - List> messages = new ArrayList<>(); - Map message = new HashMap<>(); - message.put("role", role); - message.put("content", prompt); - messages.add(message); + List messages = JSONUtil.toList(prompt, Map.class); + +// Map message = new HashMap<>(); +// message.put("role", role); +// message.put("content", prompt); +// messages.add(message); return sendChatRequest(messages, model, 0.7,objectMapper,client); } @@ -89,7 +91,7 @@ public class ChatGPTClient { * @throws IOException 网络或IO异常 * @throws InterruptedException 线程中断异常 */ - private String sendChatRequest(List> messages, String model, double temperature,ObjectMapper objectMapper,HttpClient client) + private String sendChatRequest(List messages, String model, double temperature,ObjectMapper objectMapper,HttpClient client) throws IOException, InterruptedException { // 构建请求体 Map requestBody = new HashMap<>();