mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-13 13:07:32 +00:00
(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:
@@ -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,21 +51,38 @@ 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);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Exception occurred during memory review task", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processMemory(ChatMemoryDO m) {
|
||||||
Agent chatAgent = agentService.getAgent(m.getAgentId());
|
Agent chatAgent = agentService.getAgent(m.getAgentId());
|
||||||
if (Objects.nonNull(chatAgent) && chatAgent.enableMemoryReview()) {
|
if (Objects.isNull(chatAgent) || !chatAgent.enableMemoryReview()) {
|
||||||
String promptStr = String.format(INSTRUCTION, m.getQuestion(), m.getDbSchema(),
|
log.debug("Agent id {} not found or memory review disabled", m.getAgentId());
|
||||||
m.getSideInfo(), m.getS2sql());
|
return;
|
||||||
|
}
|
||||||
|
String promptStr = createPromptString(m);
|
||||||
Prompt prompt = PromptTemplate.from(promptStr).apply(Collections.EMPTY_MAP);
|
Prompt prompt = PromptTemplate.from(promptStr).apply(Collections.EMPTY_MAP);
|
||||||
|
|
||||||
keyPipelineLog.info("MemoryReviewTask reqPrompt:\n{}", promptStr);
|
keyPipelineLog.info("MemoryReviewTask reqPrompt:\n{}", promptStr);
|
||||||
ChatLanguageModel chatLanguageModel = ModelProvider.getChatModel(
|
ChatLanguageModel chatLanguageModel = ModelProvider.getChatModel(chatAgent.getModelConfig());
|
||||||
chatAgent.getModelConfig());
|
|
||||||
if (Objects.nonNull(chatLanguageModel)) {
|
if (Objects.nonNull(chatLanguageModel)) {
|
||||||
String response = chatLanguageModel.generate(prompt.toUserMessage()).content().text();
|
String response = chatLanguageModel.generate(prompt.toUserMessage()).content().text();
|
||||||
keyPipelineLog.info("MemoryReviewTask modelResp:\n{}", response);
|
keyPipelineLog.info("MemoryReviewTask modelResp:\n{}", response);
|
||||||
|
processResponse(response, 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());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processResponse(String response, ChatMemoryDO m) {
|
||||||
Matcher matcher = OUTPUT_PATTERN.matcher(response);
|
Matcher matcher = OUTPUT_PATTERN.matcher(response);
|
||||||
if (matcher.find()) {
|
if (matcher.find()) {
|
||||||
m.setLlmReviewRet(MemoryReviewResult.getMemoryReviewResult(matcher.group(1)));
|
m.setLlmReviewRet(MemoryReviewResult.getMemoryReviewResult(matcher.group(1)));
|
||||||
@@ -75,12 +93,5 @@ public class MemoryReviewTask {
|
|||||||
}
|
}
|
||||||
memoryService.updateMemory(m);
|
memoryService.updateMemory(m);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
log.debug("ChatLanguageModel not found for agent:{}", chatAgent.getId());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log.debug("Agent id {} not found or memory review disabled", m.getAgentId());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user