(improvement)(chat) Fixed the issue where setting an incorrect embeddingStore address in the system settings caused the service to fail to start (#1631)

This commit is contained in:
lexluo09
2024-09-05 16:10:45 +08:00
committed by GitHub
parent 1b6277e53f
commit 7dbd23d751
2 changed files with 42 additions and 31 deletions

View File

@@ -2,6 +2,7 @@ package com.tencent.supersonic.chat.server.memory;
import com.tencent.supersonic.chat.api.pojo.enums.MemoryReviewResult; import com.tencent.supersonic.chat.api.pojo.enums.MemoryReviewResult;
import com.tencent.supersonic.chat.server.agent.Agent; import com.tencent.supersonic.chat.server.agent.Agent;
import com.tencent.supersonic.chat.server.persistence.dataobject.ChatMemoryDO;
import com.tencent.supersonic.chat.server.service.AgentService; import com.tencent.supersonic.chat.server.service.AgentService;
import com.tencent.supersonic.chat.server.service.MemoryService; import com.tencent.supersonic.chat.server.service.MemoryService;
import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.chat.ChatLanguageModel;
@@ -50,37 +51,47 @@ public class MemoryReviewTask {
@Scheduled(fixedDelay = 60 * 1000) @Scheduled(fixedDelay = 60 * 1000)
public void review() { public void review() {
memoryService.getMemoriesForLlmReview().stream() try {
.forEach(m -> { memoryService.getMemoriesForLlmReview().stream().forEach(this::processMemory);
Agent chatAgent = agentService.getAgent(m.getAgentId()); } catch (Exception e) {
if (Objects.nonNull(chatAgent) && chatAgent.enableMemoryReview()) { log.error("Exception occurred during memory review task", e);
String promptStr = String.format(INSTRUCTION, m.getQuestion(), m.getDbSchema(), }
m.getSideInfo(), m.getS2sql()); }
Prompt prompt = PromptTemplate.from(promptStr).apply(Collections.EMPTY_MAP);
keyPipelineLog.info("MemoryReviewTask reqPrompt:\n{}", promptStr); private void processMemory(ChatMemoryDO m) {
ChatLanguageModel chatLanguageModel = ModelProvider.getChatModel( Agent chatAgent = agentService.getAgent(m.getAgentId());
chatAgent.getModelConfig()); if (Objects.isNull(chatAgent) || !chatAgent.enableMemoryReview()) {
if (Objects.nonNull(chatLanguageModel)) { log.debug("Agent id {} not found or memory review disabled", m.getAgentId());
String response = chatLanguageModel.generate(prompt.toUserMessage()).content().text(); return;
keyPipelineLog.info("MemoryReviewTask modelResp:\n{}", response); }
String promptStr = createPromptString(m);
Prompt prompt = PromptTemplate.from(promptStr).apply(Collections.EMPTY_MAP);
Matcher matcher = OUTPUT_PATTERN.matcher(response); keyPipelineLog.info("MemoryReviewTask reqPrompt:\n{}", promptStr);
if (matcher.find()) { ChatLanguageModel chatLanguageModel = ModelProvider.getChatModel(chatAgent.getModelConfig());
m.setLlmReviewRet(MemoryReviewResult.getMemoryReviewResult(matcher.group(1))); if (Objects.nonNull(chatLanguageModel)) {
m.setLlmReviewCmt(matcher.group(2)); String response = chatLanguageModel.generate(prompt.toUserMessage()).content().text();
// directly enable memory if the LLM determines it positive keyPipelineLog.info("MemoryReviewTask modelResp:\n{}", response);
if (MemoryReviewResult.POSITIVE.equals(m.getLlmReviewRet())) { processResponse(response, m);
memoryService.enableMemory(m); } else {
} log.debug("ChatLanguageModel not found for agent:{}", chatAgent.getId());
memoryService.updateMemory(m); }
} }
} else {
log.debug("ChatLanguageModel not found for agent:{}", chatAgent.getId()); private String createPromptString(ChatMemoryDO m) {
} return String.format(INSTRUCTION, m.getQuestion(), m.getDbSchema(), m.getSideInfo(), m.getS2sql());
} else { }
log.debug("Agent id {} not found or memory review disabled", m.getAgentId());
} private void processResponse(String response, ChatMemoryDO m) {
}); Matcher matcher = OUTPUT_PATTERN.matcher(response);
if (matcher.find()) {
m.setLlmReviewRet(MemoryReviewResult.getMemoryReviewResult(matcher.group(1)));
m.setLlmReviewCmt(matcher.group(2));
// directly enable memory if the LLM determines it positive
if (MemoryReviewResult.POSITIVE.equals(m.getLlmReviewRet())) {
memoryService.enableMemory(m);
}
memoryService.updateMemory(m);
}
} }
} }

View File

@@ -83,7 +83,7 @@ public class ExemplarServiceImpl implements ExemplarService, CommandLineRunner {
public void run(String... args) { public void run(String... args) {
try { try {
loadSysExemplars(); loadSysExemplars();
} catch (IOException e) { } catch (Exception e) {
log.error("Failed to load system exemplars", e); log.error("Failed to load system exemplars", e);
} }
} }