From 5fa3607874f41f744d13dcb3b608a25ccc98cba9 Mon Sep 17 00:00:00 2001 From: jerryjzhang Date: Fri, 21 Feb 2025 00:07:14 +0800 Subject: [PATCH] [fix][chat]Fix NPE issue. --- .../parse/ErrorMsgRewriteProcessor.java | 20 +++++++++++-------- .../headless/server/utils/QueryUtils.java | 3 ++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/parse/ErrorMsgRewriteProcessor.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/parse/ErrorMsgRewriteProcessor.java index ec3f3b671..b7282cab5 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/parse/ErrorMsgRewriteProcessor.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/processor/parse/ErrorMsgRewriteProcessor.java @@ -27,7 +27,7 @@ public class ErrorMsgRewriteProcessor implements ParseResultProcessor { private static final Logger keyPipelineLog = LoggerFactory.getLogger("keyPipeline"); - public static final String APP_KEY_ERROR_MESSAGE = "REWRITE_ERROR_MESSAGE"; + public static final String APP_KEY = "REWRITE_ERROR_MESSAGE"; private static final String REWRITE_ERROR_MESSAGE_INSTRUCTION = "" + "#Role: You are a data business partner who closely interacts with business people.\n" + "#Task: Your will be provided with user input, system output and some examples, " @@ -38,7 +38,7 @@ public class ErrorMsgRewriteProcessor implements ParseResultProcessor { + "#Examples: {{examples}}\n" + "#Response: "; public ErrorMsgRewriteProcessor() { - ChatAppManager.register(APP_KEY_ERROR_MESSAGE, + ChatAppManager.register(APP_KEY, ChatApp.builder().prompt(REWRITE_ERROR_MESSAGE_INSTRUCTION).name("异常提示改写") .appModule(AppModule.CHAT).description("通过大模型将异常信息改写为更友好和引导性的提示用语") .enable(true).build()); @@ -46,7 +46,7 @@ public class ErrorMsgRewriteProcessor implements ParseResultProcessor { @Override public boolean accept(ParseContext parseContext) { - ChatApp chatApp = parseContext.getAgent().getChatAppConfig().get(APP_KEY_ERROR_MESSAGE); + ChatApp chatApp = parseContext.getAgent().getChatAppConfig().get(APP_KEY); return StringUtils.isNotBlank(parseContext.getResponse().getErrorMsg()) && Objects.nonNull(chatApp) && chatApp.isEnable(); } @@ -54,16 +54,20 @@ public class ErrorMsgRewriteProcessor implements ParseResultProcessor { @Override public void process(ParseContext parseContext) { String errMsg = parseContext.getResponse().getErrorMsg(); - ChatApp chatApp = parseContext.getAgent().getChatAppConfig().get(APP_KEY_ERROR_MESSAGE); + ChatApp chatApp = parseContext.getAgent().getChatAppConfig().get(APP_KEY); Map variables = new HashMap<>(); variables.put("user_question", parseContext.getRequest().getQueryText()); variables.put("system_message", errMsg); StringBuilder exampleStr = new StringBuilder(); - parseContext.getResponse().getUsedExemplars().forEach(e -> exampleStr.append( - String.format(" ", e.getQuestion(), e.getDbSchema()))); - parseContext.getAgent().getExamples() - .forEach(e -> exampleStr.append(String.format(" ", e))); + if (parseContext.getResponse().getUsedExemplars() != null) { + parseContext.getResponse().getUsedExemplars().forEach(e -> exampleStr.append(String + .format(" ", e.getQuestion(), e.getDbSchema()))); + } + if (parseContext.getAgent().getExamples() != null) { + parseContext.getAgent().getExamples() + .forEach(e -> exampleStr.append(String.format(" ", e))); + } variables.put("examples", exampleStr); Prompt prompt = PromptTemplate.from(chatApp.getPrompt()).apply(variables); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryUtils.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryUtils.java index dd503d04c..cf183cf8f 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryUtils.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/QueryUtils.java @@ -140,7 +140,8 @@ public class QueryUtils { || type.equalsIgnoreCase("float") || type.equalsIgnoreCase("double") || type.equalsIgnoreCase("real") || type.equalsIgnoreCase("numeric") || type.toLowerCase().startsWith("decimal") || type.toLowerCase().startsWith("uint") - || type.toLowerCase().startsWith("int") || type.toLowerCase().equalsIgnoreCase("decfloat"); + || type.toLowerCase().startsWith("int") + || type.toLowerCase().equalsIgnoreCase("decfloat"); } private String getName(String nameEn) {