| @@ -23,7 +23,7 @@ public class RemoteQAFallbackFactory implements FallbackFactory<RemoteQAService> | |||||
| @Override | @Override | ||||
| public RemoteQAService create(Throwable throwable) { | public RemoteQAService create(Throwable throwable) { | ||||
| log.error("短信服务调用失败:{}", throwable.getMessage()); | |||||
| log.error("知识库服务调用失败:{}", throwable.getMessage()); | |||||
| return new RemoteQAService() { | return new RemoteQAService() { | ||||
| @Override | @Override | ||||
| public AjaxResult query(String manCode, String question, Long tenantId) { | public AjaxResult query(String manCode, String question, Long tenantId) { | ||||
| @@ -7,7 +7,7 @@ | |||||
| <!-- 控制台输出 --> | <!-- 控制台输出 --> | ||||
| <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> | <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| </appender> | </appender> | ||||
| @@ -22,7 +22,7 @@ | |||||
| <!-- 日志最大的历史 60天 --> | <!-- 日志最大的历史 60天 --> | ||||
| <maxHistory>60</maxHistory> | <maxHistory>60</maxHistory> | ||||
| </rollingPolicy> | </rollingPolicy> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||
| @@ -44,7 +44,7 @@ | |||||
| <!-- 日志最大的历史 60天 --> | <!-- 日志最大的历史 60天 --> | ||||
| <maxHistory>60</maxHistory> | <maxHistory>60</maxHistory> | ||||
| </rollingPolicy> | </rollingPolicy> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||
| @@ -22,7 +22,7 @@ | |||||
| <!-- 日志最大的历史 60天 --> | <!-- 日志最大的历史 60天 --> | ||||
| <maxHistory>60</maxHistory> | <maxHistory>60</maxHistory> | ||||
| </rollingPolicy> | </rollingPolicy> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||
| @@ -44,7 +44,7 @@ | |||||
| <!-- 日志最大的历史 60天 --> | <!-- 日志最大的历史 60天 --> | ||||
| <maxHistory>60</maxHistory> | <maxHistory>60</maxHistory> | ||||
| </rollingPolicy> | </rollingPolicy> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||
| @@ -78,10 +78,6 @@ public class ChatServerHandler extends SimpleChannelInboundHandler<TextWebSocket | |||||
| } | } | ||||
| @Override | @Override | ||||
| protected void channelRead0(ChannelHandlerContext channelHandlerContext, TextWebSocketFrame textWebSocketFrame) throws Exception { | protected void channelRead0(ChannelHandlerContext channelHandlerContext, TextWebSocketFrame textWebSocketFrame) throws Exception { | ||||
| tLogRPCHandler.processProviderSide(new TLogLabelBean()); | |||||
| Channel channel = channelHandlerContext.channel(); | Channel channel = channelHandlerContext.channel(); | ||||
| // 判断textWebSocketFrame.text()是否为空,如果为空,则直接返回 | // 判断textWebSocketFrame.text()是否为空,如果为空,则直接返回 | ||||
| if (StringUtils.isEmpty(textWebSocketFrame.text()) || StringUtils.isEmpty(textWebSocketFrame.text().trim()) ) { | if (StringUtils.isEmpty(textWebSocketFrame.text()) || StringUtils.isEmpty(textWebSocketFrame.text().trim()) ) { | ||||
| @@ -52,6 +52,7 @@ import com.xueyi.nlt.nlt.domain.vo.DmKnowledgeLibAskVo; | |||||
| import com.xueyi.nlt.nlt.domain.vo.IntentTemplateVo; | import com.xueyi.nlt.nlt.domain.vo.IntentTemplateVo; | ||||
| import com.xueyi.nlt.nlt.domain.vo.MarkRecordVo; | import com.xueyi.nlt.nlt.domain.vo.MarkRecordVo; | ||||
| import com.xueyi.nlt.nlt.domain.vo.*; | import com.xueyi.nlt.nlt.domain.vo.*; | ||||
| import com.xueyi.nlt.nlt.domain.vo.NLPLogVo; | |||||
| import com.xueyi.nlt.nlt.mapper.DmRegularMapper; | import com.xueyi.nlt.nlt.mapper.DmRegularMapper; | ||||
| import com.xueyi.nlt.nlt.service.*; | import com.xueyi.nlt.nlt.service.*; | ||||
| import com.xueyi.nlt.nlt.service.impl.DmSensitiveWordServiceImpl; | import com.xueyi.nlt.nlt.service.impl.DmSensitiveWordServiceImpl; | ||||
| @@ -95,6 +96,8 @@ import java.util.Map; | |||||
| import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
| import java.util.*; | import java.util.*; | ||||
| import java.time.format.DateTimeFormatter; | import java.time.format.DateTimeFormatter; | ||||
| import java.time.LocalDateTime; | |||||
| import java.util.*; | |||||
| import java.util.regex.Matcher; | import java.util.regex.Matcher; | ||||
| import java.util.regex.Pattern; | import java.util.regex.Pattern; | ||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
| @@ -901,6 +904,9 @@ public class DmIntentController extends BaseController<DmIntentQuery, DmIntentDt | |||||
| return AjaxResult.success(); | return AjaxResult.success(); | ||||
| } | } | ||||
| private Integer uploadLog(NLPLogVo vo) { | |||||
| return 0; | |||||
| } | |||||
| /** | /** | ||||
| * 查询意图管理 | * 查询意图管理 | ||||
| 列表 | 列表 | ||||
| @@ -0,0 +1,191 @@ | |||||
| package com.xueyi.nlt.nlt.domain.vo; | |||||
| import com.alibaba.fastjson2.JSONObject; | |||||
| import com.fasterxml.jackson.annotation.JsonFormat; | |||||
| import com.fasterxml.jackson.databind.annotation.JsonDeserialize; | |||||
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; | |||||
| import com.xueyi.common.core.utils.time.LocalDateTimeSerializer; | |||||
| import com.xueyi.common.core.utils.time.LocalDatetimeDeserializer; | |||||
| import lombok.Data; | |||||
| import java.io.Serial; | |||||
| import java.io.Serializable; | |||||
| import java.time.LocalDateTime; | |||||
| import java.util.List; | |||||
| @Data | |||||
| public class NLPLogVo implements Serializable { | |||||
| @Serial | |||||
| private static final long serialVersionUID = 1L; | |||||
| protected Long id; | |||||
| /** 租户号 */ | |||||
| protected Long tenantId; | |||||
| @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") | |||||
| @JsonDeserialize(using = LocalDatetimeDeserializer.class) // 反序列化 | |||||
| @JsonSerialize(using = LocalDateTimeSerializer.class) | |||||
| protected LocalDateTime createTime; | |||||
| /** | |||||
| * 设备信息 | |||||
| */ | |||||
| protected Device device; | |||||
| /** | |||||
| * 图片集合 | |||||
| */ | |||||
| protected List<Image> images; | |||||
| /** | |||||
| * NLP相关日志 | |||||
| */ | |||||
| protected NLP nlp; | |||||
| /** | |||||
| * 设备信息 | |||||
| */ | |||||
| @Data | |||||
| class Device { | |||||
| // 设备id | |||||
| String devId; | |||||
| // 麦阵方案 | |||||
| String micOption; | |||||
| } | |||||
| /** | |||||
| * 图片信息 | |||||
| */ | |||||
| @Data | |||||
| class Image { | |||||
| // 图片id | |||||
| String id; | |||||
| // 时间戳 | |||||
| Long timestamp; | |||||
| // 图像识别方案 | |||||
| String faceDetectOption; | |||||
| // 人脸结果图片集 | |||||
| List<FaceResult> faces; | |||||
| /** | |||||
| * 人脸结果 | |||||
| */ | |||||
| @Data | |||||
| class FaceResult { | |||||
| /** 文件名 */ | |||||
| String filename; | |||||
| /** 人脸结果参数 */ | |||||
| Face face; | |||||
| } | |||||
| /** | |||||
| * 人脸识别信息 | |||||
| */ | |||||
| @Data | |||||
| class Face { | |||||
| Integer trackID; | |||||
| Integer index; | |||||
| Float confidence; | |||||
| Float pitch; | |||||
| Float yaw; | |||||
| Float roll; | |||||
| Integer leftEyeType; | |||||
| Integer rightEyeType; | |||||
| Integer mouthType; | |||||
| Float minority; | |||||
| Float blurness; | |||||
| Float age; | |||||
| Float female; | |||||
| Float male; | |||||
| Rect rect; | |||||
| GazeResult gazeResult; | |||||
| } | |||||
| /** | |||||
| * 矩形框 | |||||
| */ | |||||
| @Data | |||||
| class Rect { | |||||
| Float x; | |||||
| Float y; | |||||
| Float width; | |||||
| Float height; | |||||
| } | |||||
| /** | |||||
| * 视线结果 | |||||
| */ | |||||
| @Data | |||||
| class GazeResult { | |||||
| GazeInfo leftEyeGaze; | |||||
| GazeInfo rightEyeGaze; | |||||
| } | |||||
| /** | |||||
| * 视线信息 | |||||
| */ | |||||
| @Data | |||||
| class GazeInfo { | |||||
| Float centerX; | |||||
| Float centerY; | |||||
| Float vectorX; | |||||
| Float vectorY; | |||||
| Float vectorZ; | |||||
| Float roll; | |||||
| Float pitch; | |||||
| Float yaw; | |||||
| } | |||||
| } | |||||
| /** | |||||
| * ASR相关日志 | |||||
| */ | |||||
| @Data | |||||
| class ASR { | |||||
| // VAD 开始时间 | |||||
| Long vadStartTime; | |||||
| // VAD 结束时间 | |||||
| Long vadEndTime; | |||||
| // ASR 方案 | |||||
| String asrOption; | |||||
| // 文件名 | |||||
| String filename; | |||||
| // 识别结果 | |||||
| String result; | |||||
| } | |||||
| /** | |||||
| * NLP相关日志 | |||||
| */ | |||||
| @Data | |||||
| class NLP { | |||||
| // 问题 | |||||
| String question; | |||||
| /** 答案 */ | |||||
| String answer; | |||||
| /** 选项 */ | |||||
| List<String> options; | |||||
| /** 匹配的的模型 | |||||
| * -1: 未匹配模型 | |||||
| * 0: 正则表达式 | |||||
| * 1: 星火大模型 | |||||
| * 2: 文心一言 | |||||
| * 3: ChatGPT | |||||
| * 4:智普AI | |||||
| * 5:联动北方Lagi | |||||
| */ | |||||
| Integer model; | |||||
| /** 响应时间 */ | |||||
| Long responseTime; | |||||
| // 用户选择的答案 | |||||
| Integer choose; | |||||
| } | |||||
| public String toJSONString() { | |||||
| return JSONObject.toJSONString(this); | |||||
| } | |||||
| } | |||||
| @@ -15,6 +15,7 @@ import com.xueyi.nlt.nlt.domain.dto.DmPromptDto; | |||||
| import com.xueyi.nlt.nlt.service.IDmHotspotService; | import com.xueyi.nlt.nlt.service.IDmHotspotService; | ||||
| import com.xueyi.nlt.nlt.service.IDmPromptService; | import com.xueyi.nlt.nlt.service.IDmPromptService; | ||||
| import com.xueyi.nlt.nlt.service.ISysLlmService; | import com.xueyi.nlt.nlt.service.ISysLlmService; | ||||
| import com.yomahub.tlog.core.annotation.TLogAspect; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -104,6 +105,7 @@ public class FreeChatTemplate implements BaseTemplate{ | |||||
| return resultJson; | return resultJson; | ||||
| } | } | ||||
| @TLogAspect(str = "DGMAN-NLT") | |||||
| public JSONObject handle(String dev, String content, boolean stream) { | public JSONObject handle(String dev, String content, boolean stream) { | ||||
| Long operatorId = TerminalSecurityContextHolder.getOperatorId(); | Long operatorId = TerminalSecurityContextHolder.getOperatorId(); | ||||
| String redisKey = "group:nlp:" + SecurityContextHolder.getLocalMap().get("enterprise_id") + ":" + operatorId; | String redisKey = "group:nlp:" + SecurityContextHolder.getLocalMap().get("enterprise_id") + ":" + operatorId; | ||||
| @@ -139,6 +141,7 @@ public class FreeChatTemplate implements BaseTemplate{ | |||||
| llmContext.setDevId(dev); | llmContext.setDevId(dev); | ||||
| LlmParam param = new LlmParam(); | LlmParam param = new LlmParam(); | ||||
| LlmResponse response = sysLlmService.stream(llmContext,param); | LlmResponse response = sysLlmService.stream(llmContext,param); | ||||
| log.info("llmContext:{}",llmContext); | |||||
| JSONObject resultJson = new JSONObject(); | JSONObject resultJson = new JSONObject(); | ||||
| resultJson.put("tts","让我想一想。"); | resultJson.put("tts","让我想一想。"); | ||||
| @@ -7,7 +7,7 @@ | |||||
| <!-- 控制台输出 --> | <!-- 控制台输出 --> | ||||
| <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> | <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| </appender> | </appender> | ||||
| @@ -135,11 +135,10 @@ public class DmManDeviceController extends BaseController<DmManDeviceQuery, DmMa | |||||
| /** 根据设备id获取数字人信息 */ | /** 根据设备id获取数字人信息 */ | ||||
| @GetMapping("/inner/info/{devId}") | @GetMapping("/inner/info/{devId}") | ||||
| R<DmManDeviceDto> manDeviceInfoInner(@RequestParam(value = "devId") String devId) { | R<DmManDeviceDto> manDeviceInfoInner(@RequestParam(value = "devId") String devId) { | ||||
| System.out.println("manDeviceInfoInner:" + devId); | |||||
| DmManDeviceDto dto = super.baseService.manDeviceInfoInner(devId); | DmManDeviceDto dto = super.baseService.manDeviceInfoInner(devId); | ||||
| System.out.println("manDeviceInfoInner:dto:" + dto.getTId()); | |||||
| SysEnterpriseDto enterpriseDto = enterpriseService.selectById(dto.getTId()); | SysEnterpriseDto enterpriseDto = enterpriseService.selectById(dto.getTId()); | ||||
| dto.setStrategyId(enterpriseDto.getStrategyId()); | dto.setStrategyId(enterpriseDto.getStrategyId()); | ||||
| log.info("获取租户信息:" + dto); | |||||
| return R.ok(dto); | return R.ok(dto); | ||||
| } | } | ||||
| @@ -7,7 +7,7 @@ | |||||
| <!-- 控制台输出 --> | <!-- 控制台输出 --> | ||||
| <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> | <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| </appender> | </appender> | ||||
| @@ -22,7 +22,7 @@ | |||||
| <!-- 日志最大的历史 60天 --> | <!-- 日志最大的历史 60天 --> | ||||
| <maxHistory>60</maxHistory> | <maxHistory>60</maxHistory> | ||||
| </rollingPolicy> | </rollingPolicy> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||
| @@ -44,7 +44,7 @@ | |||||
| <!-- 日志最大的历史 60天 --> | <!-- 日志最大的历史 60天 --> | ||||
| <maxHistory>60</maxHistory> | <maxHistory>60</maxHistory> | ||||
| </rollingPolicy> | </rollingPolicy> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||
| @@ -7,7 +7,7 @@ | |||||
| <!-- 控制台输出 --> | <!-- 控制台输出 --> | ||||
| <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> | <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| </appender> | </appender> | ||||
| @@ -22,7 +22,7 @@ | |||||
| <!-- 日志最大的历史 60天 --> | <!-- 日志最大的历史 60天 --> | ||||
| <maxHistory>60</maxHistory> | <maxHistory>60</maxHistory> | ||||
| </rollingPolicy> | </rollingPolicy> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||
| @@ -44,7 +44,7 @@ | |||||
| <!-- 日志最大的历史 60天 --> | <!-- 日志最大的历史 60天 --> | ||||
| <maxHistory>60</maxHistory> | <maxHistory>60</maxHistory> | ||||
| </rollingPolicy> | </rollingPolicy> | ||||
| <encoder> | |||||
| <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder"> | |||||
| <pattern>${log.pattern}</pattern> | <pattern>${log.pattern}</pattern> | ||||
| </encoder> | </encoder> | ||||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | <filter class="ch.qos.logback.classic.filter.LevelFilter"> | ||||