diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/executor/PlainTextExecutor.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/executor/PlainTextExecutor.java index a567c83c2..5782f247a 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/executor/PlainTextExecutor.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/executor/PlainTextExecutor.java @@ -29,14 +29,14 @@ import static com.tencent.supersonic.chat.server.parser.ParserConfig.PARSER_MULT public class PlainTextExecutor implements ChatQueryExecutor { private static final String APP_KEY = "SMALL_TALK"; - private static final String INSTRUCTION = "" + "#Role: You are a nice person to talk to.\n" - + "#Task: Respond quickly and nicely to the user." - + "#Rules: 1.ALWAYS use the same language as the input.\n" + "#History Inputs: %s\n" - + "#Current Input: %s\n" + "#Your response: "; + private static final String INSTRUCTION = "" + "#Role: You are a nice person to talk to." + + "\n#Task: Respond quickly and nicely to the user." + + "\n#Rules: 1.ALWAYS use the same language as the `#Current Input`." + + "\n#History Inputs: %s" + "\n#Current Input: %s" + "\n#Response: "; public PlainTextExecutor() { - ChatAppManager.register(ChatApp.builder().key(APP_KEY).prompt(INSTRUCTION).name("闲聊对话") - .description("直接将原始输入透传大模型").enable(true).build()); + ChatAppManager.register(APP_KEY, ChatApp.builder().prompt(INSTRUCTION).name("闲聊对话") + .description("直接将原始输入透传大模型").enable(false).build()); } @Override diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/memory/MemoryReviewTask.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/memory/MemoryReviewTask.java index 468caa8a2..f924d92c8 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/memory/MemoryReviewTask.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/memory/MemoryReviewTask.java @@ -49,7 +49,7 @@ public class MemoryReviewTask { private AgentService agentService; public MemoryReviewTask() { - ChatAppManager.register(ChatApp.builder().key(APP_KEY).prompt(INSTRUCTION).name("记忆启用评估") + ChatAppManager.register(APP_KEY, ChatApp.builder().prompt(INSTRUCTION).name("记忆启用评估") .description("通过大模型对记忆做正确性评估以决定是否启用").enable(false).build()); } diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/parser/NL2SQLParser.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/parser/NL2SQLParser.java index 31cf46a61..33e2e4006 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/parser/NL2SQLParser.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/parser/NL2SQLParser.java @@ -77,13 +77,13 @@ public class NL2SQLParser implements ChatQueryParser { + "#Examples: {{examples}}\n" + "#Response: "; public NL2SQLParser() { - ChatAppManager.register( - ChatApp.builder().key(APP_KEY_MULTI_TURN).prompt(REWRITE_MULTI_TURN_INSTRUCTION) + ChatAppManager.register(APP_KEY_MULTI_TURN, + ChatApp.builder().prompt(REWRITE_MULTI_TURN_INSTRUCTION) .name("多轮对话改写").description("通过大模型根据历史对话来改写本轮对话").enable(false).build()); - ChatAppManager.register(ChatApp.builder().key(APP_KEY_ERROR_MESSAGE) - .prompt(REWRITE_ERROR_MESSAGE_INSTRUCTION).name("异常提示改写") - .description("通过大模型将异常信息改写为更友好和引导性的提示用语").enable(false).build()); + ChatAppManager.register(APP_KEY_ERROR_MESSAGE, + ChatApp.builder().prompt(REWRITE_ERROR_MESSAGE_INSTRUCTION) + .name("异常提示改写").description("通过大模型将异常信息改写为更友好和引导性的提示用语").enable(false).build()); } @Override diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/ChatModelController.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/ChatModelController.java index f670163b5..8dafefd1c 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/ChatModelController.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/rest/ChatModelController.java @@ -16,8 +16,8 @@ import com.tencent.supersonic.common.util.ChatAppManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.List; +import java.util.Map; @RestController @RequestMapping({"/api/chat/model", "/openapi/chat/model"}) @@ -51,8 +51,8 @@ public class ChatModelController { } @RequestMapping("/getModelAppList") - public List getModelAppList() { - return new ArrayList(ChatAppManager.getAllApps().values()); + public Map getChatAppList() { + return ChatAppManager.getAllApps(); } @RequestMapping("/getModelParameters") diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java index dac2fe4d7..c824401ad 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java @@ -15,6 +15,7 @@ import com.tencent.supersonic.chat.server.processor.execute.ExecuteResultProcess import com.tencent.supersonic.chat.server.processor.parse.ParseResultProcessor; import com.tencent.supersonic.chat.server.service.AgentService; import com.tencent.supersonic.chat.server.service.ChatManageService; +import com.tencent.supersonic.chat.server.service.ChatModelService; import com.tencent.supersonic.chat.server.service.ChatQueryService; import com.tencent.supersonic.chat.server.util.ComponentFactory; import com.tencent.supersonic.chat.server.util.QueryReqConverter; @@ -86,6 +87,8 @@ public class ChatQueryServiceImpl implements ChatQueryService { private SemanticLayerService semanticLayerService; @Autowired private AgentService agentService; + @Autowired + private ChatModelService chatModelService; private List chatQueryParsers = ComponentFactory.getChatParsers(); private List chatQueryExecutors = ComponentFactory.getChatExecutors(); @@ -168,6 +171,8 @@ public class ChatQueryServiceImpl implements ChatQueryService { ParseContext parseContext = new ParseContext(); BeanMapper.mapper(chatParseReq, parseContext); Agent agent = agentService.getAgent(chatParseReq.getAgentId()); + agent.getChatAppConfig().values().forEach(c -> c.setChatModelConfig( + chatModelService.getChatModel(c.getChatModelId()).getConfig())); parseContext.setAgent(agent); return parseContext; } diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/ChatApp.java b/common/src/main/java/com/tencent/supersonic/common/pojo/ChatApp.java index b56f7733c..111805d01 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/ChatApp.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/ChatApp.java @@ -11,7 +11,6 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class ChatApp { - private String key; private String name; private String description; private String prompt; diff --git a/common/src/main/java/com/tencent/supersonic/common/util/ChatAppManager.java b/common/src/main/java/com/tencent/supersonic/common/util/ChatAppManager.java index 9a7a992e4..8a1130a2b 100644 --- a/common/src/main/java/com/tencent/supersonic/common/util/ChatAppManager.java +++ b/common/src/main/java/com/tencent/supersonic/common/util/ChatAppManager.java @@ -8,8 +8,8 @@ import java.util.Map; public class ChatAppManager { private static final Map chatApps = Maps.newConcurrentMap(); - public static void register(ChatApp chatApp) { - chatApps.put(chatApp.getKey(), chatApp); + public static void register(String key, ChatApp app) { + chatApps.put(key, app); } public static Map getAllApps() { diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/LLMSqlCorrector.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/LLMSqlCorrector.java index ff1296ace..5d3248c98 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/LLMSqlCorrector.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/corrector/LLMSqlCorrector.java @@ -39,8 +39,8 @@ public class LLMSqlCorrector extends BaseSemanticCorrector { + "\n#Question:{{question}} #InputSQL:{{sql}} #Response:"; public LLMSqlCorrector() { - ChatAppManager.register(ChatApp.builder().key(APP_KEY).prompt(INSTRUCTION).name("语义SQL修正") - .description("").enable(false).build()); + ChatAppManager.register(APP_KEY, ChatApp.builder().prompt(INSTRUCTION).name("语义SQL修正") + .description("通过大模型对解析S2SQL做二次修正").enable(false).build()); } @Data diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java index 2e04a1a28..b2d20c559 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java @@ -43,7 +43,7 @@ public class OnePassSCSqlGenStrategy extends SqlGenStrategy { + "\n#Question: Question:{{question}},Schema:{{schema}},SideInfo:{{information}}"; public OnePassSCSqlGenStrategy() { - ChatAppManager.register(ChatApp.builder().key(APP_KEY).prompt(INSTRUCTION).name("语义SQL解析") + ChatAppManager.register(APP_KEY, ChatApp.builder().prompt(INSTRUCTION).name("语义SQL解析") .description("通过大模型做语义解析生成S2SQL").enable(true).build()); }