diff --git a/pom.xml b/pom.xml
index e8a47aa2..151ea062 100644
--- a/pom.xml
+++ b/pom.xml
@@ -74,11 +74,6 @@
hutool-all
5.8.36
-
- work.slhaf
- Partner-Modules-Api
- 1.0-SNAPSHOT
-
\ No newline at end of file
diff --git a/src/main/java/work/slhaf/Main.java b/src/main/java/work/slhaf/Main.java
index 50d3195b..09cac49a 100644
--- a/src/main/java/work/slhaf/Main.java
+++ b/src/main/java/work/slhaf/Main.java
@@ -1,7 +1,6 @@
package work.slhaf;
import work.slhaf.agent.Agent;
-import work.slhaf.agent.modules.memory.MemoryGraph;
import java.io.IOException;
diff --git a/src/main/java/work/slhaf/agent/Agent.java b/src/main/java/work/slhaf/agent/Agent.java
index 50cbc9e1..b803e29d 100644
--- a/src/main/java/work/slhaf/agent/Agent.java
+++ b/src/main/java/work/slhaf/agent/Agent.java
@@ -4,8 +4,9 @@ import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.agent.common.config.Config;
import work.slhaf.agent.core.InteractionHub;
-import work.slhaf.agent.core.interation.TaskCallback;
-import work.slhaf.agent.core.interation.data.InteractionInputData;
+import work.slhaf.agent.core.interaction.TaskCallback;
+import work.slhaf.agent.core.interaction.data.InteractionInputData;
+import work.slhaf.agent.core.interaction.data.InteractionOutputData;
import work.slhaf.agent.gateway.AgentWebSocketServer;
import work.slhaf.agent.gateway.MessageSender;
@@ -53,7 +54,7 @@ public class Agent implements TaskCallback {
*/
public void sendToUser(String userInfo,String output){
System.out.println(output);
-// messageSender.sendMessage(userInfo,output);
+ messageSender.sendMessage(new InteractionOutputData(userInfo,output));
}
@Override
diff --git a/src/main/java/work/slhaf/agent/common/chat/ChatClient.java b/src/main/java/work/slhaf/agent/common/chat/ChatClient.java
index 8a33f9ab..d23d5b7a 100644
--- a/src/main/java/work/slhaf/agent/common/chat/ChatClient.java
+++ b/src/main/java/work/slhaf/agent/common/chat/ChatClient.java
@@ -5,7 +5,7 @@ import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONUtil;
import lombok.Data;
import lombok.NoArgsConstructor;
-import work.slhaf.agent.common.chat.constant.Constant;
+import work.slhaf.agent.common.chat.constant.ChatConstant;
import work.slhaf.agent.common.chat.pojo.ChatBody;
import work.slhaf.agent.common.chat.pojo.ChatResponse;
import work.slhaf.agent.common.chat.pojo.Message;
@@ -58,7 +58,7 @@ public class ChatClient {
PrimaryChatResponse primaryChatResponse = JSONUtil.toBean(response.body(), PrimaryChatResponse.class);
finalResponse = ChatResponse.builder()
- .type(Constant.Response.SUCCESS)
+ .type(ChatConstant.Response.SUCCESS)
.message(primaryChatResponse.getChoices().get(0).getMessage().getContent())
.usageBean(primaryChatResponse.getUsage())
.build();
diff --git a/src/main/java/work/slhaf/agent/common/chat/constant/Constant.java b/src/main/java/work/slhaf/agent/common/chat/constant/ChatConstant.java
similarity index 96%
rename from src/main/java/work/slhaf/agent/common/chat/constant/Constant.java
rename to src/main/java/work/slhaf/agent/common/chat/constant/ChatConstant.java
index 89e48c91..20f47cb0 100644
--- a/src/main/java/work/slhaf/agent/common/chat/constant/Constant.java
+++ b/src/main/java/work/slhaf/agent/common/chat/constant/ChatConstant.java
@@ -1,6 +1,6 @@
package work.slhaf.agent.common.chat.constant;
-public class Constant {
+public class ChatConstant {
public static class Character {
public static final String USER = "user";
diff --git a/src/main/java/work/slhaf/agent/common/config/Config.java b/src/main/java/work/slhaf/agent/common/config/Config.java
index 1ac890b8..fbbd2411 100644
--- a/src/main/java/work/slhaf/agent/common/config/Config.java
+++ b/src/main/java/work/slhaf/agent/common/config/Config.java
@@ -5,8 +5,11 @@ import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import work.slhaf.agent.core.model.CoreModel;
-import work.slhaf.agent.modules.memory.MemoryManager;
+import work.slhaf.agent.core.memory.MemoryManager;
+import work.slhaf.agent.modules.memory.MemorySelector;
+import work.slhaf.agent.modules.memory.MemoryUpdater;
import work.slhaf.agent.modules.memory.SliceEvaluator;
+import work.slhaf.agent.modules.task.TaskEvaluator;
import work.slhaf.agent.modules.task.TaskScheduler;
import work.slhaf.agent.modules.topic.TopicExtractor;
@@ -65,7 +68,9 @@ public class Config {
private static void generatePipelineConfig() {
List moduleConfigList = List.of(
new ModuleConfig(TopicExtractor.class.getName(), ModuleConfig.Constant.INTERNAL, null),
- new ModuleConfig(MemoryManager.class.getName(), ModuleConfig.Constant.INTERNAL, null),
+ new ModuleConfig(MemorySelector.class.getName(), ModuleConfig.Constant.INTERNAL, null),
+ new ModuleConfig(CoreModel.class.getName(),ModuleConfig.Constant.INTERNAL,null),
+ new ModuleConfig(MemoryUpdater.class.getName(),ModuleConfig.Constant.INTERNAL,null),
new ModuleConfig(TaskScheduler.class.getName(), ModuleConfig.Constant.INTERNAL, null)
);
config.setModuleConfigList(moduleConfigList);
@@ -90,8 +95,8 @@ public class Config {
yield SliceEvaluator.MODEL_KEY;
}
case 2 -> {
- System.out.println("TaskTrigger:");
- yield TaskScheduler.MODEL_KEY;
+ System.out.println("TaskEvaluator:");
+ yield TaskEvaluator.MODEL_KEY;
}
case 3 -> {
System.out.println("TopicExtractor:");
diff --git a/src/main/java/work/slhaf/agent/common/model/Model.java b/src/main/java/work/slhaf/agent/common/model/Model.java
index 3256b954..14179097 100644
--- a/src/main/java/work/slhaf/agent/common/model/Model.java
+++ b/src/main/java/work/slhaf/agent/common/model/Model.java
@@ -2,11 +2,12 @@ package work.slhaf.agent.common.model;
import lombok.Data;
import work.slhaf.agent.common.chat.ChatClient;
-import work.slhaf.agent.common.chat.constant.Constant;
+import work.slhaf.agent.common.chat.constant.ChatConstant;
+import work.slhaf.agent.common.chat.pojo.ChatResponse;
import work.slhaf.agent.common.chat.pojo.Message;
import work.slhaf.agent.common.config.Config;
import work.slhaf.agent.common.config.ModelConfig;
-import work.slhaf.agent.modules.memory.MemoryGraph;
+import work.slhaf.agent.core.memory.MemoryGraph;
import java.io.IOException;
import java.util.ArrayList;
@@ -29,7 +30,7 @@ public class Model {
}
if (memoryGraph.getChatMessages() == null) {
List tempMessages = new ArrayList<>();
- tempMessages.add(new Message(Constant.Character.SYSTEM, model.getPrompt()));
+ tempMessages.add(new Message(ChatConstant.Character.SYSTEM, model.getPrompt()));
model.setMessages(tempMessages);
memoryGraph.setChatMessages(tempMessages);
} else {
@@ -37,4 +38,16 @@ public class Model {
}
model.setChatClient(new ChatClient(modelConfig.getBaseUrl(), modelConfig.getApikey(), modelConfig.getModel()));
}
+
+ public ChatResponse runChat(String input) {
+ this.messages.add(new Message(ChatConstant.Character.USER, input));
+ return this.chatClient.runChat(this.messages);
+ }
+
+ public ChatResponse singleChat(String input) {
+ return this.chatClient.runChat(List.of(
+ new Message(ChatConstant.Character.SYSTEM, this.prompt),
+ new Message(ChatConstant.Character.USER, input)
+ ));
+ }
}
diff --git a/src/main/java/work/slhaf/agent/common/model/ModelConstant.java b/src/main/java/work/slhaf/agent/common/model/ModelConstant.java
index 00fac5bc..a43652fe 100644
--- a/src/main/java/work/slhaf/agent/common/model/ModelConstant.java
+++ b/src/main/java/work/slhaf/agent/common/model/ModelConstant.java
@@ -2,59 +2,11 @@ package work.slhaf.agent.common.model;
public class ModelConstant {
public static final String CORE_MODEL_PROMPT = """
- 你是一个智能助理,专为提供个性化对话体验而设计。你拥有持久记忆系统,能够根据过去的对话和个人信息提供相关回复。请遵循以下规则:
-
- 1. **记忆管理**:
- - 你可以通过查询过去的对话或事件来提供更相关的建议和回答。记住,所有记忆都应在用户的明确要求下进行更新。
- - 每次回复前,你应查询并注入相关的记忆片段(切片)以补充上下文。如果记忆片段不足或需要更多信息,请尝试主动提问获取详细信息。
-
- 2. **对话上下文**:
- - 使用提供的对话摘要来建立对话的上下文。始终根据对话主题(如生活、健康、学习等)来提供切合的回应。
- - 对话切片应包含当前话题以及与用户相关的历史信息。请在系统提示中加载适当的主题路径。
-
- 3. **任务调度与推理**:
- - 在对话中,如果发现用户有明确的任务需求(例如:设置提醒、安排会议等),请识别并提取任务意图。对于潜在任务,可以通过询问用户进一步确认。
- - 如果任务触发条件符合,请在回复中告知用户任务已经识别并推送至任务调度系统。
-
- 4. **行为约束**:
- - 确保回答始终清晰、礼貌并且尽可能帮助用户。避免提供无关或不准确的信息。
- - 如果用户提出要求超出合理范围(例如设置过于晚的提醒),请礼貌地进行反向确认或建议。
-
- 5. **用户个性化**:
- - 对话中涉及到用户的偏好、爱好、历史事件等应当进行个性化回应。你可以使用记忆系统中的用户信息来增加对话的自然度和亲和力。
-
- 6. **动态记忆更新**:
- - 动态更新记忆时,要确保准确地记录用户的需求和变动。更新过程应具有透明性,并且在更新前可以询问用户确认。
-
- 系统目标:始终提供最相关、最个性化的回复,并通过持续回顾与更新来提高系统的长期记忆能力。
-
""";
public static final String SLICE_EVALUATOR_PROMPT = """
- 你是一个智能助理,专为提供个性化对话体验而设计。你拥有持久记忆系统,能够根据过去的对话和个人信息提供相关回复。请遵循以下规则:
-
- 1. **记忆管理**:
- - 你可以通过查询过去的对话或事件来提供更相关的建议和回答。记住,所有记忆都应在用户的明确要求下进行更新。
- - 每次回复前,你应查询并注入相关的记忆片段(切片)以补充上下文。如果记忆片段不足或需要更多信息,请尝试主动提问获取详细信息。
-
- 2. **对话上下文**:
- - 使用提供的对话摘要来建立对话的上下文。始终根据对话主题(如生活、健康、学习等)来提供切合的回应。
- - 对话切片应包含当前话题以及与用户相关的历史信息。请在系统提示中加载适当的主题路径。
-
- 3. **任务调度与推理**:
- - 在对话中,如果发现用户有明确的任务需求(例如:设置提醒、安排会议等),请识别并提取任务意图。对于潜在任务,可以通过询问用户进一步确认。
- - 如果任务触发条件符合,请在回复中告知用户任务已经识别并推送至任务调度系统。
-
- 4. **行为约束**:
- - 确保回答始终清晰、礼貌并且尽可能帮助用户。避免提供无关或不准确的信息。
- - 如果用户提出要求超出合理范围(例如设置过于晚的提醒),请礼貌地进行反向确认或建议。
-
- 5. **用户个性化**:
- - 对话中涉及到用户的偏好、爱好、历史事件等应当进行个性化回应。你可以使用记忆系统中的用户信息来增加对话的自然度和亲和力。
-
- 6. **动态记忆更新**:
- - 动态更新记忆时,要确保准确地记录用户的需求和变动。更新过程应具有透明性,并且在更新前可以询问用户确认。
-
- 系统目标:始终提供最相关、最个性化的回复,并通过持续回顾与更新来提高系统的长期记忆能力。
-
+ """;
+ public static final String TOPIC_EXTRACTOR_PROMPT = """
+ """;
+ public static final String TASK_EVALUATOR_PROMPT = """
""";
}
diff --git a/src/main/java/work/slhaf/agent/core/InteractionHub.java b/src/main/java/work/slhaf/agent/core/InteractionHub.java
index b0e46048..ab8a976c 100644
--- a/src/main/java/work/slhaf/agent/core/InteractionHub.java
+++ b/src/main/java/work/slhaf/agent/core/InteractionHub.java
@@ -2,14 +2,15 @@ package work.slhaf.agent.core;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-import work.slhaf.agent.common.config.Config;
-import work.slhaf.agent.core.interation.InteractionModulesLoader;
-import work.slhaf.agent.core.interation.TaskCallback;
-import work.slhaf.agent.core.interation.data.InteractionInputData;
+import work.slhaf.agent.core.interaction.InteractionModule;
+import work.slhaf.agent.core.interaction.InteractionModulesLoader;
+import work.slhaf.agent.core.interaction.TaskCallback;
+import work.slhaf.agent.core.interaction.data.InteractionContext;
+import work.slhaf.agent.core.interaction.data.InteractionInputData;
import work.slhaf.agent.core.model.CoreModel;
-import work.slhaf.agent.modules.memory.MemoryManager;
+import work.slhaf.agent.core.memory.MemoryManager;
+import work.slhaf.agent.modules.preprocess.PreprocessExecutor;
import work.slhaf.agent.modules.task.TaskScheduler;
-import work.slhaf.module.InteractionModule;
import java.io.IOException;
import java.util.List;
@@ -35,8 +36,13 @@ public class InteractionHub {
}
public void call(InteractionInputData inputData) throws IOException {
- List interactionModules = InteractionModulesLoader.registerInteractionModules();
-
- callback.onTaskFinished(null, null);
+ //预处理
+ InteractionContext interactionContext = PreprocessExecutor.getInstance().execute(inputData);
+ //加载模块
+ List interactionModules = InteractionModulesLoader.getInstance().registerInteractionModules();
+ for (InteractionModule interactionModule : interactionModules) {
+ interactionModule.execute(interactionContext);
+ }
+ callback.onTaskFinished(interactionContext.getUserInfo(), interactionContext.getCoreResponse().getMessage());
}
}
diff --git a/src/main/java/work/slhaf/agent/core/interaction/InteractionModule.java b/src/main/java/work/slhaf/agent/core/interaction/InteractionModule.java
new file mode 100644
index 00000000..48d80e65
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/interaction/InteractionModule.java
@@ -0,0 +1,7 @@
+package work.slhaf.agent.core.interaction;
+
+import work.slhaf.agent.core.interaction.data.InteractionContext;
+
+public interface InteractionModule {
+ void execute(InteractionContext context);
+}
diff --git a/src/main/java/work/slhaf/agent/core/interaction/InteractionModulesLoader.java b/src/main/java/work/slhaf/agent/core/interaction/InteractionModulesLoader.java
new file mode 100644
index 00000000..88862c7f
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/interaction/InteractionModulesLoader.java
@@ -0,0 +1,62 @@
+package work.slhaf.agent.core.interaction;
+
+import work.slhaf.agent.common.config.Config;
+import work.slhaf.agent.common.config.ModuleConfig;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.List;
+
+public class InteractionModulesLoader {
+
+ private static InteractionModulesLoader interactionModulesLoader;
+
+ public static InteractionModulesLoader getInstance(){
+ if (interactionModulesLoader == null) {
+ interactionModulesLoader = new InteractionModulesLoader();
+ }
+ return interactionModulesLoader;
+ }
+
+ public List registerInteractionModules() throws IOException {
+ List moduleList = new ArrayList<>();
+ List moduleConfigList = Config.getConfig().getModuleConfigList();
+ for (ModuleConfig moduleConfig : moduleConfigList) {
+ if (ModuleConfig.Constant.INTERNAL.equals(moduleConfig.getType())) {
+ moduleList.add(loadInternalModule(moduleConfig.getClassName()));
+ } else if (ModuleConfig.Constant.EXTERNAL.equals(moduleConfig.getType())) {
+ moduleList.add(loadExternalModule(moduleConfig.getClassName(),moduleConfig.getPath()));
+ }
+ }
+ return moduleList;
+ }
+
+ private InteractionModule loadExternalModule(String className, String path) {
+ try {
+ URL jarUrl = new File(path).toURI().toURL();
+ URLClassLoader loader = new URLClassLoader(new URL[]{jarUrl}, this.getClass().getClassLoader());
+
+ Class> clazz = loader.loadClass(className);
+ loader.close();
+ return (InteractionModule) clazz.getMethod("getInstance").invoke(null);
+ } catch (ClassNotFoundException | InvocationTargetException | IllegalAccessException |
+ NoSuchMethodException | IOException e) {
+ throw new RuntimeException("Fail to load internal module: " + className ,e);
+ }
+ }
+
+ private static InteractionModule loadInternalModule(String className) {
+ try {
+ Class> clazz = Class.forName(className);
+
+ //TODO 后续需要规范`getInstance`方法的实现
+ return (InteractionModule) clazz.getMethod("getInstance").invoke(null);
+ } catch (ClassNotFoundException | InvocationTargetException | IllegalAccessException | NoSuchMethodException e) {
+ throw new RuntimeException("Fail to load internal module: " + className,e);
+ }
+ }
+}
diff --git a/src/main/java/work/slhaf/agent/core/interaction/InteractionThreadPoolExecutor.java b/src/main/java/work/slhaf/agent/core/interaction/InteractionThreadPoolExecutor.java
new file mode 100644
index 00000000..e9e61868
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/interaction/InteractionThreadPoolExecutor.java
@@ -0,0 +1,28 @@
+package work.slhaf.agent.core.interaction;
+
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+public class InteractionThreadPoolExecutor extends ThreadPoolExecutor {
+
+ private static InteractionThreadPoolExecutor interactionThreadPoolExecutor;
+
+ private InteractionThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue) {
+ super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
+ }
+
+ public static InteractionThreadPoolExecutor getInstance() {
+ if (interactionThreadPoolExecutor == null) {
+ interactionThreadPoolExecutor = new InteractionThreadPoolExecutor(
+ 8,
+ 24,
+ 60,
+ TimeUnit.SECONDS,
+ new ArrayBlockingQueue<>(50)
+ );
+ }
+ return interactionThreadPoolExecutor;
+ }
+}
diff --git a/src/main/java/work/slhaf/agent/core/interation/TaskCallback.java b/src/main/java/work/slhaf/agent/core/interaction/TaskCallback.java
similarity index 67%
rename from src/main/java/work/slhaf/agent/core/interation/TaskCallback.java
rename to src/main/java/work/slhaf/agent/core/interaction/TaskCallback.java
index 3966fccf..8c424661 100644
--- a/src/main/java/work/slhaf/agent/core/interation/TaskCallback.java
+++ b/src/main/java/work/slhaf/agent/core/interaction/TaskCallback.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.core.interation;
+package work.slhaf.agent.core.interaction;
public interface TaskCallback {
void onTaskFinished(String userInfo,String output);
diff --git a/src/main/java/work/slhaf/agent/core/interaction/data/InteractionContext.java b/src/main/java/work/slhaf/agent/core/interaction/data/InteractionContext.java
new file mode 100644
index 00000000..f4680eb5
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/core/interaction/data/InteractionContext.java
@@ -0,0 +1,26 @@
+package work.slhaf.agent.core.interaction.data;
+
+import com.alibaba.fastjson2.JSONObject;
+import lombok.Data;
+import work.slhaf.agent.common.chat.pojo.ChatResponse;
+import work.slhaf.agent.core.memory.pojo.MemorySlice;
+import work.slhaf.agent.modules.task.data.TaskData;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class InteractionContext {
+ protected String userInfo;
+ protected String userNickname;
+ protected LocalDateTime dateTime;
+
+ protected boolean finished;
+ protected String input;
+ protected JSONObject tempResult;
+ protected ChatResponse coreResponse;
+
+ protected List memorySlices;
+ protected List topicPath;
+ protected List taskDataList;
+}
diff --git a/src/main/java/work/slhaf/agent/core/interation/data/InteractionInputData.java b/src/main/java/work/slhaf/agent/core/interaction/data/InteractionInputData.java
similarity index 82%
rename from src/main/java/work/slhaf/agent/core/interation/data/InteractionInputData.java
rename to src/main/java/work/slhaf/agent/core/interaction/data/InteractionInputData.java
index 7f66baf5..274b3249 100644
--- a/src/main/java/work/slhaf/agent/core/interation/data/InteractionInputData.java
+++ b/src/main/java/work/slhaf/agent/core/interaction/data/InteractionInputData.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.core.interation.data;
+package work.slhaf.agent.core.interaction.data;
import lombok.Data;
diff --git a/src/main/java/work/slhaf/agent/core/interation/data/InteractionOutputData.java b/src/main/java/work/slhaf/agent/core/interaction/data/InteractionOutputData.java
similarity index 65%
rename from src/main/java/work/slhaf/agent/core/interation/data/InteractionOutputData.java
rename to src/main/java/work/slhaf/agent/core/interaction/data/InteractionOutputData.java
index dce47bbc..8ff83cd9 100644
--- a/src/main/java/work/slhaf/agent/core/interation/data/InteractionOutputData.java
+++ b/src/main/java/work/slhaf/agent/core/interaction/data/InteractionOutputData.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.core.interation.data;
+package work.slhaf.agent.core.interaction.data;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -7,4 +7,5 @@ import lombok.Data;
@AllArgsConstructor
public class InteractionOutputData {
private String content;
+ private String userInfo;
}
diff --git a/src/main/java/work/slhaf/agent/core/interation/InteractionModulesLoader.java b/src/main/java/work/slhaf/agent/core/interation/InteractionModulesLoader.java
deleted file mode 100644
index 71103391..00000000
--- a/src/main/java/work/slhaf/agent/core/interation/InteractionModulesLoader.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package work.slhaf.agent.core.interation;
-
-import work.slhaf.agent.common.config.Config;
-import work.slhaf.agent.common.config.ModuleConfig;
-import work.slhaf.module.InteractionModule;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class InteractionModulesLoader {
- public static List registerInteractionModules() throws IOException {
- List moduleList = new ArrayList<>();
- List moduleConfigList = Config.getConfig().getModuleConfigList();
- for (ModuleConfig moduleConfig : moduleConfigList) {
- if (ModuleConfig.Constant.INTERNAL.equals(moduleConfig.getType())) {
- moduleList.add(loadInternalModule(moduleConfig.getClassName()));
- }
- }
- return moduleList;
- }
-
- private static InteractionModule loadInternalModule(String moduleName) {
- try {
- Class> clazz = Class.forName(moduleName);
-
- //TODO 后续需要规范`getInstance`方法的实现
- return (InteractionModule) clazz.getMethod("getInstance").invoke(null);
- } catch (ClassNotFoundException | InvocationTargetException | IllegalAccessException | NoSuchMethodException e) {
- throw new RuntimeException("Fail to load internal module: " + moduleName,e);
- }
- }
-}
diff --git a/src/main/java/work/slhaf/agent/modules/memory/MemoryGraph.java b/src/main/java/work/slhaf/agent/core/memory/MemoryGraph.java
similarity index 97%
rename from src/main/java/work/slhaf/agent/modules/memory/MemoryGraph.java
rename to src/main/java/work/slhaf/agent/core/memory/MemoryGraph.java
index 4c9dd5e3..6aaf17a5 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/MemoryGraph.java
+++ b/src/main/java/work/slhaf/agent/core/memory/MemoryGraph.java
@@ -1,17 +1,17 @@
-package work.slhaf.agent.modules.memory;
+package work.slhaf.agent.core.memory;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import work.slhaf.agent.common.chat.pojo.Message;
-import work.slhaf.agent.modules.memory.exception.UnExistedTopicException;
-import work.slhaf.agent.modules.memory.node.MemoryNode;
-import work.slhaf.agent.modules.memory.node.TopicNode;
-import work.slhaf.agent.modules.memory.pojo.MemoryResult;
-import work.slhaf.agent.modules.memory.pojo.MemorySlice;
-import work.slhaf.agent.modules.memory.pojo.MemorySliceResult;
-import work.slhaf.agent.modules.memory.pojo.PersistableObject;
+import work.slhaf.agent.core.memory.exception.UnExistedTopicException;
+import work.slhaf.agent.core.memory.node.MemoryNode;
+import work.slhaf.agent.core.memory.node.TopicNode;
+import work.slhaf.agent.core.memory.pojo.MemoryResult;
+import work.slhaf.agent.core.memory.pojo.MemorySlice;
+import work.slhaf.agent.core.memory.pojo.MemorySliceResult;
+import work.slhaf.agent.core.memory.pojo.PersistableObject;
import java.io.*;
import java.nio.file.Files;
diff --git a/src/main/java/work/slhaf/agent/modules/memory/MemoryManager.java b/src/main/java/work/slhaf/agent/core/memory/MemoryManager.java
similarity index 74%
rename from src/main/java/work/slhaf/agent/modules/memory/MemoryManager.java
rename to src/main/java/work/slhaf/agent/core/memory/MemoryManager.java
index f91aab71..14298985 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/MemoryManager.java
+++ b/src/main/java/work/slhaf/agent/core/memory/MemoryManager.java
@@ -1,10 +1,11 @@
-package work.slhaf.agent.modules.memory;
+package work.slhaf.agent.core.memory;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.agent.common.config.Config;
-import work.slhaf.module.InteractionContext;
-import work.slhaf.module.InteractionModule;
+import work.slhaf.agent.core.interaction.InteractionModule;
+import work.slhaf.agent.core.interaction.data.InteractionContext;
+import work.slhaf.agent.modules.memory.SliceEvaluator;
import java.io.IOException;
@@ -29,7 +30,7 @@ public class MemoryManager implements InteractionModule {
Config config = Config.getConfig();
memoryManager = new MemoryManager();
memoryManager.setMemoryGraph(MemoryGraph.getInstance(config.getAgentId()));
- memoryManager.setSliceEvaluator(SliceEvaluator.initialize(config));
+ memoryManager.setSliceEvaluator(SliceEvaluator.getInstance());
log.info("MemoryManager注册完毕...");
}
return memoryManager;
diff --git a/src/main/java/work/slhaf/agent/modules/memory/exception/NullSliceListException.java b/src/main/java/work/slhaf/agent/core/memory/exception/NullSliceListException.java
similarity index 74%
rename from src/main/java/work/slhaf/agent/modules/memory/exception/NullSliceListException.java
rename to src/main/java/work/slhaf/agent/core/memory/exception/NullSliceListException.java
index eaa8b25a..595ec00c 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/exception/NullSliceListException.java
+++ b/src/main/java/work/slhaf/agent/core/memory/exception/NullSliceListException.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.modules.memory.exception;
+package work.slhaf.agent.core.memory.exception;
public class NullSliceListException extends RuntimeException {
public NullSliceListException(String message) {
diff --git a/src/main/java/work/slhaf/agent/modules/memory/exception/UnExistedTopicException.java b/src/main/java/work/slhaf/agent/core/memory/exception/UnExistedTopicException.java
similarity index 74%
rename from src/main/java/work/slhaf/agent/modules/memory/exception/UnExistedTopicException.java
rename to src/main/java/work/slhaf/agent/core/memory/exception/UnExistedTopicException.java
index b620c202..6050b1c3 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/exception/UnExistedTopicException.java
+++ b/src/main/java/work/slhaf/agent/core/memory/exception/UnExistedTopicException.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.modules.memory.exception;
+package work.slhaf.agent.core.memory.exception;
public class UnExistedTopicException extends RuntimeException {
public UnExistedTopicException(String message) {
diff --git a/src/main/java/work/slhaf/agent/modules/memory/node/MemoryNode.java b/src/main/java/work/slhaf/agent/core/memory/node/MemoryNode.java
similarity index 91%
rename from src/main/java/work/slhaf/agent/modules/memory/node/MemoryNode.java
rename to src/main/java/work/slhaf/agent/core/memory/node/MemoryNode.java
index 62932ca4..c47174d6 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/node/MemoryNode.java
+++ b/src/main/java/work/slhaf/agent/core/memory/node/MemoryNode.java
@@ -1,11 +1,11 @@
-package work.slhaf.agent.modules.memory.node;
+package work.slhaf.agent.core.memory.node;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
-import work.slhaf.agent.modules.memory.exception.NullSliceListException;
-import work.slhaf.agent.modules.memory.pojo.MemorySlice;
-import work.slhaf.agent.modules.memory.pojo.PersistableObject;
+import work.slhaf.agent.core.memory.exception.NullSliceListException;
+import work.slhaf.agent.core.memory.pojo.MemorySlice;
+import work.slhaf.agent.core.memory.pojo.PersistableObject;
import java.io.*;
import java.nio.file.Files;
diff --git a/src/main/java/work/slhaf/agent/modules/memory/node/TopicNode.java b/src/main/java/work/slhaf/agent/core/memory/node/TopicNode.java
similarity index 80%
rename from src/main/java/work/slhaf/agent/modules/memory/node/TopicNode.java
rename to src/main/java/work/slhaf/agent/core/memory/node/TopicNode.java
index c2e68f71..a84ca505 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/node/TopicNode.java
+++ b/src/main/java/work/slhaf/agent/core/memory/node/TopicNode.java
@@ -1,8 +1,8 @@
-package work.slhaf.agent.modules.memory.node;
+package work.slhaf.agent.core.memory.node;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import work.slhaf.agent.modules.memory.pojo.PersistableObject;
+import work.slhaf.agent.core.memory.pojo.PersistableObject;
import java.io.Serial;
import java.util.concurrent.ConcurrentHashMap;
diff --git a/src/main/java/work/slhaf/agent/modules/memory/pojo/MemoryResult.java b/src/main/java/work/slhaf/agent/core/memory/pojo/MemoryResult.java
similarity index 80%
rename from src/main/java/work/slhaf/agent/modules/memory/pojo/MemoryResult.java
rename to src/main/java/work/slhaf/agent/core/memory/pojo/MemoryResult.java
index 1788fef3..86d713d6 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/pojo/MemoryResult.java
+++ b/src/main/java/work/slhaf/agent/core/memory/pojo/MemoryResult.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.modules.memory.pojo;
+package work.slhaf.agent.core.memory.pojo;
import lombok.Data;
diff --git a/src/main/java/work/slhaf/agent/modules/memory/pojo/MemorySlice.java b/src/main/java/work/slhaf/agent/core/memory/pojo/MemorySlice.java
similarity index 97%
rename from src/main/java/work/slhaf/agent/modules/memory/pojo/MemorySlice.java
rename to src/main/java/work/slhaf/agent/core/memory/pojo/MemorySlice.java
index 03c5c4bd..79b69b8d 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/pojo/MemorySlice.java
+++ b/src/main/java/work/slhaf/agent/core/memory/pojo/MemorySlice.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.modules.memory.pojo;
+package work.slhaf.agent.core.memory.pojo;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/src/main/java/work/slhaf/agent/modules/memory/pojo/MemorySliceResult.java b/src/main/java/work/slhaf/agent/core/memory/pojo/MemorySliceResult.java
similarity index 78%
rename from src/main/java/work/slhaf/agent/modules/memory/pojo/MemorySliceResult.java
rename to src/main/java/work/slhaf/agent/core/memory/pojo/MemorySliceResult.java
index bd58183c..2adb91e3 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/pojo/MemorySliceResult.java
+++ b/src/main/java/work/slhaf/agent/core/memory/pojo/MemorySliceResult.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.modules.memory.pojo;
+package work.slhaf.agent.core.memory.pojo;
import lombok.Data;
diff --git a/src/main/java/work/slhaf/agent/modules/memory/pojo/PersistableObject.java b/src/main/java/work/slhaf/agent/core/memory/pojo/PersistableObject.java
similarity index 68%
rename from src/main/java/work/slhaf/agent/modules/memory/pojo/PersistableObject.java
rename to src/main/java/work/slhaf/agent/core/memory/pojo/PersistableObject.java
index 78148d02..270a8400 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/pojo/PersistableObject.java
+++ b/src/main/java/work/slhaf/agent/core/memory/pojo/PersistableObject.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.modules.memory.pojo;
+package work.slhaf.agent.core.memory.pojo;
import java.io.Serializable;
diff --git a/src/main/java/work/slhaf/agent/modules/memory/pojo/User.java b/src/main/java/work/slhaf/agent/core/memory/pojo/User.java
similarity index 77%
rename from src/main/java/work/slhaf/agent/modules/memory/pojo/User.java
rename to src/main/java/work/slhaf/agent/core/memory/pojo/User.java
index 0fead634..8eed2a71 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/pojo/User.java
+++ b/src/main/java/work/slhaf/agent/core/memory/pojo/User.java
@@ -1,4 +1,4 @@
-package work.slhaf.agent.modules.memory.pojo;
+package work.slhaf.agent.core.memory.pojo;
import lombok.Data;
diff --git a/src/main/java/work/slhaf/agent/core/model/CoreModel.java b/src/main/java/work/slhaf/agent/core/model/CoreModel.java
index b5667b49..e7c0d0e5 100644
--- a/src/main/java/work/slhaf/agent/core/model/CoreModel.java
+++ b/src/main/java/work/slhaf/agent/core/model/CoreModel.java
@@ -3,31 +3,41 @@ package work.slhaf.agent.core.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
+import work.slhaf.agent.common.chat.pojo.ChatResponse;
import work.slhaf.agent.common.config.Config;
import work.slhaf.agent.common.model.Model;
import work.slhaf.agent.common.model.ModelConstant;
+import work.slhaf.agent.core.interaction.InteractionModule;
+import work.slhaf.agent.core.interaction.data.InteractionContext;
import java.io.IOException;
@EqualsAndHashCode(callSuper = true)
@Data
@Slf4j
-public class CoreModel extends Model {
+public class CoreModel extends Model implements InteractionModule {
public static final String MODEL_KEY = "core_model";
private static CoreModel coreModel;
- private CoreModel(){}
+ private CoreModel() {
+ }
public static CoreModel getInstance() throws IOException, ClassNotFoundException {
if (coreModel == null) {
Config config = Config.getConfig();
coreModel = new CoreModel();
- coreModel.setPrompt(ModelConstant.CORE_MODEL_PROMPT);
- setModel(config, coreModel, MODEL_KEY, coreModel.getPrompt());
+ setModel(config, coreModel, MODEL_KEY, ModelConstant.CORE_MODEL_PROMPT);
log.info("CoreModel注册完毕...");
}
return coreModel;
}
+ @Override
+ public void execute(InteractionContext interactionContext) {
+ //TODO 需要拼接上下文之后再发送给主模型
+
+ ChatResponse res = runChat(interactionContext.getInput());
+ interactionContext.setCoreResponse(res);
+ }
}
diff --git a/src/main/java/work/slhaf/agent/gateway/AgentWebSocketServer.java b/src/main/java/work/slhaf/agent/gateway/AgentWebSocketServer.java
index 15c58448..922ee896 100644
--- a/src/main/java/work/slhaf/agent/gateway/AgentWebSocketServer.java
+++ b/src/main/java/work/slhaf/agent/gateway/AgentWebSocketServer.java
@@ -7,8 +7,8 @@ import org.java_websocket.WebSocket;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import work.slhaf.agent.Agent;
-import work.slhaf.agent.core.interation.data.InteractionInputData;
-import work.slhaf.agent.core.interation.data.InteractionOutputData;
+import work.slhaf.agent.core.interaction.data.InteractionInputData;
+import work.slhaf.agent.core.interaction.data.InteractionOutputData;
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -58,12 +58,12 @@ public class AgentWebSocketServer extends WebSocketServer implements MessageSend
}
@Override
- public void sendMessage(String userInfo,String message) {
- WebSocket webSocket = userSessions.get(userInfo);
+ public void sendMessage(InteractionOutputData outputData) {
+ WebSocket webSocket = userSessions.get(outputData.getUserInfo());
if (webSocket != null && webSocket.isOpen()) {
- webSocket.send(JSONUtil.toJsonStr(new InteractionOutputData(message)));
+ webSocket.send(JSONUtil.toJsonStr(outputData));
}else {
- log.warn("用户不在线: {}",userInfo);
+ log.warn("用户不在线: {}",outputData.getUserInfo());
}
}
}
diff --git a/src/main/java/work/slhaf/agent/gateway/MessageSender.java b/src/main/java/work/slhaf/agent/gateway/MessageSender.java
index 9131059f..f0079582 100644
--- a/src/main/java/work/slhaf/agent/gateway/MessageSender.java
+++ b/src/main/java/work/slhaf/agent/gateway/MessageSender.java
@@ -1,5 +1,7 @@
package work.slhaf.agent.gateway;
+import work.slhaf.agent.core.interaction.data.InteractionOutputData;
+
public interface MessageSender {
- void sendMessage(String userInfo,String message);
+ void sendMessage(InteractionOutputData outputData);
}
diff --git a/src/main/java/work/slhaf/agent/modules/memory/MemorySelector.java b/src/main/java/work/slhaf/agent/modules/memory/MemorySelector.java
new file mode 100644
index 00000000..dd3f86ab
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/modules/memory/MemorySelector.java
@@ -0,0 +1,33 @@
+package work.slhaf.agent.modules.memory;
+
+import lombok.Data;
+import work.slhaf.agent.core.interaction.InteractionModule;
+import work.slhaf.agent.core.interaction.data.InteractionContext;
+import work.slhaf.agent.core.memory.MemoryManager;
+
+import java.io.IOException;
+
+@Data
+public class MemorySelector implements InteractionModule {
+
+ private static MemorySelector memorySelector;
+
+ private MemoryManager memoryManager;
+ private SliceEvaluator sliceEvaluator;
+
+ private MemorySelector(){}
+
+ public static MemorySelector getInstance() throws IOException, ClassNotFoundException {
+ if (memorySelector == null) {
+ memorySelector = new MemorySelector();
+ memorySelector.setMemoryManager(MemoryManager.getInstance());
+ memorySelector.setSliceEvaluator(SliceEvaluator.getInstance());
+ }
+ return memorySelector;
+ }
+
+ @Override
+ public void execute(InteractionContext interactionContext) {
+
+ }
+}
diff --git a/src/main/java/work/slhaf/agent/modules/memory/MemoryUpdater.java b/src/main/java/work/slhaf/agent/modules/memory/MemoryUpdater.java
new file mode 100644
index 00000000..6c36f40c
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/modules/memory/MemoryUpdater.java
@@ -0,0 +1,33 @@
+package work.slhaf.agent.modules.memory;
+
+import lombok.Data;
+import work.slhaf.agent.core.interaction.InteractionModule;
+import work.slhaf.agent.core.interaction.InteractionThreadPoolExecutor;
+import work.slhaf.agent.core.interaction.data.InteractionContext;
+import work.slhaf.agent.core.memory.MemoryManager;
+
+import java.io.IOException;
+
+@Data
+public class MemoryUpdater implements InteractionModule {
+
+ private static MemoryUpdater memoryUpdater;
+
+ private MemoryManager memoryManager;
+ private InteractionThreadPoolExecutor executor;
+
+ private MemoryUpdater(){}
+
+ public static MemoryUpdater getInstance() throws IOException, ClassNotFoundException {
+ if (memoryUpdater == null) {
+ memoryUpdater = new MemoryUpdater();
+ memoryUpdater.setMemoryManager(MemoryManager.getInstance());
+ }
+ return memoryUpdater;
+ }
+
+ @Override
+ public void execute(InteractionContext interactionContext) {
+
+ }
+}
diff --git a/src/main/java/work/slhaf/agent/modules/memory/SliceEvaluator.java b/src/main/java/work/slhaf/agent/modules/memory/SliceEvaluator.java
index 6c6a7044..e7e19478 100644
--- a/src/main/java/work/slhaf/agent/modules/memory/SliceEvaluator.java
+++ b/src/main/java/work/slhaf/agent/modules/memory/SliceEvaluator.java
@@ -19,12 +19,11 @@ public class SliceEvaluator extends Model {
private SliceEvaluator(){}
- public static SliceEvaluator initialize(Config config) throws IOException, ClassNotFoundException {
-
+ public static SliceEvaluator getInstance() throws IOException, ClassNotFoundException {
if (sliceEvaluator == null) {
+ Config config = Config.getConfig();
sliceEvaluator = new SliceEvaluator();
- sliceEvaluator.setPrompt(ModelConstant.SLICE_EVALUATOR_PROMPT);
- setModel(config,sliceEvaluator, MODEL_KEY, sliceEvaluator.getPrompt());
+ setModel(config,sliceEvaluator, MODEL_KEY, ModelConstant.SLICE_EVALUATOR_PROMPT);
log.info("SliceEvaluator注册完毕...");
}
diff --git a/src/main/java/work/slhaf/agent/modules/preprocess/PreprocessExecutor.java b/src/main/java/work/slhaf/agent/modules/preprocess/PreprocessExecutor.java
index 995b4de9..d7ff071c 100644
--- a/src/main/java/work/slhaf/agent/modules/preprocess/PreprocessExecutor.java
+++ b/src/main/java/work/slhaf/agent/modules/preprocess/PreprocessExecutor.java
@@ -1,7 +1,7 @@
package work.slhaf.agent.modules.preprocess;
-import work.slhaf.agent.core.interation.data.InteractionInputData;
-import work.slhaf.module.InteractionContext;
+import work.slhaf.agent.core.interaction.data.InteractionContext;
+import work.slhaf.agent.core.interaction.data.InteractionInputData;
public class PreprocessExecutor {
@@ -18,11 +18,13 @@ public class PreprocessExecutor {
public InteractionContext execute(InteractionInputData inputData) {
InteractionContext context = new InteractionContext();
- context.setDateTime(inputData.getLocalDateTime());
- context.setFinished(false);
- context.setInput(inputData.getContent());
+
context.setUserInfo(inputData.getUserInfo());
context.setUserNickname(inputData.getUserNickName());
+ context.setDateTime(inputData.getLocalDateTime());
+
+ context.setFinished(false);
+ context.setInput(inputData.getContent());
return context;
}
diff --git a/src/main/java/work/slhaf/agent/modules/task/TaskEvaluator.java b/src/main/java/work/slhaf/agent/modules/task/TaskEvaluator.java
index afffacb7..28338654 100644
--- a/src/main/java/work/slhaf/agent/modules/task/TaskEvaluator.java
+++ b/src/main/java/work/slhaf/agent/modules/task/TaskEvaluator.java
@@ -1,4 +1,27 @@
package work.slhaf.agent.modules.task;
-public class TaskEvaluator {
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import work.slhaf.agent.common.config.Config;
+import work.slhaf.agent.common.config.ModelConfig;
+import work.slhaf.agent.common.model.Model;
+import work.slhaf.agent.common.model.ModelConstant;
+
+import java.io.IOException;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class TaskEvaluator extends Model {
+ public static final String MODEL_KEY = "task_evaluator";
+ private static TaskEvaluator taskEvaluator;
+
+ private TaskEvaluator (){}
+
+ public static TaskEvaluator getInstance() throws IOException, ClassNotFoundException {
+ if (taskEvaluator == null) {
+ taskEvaluator = new TaskEvaluator();
+ setModel(Config.getConfig(),taskEvaluator,MODEL_KEY,ModelConstant.TASK_EVALUATOR_PROMPT);
+ }
+ return taskEvaluator;
+ }
}
diff --git a/src/main/java/work/slhaf/agent/modules/task/TaskExecutor.java b/src/main/java/work/slhaf/agent/modules/task/TaskExecutor.java
index d6ac4a5b..96c07bf0 100644
--- a/src/main/java/work/slhaf/agent/modules/task/TaskExecutor.java
+++ b/src/main/java/work/slhaf/agent/modules/task/TaskExecutor.java
@@ -1,4 +1,20 @@
package work.slhaf.agent.modules.task;
+import lombok.Data;
+import work.slhaf.agent.core.interaction.InteractionThreadPoolExecutor;
+
+@Data
public class TaskExecutor {
+
+ private static TaskExecutor taskExecutor;
+ private InteractionThreadPoolExecutor executor;
+ private TaskExecutor(){}
+
+ public static TaskExecutor getInstance(){
+ if (taskExecutor == null){
+ taskExecutor = new TaskExecutor();
+ taskExecutor.setExecutor(InteractionThreadPoolExecutor.getInstance());
+ }
+ return taskExecutor;
+ }
}
diff --git a/src/main/java/work/slhaf/agent/modules/task/TaskScheduler.java b/src/main/java/work/slhaf/agent/modules/task/TaskScheduler.java
index 0d38cf17..f07c4232 100644
--- a/src/main/java/work/slhaf/agent/modules/task/TaskScheduler.java
+++ b/src/main/java/work/slhaf/agent/modules/task/TaskScheduler.java
@@ -1,31 +1,22 @@
package work.slhaf.agent.modules.task;
import lombok.Data;
-import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
-import work.slhaf.agent.common.config.Config;
-import work.slhaf.agent.common.model.Model;
-import work.slhaf.agent.common.model.ModelConstant;
-import work.slhaf.module.InteractionContext;
-import work.slhaf.module.InteractionModule;
+import work.slhaf.agent.core.interaction.InteractionModule;
+import work.slhaf.agent.core.interaction.data.InteractionContext;
import java.io.IOException;
-@EqualsAndHashCode(callSuper = true)
@Data
@Slf4j
-public class TaskScheduler extends Model implements InteractionModule {
- public static final String MODEL_KEY = "task_trigger";
+public class TaskScheduler implements InteractionModule {
private static TaskScheduler taskScheduler;
private TaskScheduler(){}
public static TaskScheduler getInstance() throws IOException, ClassNotFoundException {
if (taskScheduler == null) {
- Config config = Config.getConfig();
taskScheduler = new TaskScheduler();
- taskScheduler.setPrompt(ModelConstant.SLICE_EVALUATOR_PROMPT);
- setModel(config, taskScheduler, MODEL_KEY, taskScheduler.getPrompt());
log.info("TaskScheduler注册完毕...");
}
diff --git a/src/main/java/work/slhaf/agent/modules/task/data/TaskData.java b/src/main/java/work/slhaf/agent/modules/task/data/TaskData.java
new file mode 100644
index 00000000..73e897d6
--- /dev/null
+++ b/src/main/java/work/slhaf/agent/modules/task/data/TaskData.java
@@ -0,0 +1,31 @@
+package work.slhaf.agent.modules.task.data;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class TaskData implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ private String id;
+
+ /**
+ * 执行类别: 即时任务/定时任务
+ */
+ private String executeType;
+
+ /**
+ * cron表达式,仅定时任务需要填写
+ */
+ private String cronStr;
+ private String comment;
+
+ public static class Constant {
+ public static final String CURRENT = "current";
+ public static final String SCHEDULE = "schedule";
+ }
+}
diff --git a/src/main/java/work/slhaf/agent/modules/topic/TopicExtractor.java b/src/main/java/work/slhaf/agent/modules/topic/TopicExtractor.java
index 60894faf..6ec36f5a 100644
--- a/src/main/java/work/slhaf/agent/modules/topic/TopicExtractor.java
+++ b/src/main/java/work/slhaf/agent/modules/topic/TopicExtractor.java
@@ -2,11 +2,14 @@ package work.slhaf.agent.modules.topic;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import work.slhaf.agent.common.chat.constant.ChatConstant;
+import work.slhaf.agent.common.chat.pojo.ChatResponse;
+import work.slhaf.agent.common.chat.pojo.Message;
import work.slhaf.agent.common.config.Config;
import work.slhaf.agent.common.model.Model;
import work.slhaf.agent.common.model.ModelConstant;
-import work.slhaf.module.InteractionContext;
-import work.slhaf.module.InteractionModule;
+import work.slhaf.agent.core.interaction.InteractionModule;
+import work.slhaf.agent.core.interaction.data.InteractionContext;
import java.io.IOException;
@@ -23,8 +26,7 @@ public class TopicExtractor extends Model implements InteractionModule {
if (topicExtractor == null) {
Config config = Config.getConfig();
topicExtractor = new TopicExtractor();
- topicExtractor.setPrompt(ModelConstant.SLICE_EVALUATOR_PROMPT);
- setModel(config, topicExtractor, MODEL_KEY, topicExtractor.getPrompt());
+ setModel(config, topicExtractor, MODEL_KEY, ModelConstant.TOPIC_EXTRACTOR_PROMPT);
}
return topicExtractor;
@@ -32,6 +34,8 @@ public class TopicExtractor extends Model implements InteractionModule {
@Override
public void execute(InteractionContext interactionContext) {
+ String primaryMessageResponse = singleChat(interactionContext.getInput()).getMessage();
}
+
}
diff --git a/src/test/java/memory/InsertTest.java b/src/test/java/memory/InsertTest.java
index 4b8d759b..9bc058ff 100644
--- a/src/test/java/memory/InsertTest.java
+++ b/src/test/java/memory/InsertTest.java
@@ -2,10 +2,10 @@ package memory;
import org.junit.Before;
import org.junit.Test;
-import work.slhaf.agent.modules.memory.MemoryGraph;
-import work.slhaf.agent.modules.memory.pojo.MemorySlice;
-import work.slhaf.agent.modules.memory.node.MemoryNode;
-import work.slhaf.agent.modules.memory.node.TopicNode;
+import work.slhaf.agent.core.memory.MemoryGraph;
+import work.slhaf.agent.core.memory.pojo.MemorySlice;
+import work.slhaf.agent.core.memory.node.MemoryNode;
+import work.slhaf.agent.core.memory.node.TopicNode;
import java.io.IOException;
import java.time.LocalDate;
diff --git a/src/test/java/memory/SearchTest.java b/src/test/java/memory/SearchTest.java
index 08864488..2b60d21e 100644
--- a/src/test/java/memory/SearchTest.java
+++ b/src/test/java/memory/SearchTest.java
@@ -2,12 +2,12 @@ package memory;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import work.slhaf.agent.modules.memory.MemoryGraph;
-import work.slhaf.agent.modules.memory.pojo.MemorySlice;
-import work.slhaf.agent.modules.memory.exception.UnExistedTopicException;
-import work.slhaf.agent.modules.memory.node.MemoryNode;
-import work.slhaf.agent.modules.memory.node.TopicNode;
-import work.slhaf.agent.modules.memory.pojo.MemoryResult;
+import work.slhaf.agent.core.memory.MemoryGraph;
+import work.slhaf.agent.core.memory.pojo.MemorySlice;
+import work.slhaf.agent.core.memory.exception.UnExistedTopicException;
+import work.slhaf.agent.core.memory.node.MemoryNode;
+import work.slhaf.agent.core.memory.node.TopicNode;
+import work.slhaf.agent.core.memory.pojo.MemoryResult;
import java.io.IOException;
import java.time.LocalDate;