mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
适配框架时发现工厂注册链上存在一些执行顺序上的错误,于是尝试修复问题,为Agent启动链添加了完整的注释,并做出了必要的修复与调整
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package work.slhaf.partner.common.util;
|
||||
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import work.slhaf.partner.Agent;
|
||||
import work.slhaf.partner.api.agent.Agent;
|
||||
import work.slhaf.partner.api.chat.pojo.Message;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
@@ -6,6 +6,7 @@ import lombok.EqualsAndHashCode;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
|
||||
import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
|
||||
import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule;
|
||||
import work.slhaf.partner.core.cognation.CognationCapability;
|
||||
import work.slhaf.partner.core.common.pojo.MemoryResult;
|
||||
import work.slhaf.partner.core.submodule.cache.CacheCapability;
|
||||
@@ -36,8 +37,6 @@ import java.util.List;
|
||||
@AgentModule(name="memory_selector",order=1)
|
||||
public class MemorySelector extends PreRunningModule {
|
||||
|
||||
private static volatile MemorySelector memorySelector;
|
||||
|
||||
@InjectCapability
|
||||
private CacheCapability cacheCapability;
|
||||
@InjectCapability
|
||||
@@ -45,26 +44,10 @@ public class MemorySelector extends PreRunningModule {
|
||||
@InjectCapability
|
||||
private CognationCapability cognationCapability;
|
||||
|
||||
@InjectModule
|
||||
private SliceSelectEvaluator sliceSelectEvaluator;
|
||||
@InjectModule
|
||||
private MemorySelectExtractor memorySelectExtractor;
|
||||
private SessionManager sessionManager;
|
||||
|
||||
private MemorySelector() {
|
||||
}
|
||||
|
||||
public static MemorySelector getInstance() throws IOException, ClassNotFoundException {
|
||||
if (memorySelector == null) {
|
||||
synchronized (MemorySelector.class) {
|
||||
if (memorySelector == null) {
|
||||
memorySelector = new MemorySelector();
|
||||
memorySelector.setSliceSelectEvaluator(SliceSelectEvaluator.getInstance());
|
||||
memorySelector.setMemorySelectExtractor(MemorySelectExtractor.getInstance());
|
||||
memorySelector.setSessionManager(SessionManager.getInstance());
|
||||
}
|
||||
}
|
||||
}
|
||||
return memorySelector;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(PartnerRunningFlowContext runningFlowContext) throws IOException, ClassNotFoundException {
|
||||
|
||||
@@ -6,6 +6,8 @@ import com.alibaba.fastjson2.JSONObject;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule;
|
||||
import work.slhaf.partner.api.agent.factory.module.annotation.Init;
|
||||
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
|
||||
@@ -30,21 +32,14 @@ import static work.slhaf.partner.common.util.ExtractUtil.extractJson;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Slf4j
|
||||
@AgentSubModule
|
||||
public class SliceSelectEvaluator extends AgentRunningSubModule<EvaluatorInput, List<EvaluatedSlice>> implements ActivateModel {
|
||||
private static volatile SliceSelectEvaluator sliceSelectEvaluator;
|
||||
|
||||
private InteractionThreadPoolExecutor executor;
|
||||
|
||||
public static SliceSelectEvaluator getInstance() throws IOException, ClassNotFoundException {
|
||||
if (sliceSelectEvaluator == null) {
|
||||
synchronized (SliceSelectEvaluator.class) {
|
||||
if (sliceSelectEvaluator == null) {
|
||||
sliceSelectEvaluator = new SliceSelectEvaluator();
|
||||
sliceSelectEvaluator.setExecutor(InteractionThreadPoolExecutor.getInstance());
|
||||
log.info("SliceEvaluator注册完毕...");
|
||||
}
|
||||
}
|
||||
}
|
||||
return sliceSelectEvaluator;
|
||||
@Init
|
||||
public void init() {
|
||||
executor = InteractionThreadPoolExecutor.getInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
|
||||
import work.slhaf.partner.api.agent.factory.module.annotation.Init;
|
||||
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||
import work.slhaf.partner.api.chat.pojo.Message;
|
||||
@@ -21,7 +22,6 @@ import work.slhaf.partner.module.modules.memory.selector.extractor.data.Extracto
|
||||
import work.slhaf.partner.module.modules.memory.selector.extractor.data.ExtractorMatchData;
|
||||
import work.slhaf.partner.module.modules.memory.selector.extractor.data.ExtractorResult;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -31,36 +31,25 @@ import static work.slhaf.partner.common.util.ExtractUtil.fixTopicPath;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Slf4j
|
||||
public class MemorySelectExtractor extends AgentRunningSubModule<PartnerRunningFlowContext, ExtractorResult> implements ActivateModel {
|
||||
|
||||
private static volatile MemorySelectExtractor memorySelectExtractor;
|
||||
public class MemorySelectExtractor extends AgentRunningSubModule<PartnerRunningFlowContext, ExtractorResult>
|
||||
implements ActivateModel {
|
||||
|
||||
@InjectCapability
|
||||
private MemoryCapability memoryCapability;
|
||||
@InjectCapability
|
||||
private CognationCapability cognationCapability;
|
||||
|
||||
private SessionManager sessionManager;
|
||||
|
||||
private MemorySelectExtractor() {
|
||||
modelSettings();
|
||||
}
|
||||
|
||||
public static MemorySelectExtractor getInstance() throws IOException, ClassNotFoundException {
|
||||
if (memorySelectExtractor == null) {
|
||||
synchronized (MemorySelectExtractor.class) {
|
||||
if (memorySelectExtractor == null) {
|
||||
memorySelectExtractor = new MemorySelectExtractor();
|
||||
memorySelectExtractor.setSessionManager(SessionManager.getInstance());
|
||||
}
|
||||
}
|
||||
}
|
||||
return memorySelectExtractor;
|
||||
@Init
|
||||
public void init() {
|
||||
sessionManager = SessionManager.getInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExtractorResult execute(PartnerRunningFlowContext context) {
|
||||
log.debug("[MemorySelectExtractor] 主题提取模块开始...");
|
||||
//结构化为指定格式
|
||||
// 结构化为指定格式
|
||||
List<Message> chatMessages = new ArrayList<>();
|
||||
List<MetaMessage> metaMessages = sessionManager.getSingleMetaMessageMap().get(context.getUserId());
|
||||
if (metaMessages == null) {
|
||||
|
||||
@@ -5,6 +5,9 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
|
||||
import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
|
||||
import work.slhaf.partner.api.agent.factory.module.annotation.Init;
|
||||
import work.slhaf.partner.api.agent.factory.module.annotation.InjectModule;
|
||||
import work.slhaf.partner.api.chat.constant.ChatConstant;
|
||||
import work.slhaf.partner.api.chat.pojo.Message;
|
||||
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
|
||||
@@ -32,6 +35,7 @@ import static work.slhaf.partner.common.util.ExtractUtil.extractUserId;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@Slf4j
|
||||
@AgentModule(name="memory_updater",order=6)
|
||||
public class MemoryUpdater extends PostRunningModule {
|
||||
|
||||
private static volatile MemoryUpdater memoryUpdater;
|
||||
@@ -47,25 +51,24 @@ public class MemoryUpdater extends PostRunningModule {
|
||||
private CacheCapability cacheCapability;
|
||||
@InjectCapability
|
||||
private PerceiveCapability perceiveCapability;
|
||||
private InteractionThreadPoolExecutor executor;
|
||||
|
||||
@InjectModule
|
||||
private MemorySelectExtractor memorySelectExtractor;
|
||||
@InjectModule
|
||||
private MemorySummarizer memorySummarizer;
|
||||
|
||||
private SessionManager sessionManager;
|
||||
private InteractionThreadPoolExecutor executor;
|
||||
/**
|
||||
* 用于临时存储完整对话记录,在MemoryManager的分离后
|
||||
*/
|
||||
private List<Message> tempMessage;
|
||||
|
||||
private MemoryUpdater() {
|
||||
}
|
||||
|
||||
public static MemoryUpdater getInstance() throws IOException, ClassNotFoundException {
|
||||
if (memoryUpdater == null) {
|
||||
synchronized (MemoryUpdater.class) {
|
||||
if (memoryUpdater == null) {
|
||||
memoryUpdater = new MemoryUpdater();
|
||||
memoryUpdater.setMemorySelectExtractor(MemorySelectExtractor.getInstance());
|
||||
memoryUpdater.setMemorySummarizer(MemorySummarizer.getInstance());
|
||||
memoryUpdater.setSessionManager(SessionManager.getInstance());
|
||||
memoryUpdater.setExecutor(InteractionThreadPoolExecutor.getInstance());
|
||||
memoryUpdater.setScheduledUpdater();
|
||||
@@ -75,6 +78,13 @@ public class MemoryUpdater extends PostRunningModule {
|
||||
return memoryUpdater;
|
||||
}
|
||||
|
||||
@Init
|
||||
public void init() {
|
||||
executor = InteractionThreadPoolExecutor.getInstance();
|
||||
sessionManager = SessionManager.getInstance();
|
||||
setScheduledUpdater();
|
||||
}
|
||||
|
||||
private void setScheduledUpdater() {
|
||||
executor.execute(() -> {
|
||||
log.info("[MemoryUpdater] 记忆自动更新线程启动");
|
||||
|
||||
@@ -2,27 +2,28 @@ package work.slhaf.partner.module.modules.task;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
|
||||
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
|
||||
import work.slhaf.partner.runtime.interaction.module.InteractionFlow;
|
||||
|
||||
@Data
|
||||
@Slf4j
|
||||
public class TaskScheduler implements InteractionFlow {
|
||||
private static TaskScheduler taskScheduler;
|
||||
public class TaskScheduler extends AgentRunningModule {
|
||||
private static TaskScheduler taskScheduler;
|
||||
|
||||
private TaskScheduler(){}
|
||||
private TaskScheduler() {
|
||||
}
|
||||
|
||||
public static TaskScheduler getInstance() {
|
||||
if (taskScheduler == null) {
|
||||
taskScheduler = new TaskScheduler();
|
||||
log.info("TaskScheduler注册完毕...");
|
||||
}
|
||||
|
||||
return taskScheduler;
|
||||
public static TaskScheduler getInstance() {
|
||||
if (taskScheduler == null) {
|
||||
taskScheduler = new TaskScheduler();
|
||||
log.info("TaskScheduler注册完毕...");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(PartnerRunningFlowContext runningFlowContext) {
|
||||
return taskScheduler;
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public void execute(PartnerRunningFlowContext runningFlowContext) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user