mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 08:43:02 +08:00
完善了框架层的完整执行流程,待进行demo测试并适配进Partner本体。
- 调整 runtime 目录结构, flow/ 归为 interaction/ 的子包 - 新增了 AgentGateway 以及 Gateway 对应的 Adapter 抽象类,下游必须实现这两者才能启动项目 - 调整 MetaModule 中的某些字段类别, 锁定为 AgentRunningModule 相关子类, 便于在执行流中执行模块 - 修复了 ModuleCheckFactory 中对于 @AgentModule 的错误检验逻辑 - 更新 Agent 启动器为step builder模式进行逐步构建,强制实现 AgentGateway 相关内容, 其余带有默认实现的部分也可自定义实现,只需实现对应的类或接口
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -50,3 +50,4 @@ build/
|
|||||||
/Partner-Core/src/main/java/src/main/resources/prompt/module/memory/topic_extractor.json.bak
|
/Partner-Core/src/main/java/src/main/resources/prompt/module/memory/topic_extractor.json.bak
|
||||||
/backup/
|
/backup/
|
||||||
/Partner-Main/src/test/java/text/test.json
|
/Partner-Main/src/test/java/text/test.json
|
||||||
|
/CLAUDE.md
|
||||||
|
|||||||
@@ -1,77 +1,114 @@
|
|||||||
package work.slhaf.partner.api.agent;
|
package work.slhaf.partner.api.agent;
|
||||||
|
|
||||||
import work.slhaf.partner.api.agent.factory.AgentRegisterFactory;
|
import work.slhaf.partner.api.agent.factory.AgentRegisterFactory;
|
||||||
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
|
||||||
import work.slhaf.partner.api.agent.flow.AgentRunningFlow;
|
|
||||||
import work.slhaf.partner.api.agent.flow.entity.RunningFlowContext;
|
|
||||||
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
|
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
|
||||||
import work.slhaf.partner.api.agent.runtime.exception.AgentExceptionCallback;
|
import work.slhaf.partner.api.agent.runtime.exception.AgentExceptionCallback;
|
||||||
import work.slhaf.partner.api.agent.runtime.exception.AgentLaunchFailedException;
|
import work.slhaf.partner.api.agent.runtime.exception.AgentLaunchFailedException;
|
||||||
import work.slhaf.partner.api.agent.runtime.exception.GlobalExceptionHandler;
|
import work.slhaf.partner.api.agent.runtime.exception.GlobalExceptionHandler;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.AgentGateway;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
/**
|
public final class Agent {
|
||||||
* Agent启动类
|
|
||||||
*/
|
|
||||||
public class Agent {
|
|
||||||
|
|
||||||
private final List<Runnable> runners = new ArrayList<>();
|
public static AgentGatewayStep newAgent(Class<?> clazz) {
|
||||||
private final Class<?> applicationClass;
|
if (clazz == null) {
|
||||||
private final RunningFlowContext interactionContext;
|
|
||||||
|
|
||||||
private Agent(Class<?> clazz, RunningFlowContext interactionContext) {
|
|
||||||
this.applicationClass = clazz;
|
|
||||||
this.interactionContext = interactionContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Agent newAgent(Class<?> clazz, RunningFlowContext interactionContext) {
|
|
||||||
if (clazz == null || interactionContext == null) {
|
|
||||||
throw new AgentLaunchFailedException("Agent class 和 interaction flow context 不能为 null");
|
throw new AgentLaunchFailedException("Agent class 和 interaction flow context 不能为 null");
|
||||||
}
|
}
|
||||||
return new Agent(clazz, interactionContext);
|
return new AgentApp(clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public interface AgentGatewayStep {
|
||||||
List<MetaModule> moduleList = AgentRegisterFactory.launch(applicationClass.getPackage().getName());
|
AgentStep setGateway(AgentGateway gateway);
|
||||||
AgentRunningFlow.launch(moduleList, interactionContext);
|
}
|
||||||
launchRunners();
|
|
||||||
|
public interface AgentStep {
|
||||||
|
AgentStep addBeforeLaunchRunners(Runnable... runners);
|
||||||
|
|
||||||
|
AgentStep addAfterLaunchRunners(Runnable... runners);
|
||||||
|
|
||||||
|
AgentStep setAgentConfigManager(AgentConfigManager agentConfigManager);
|
||||||
|
|
||||||
|
AgentStep setAgentExceptionCallback(AgentExceptionCallback agentExceptionCallback);
|
||||||
|
|
||||||
|
AgentStep addScanPackage(String packageName);
|
||||||
|
|
||||||
|
AgentStep addScanDir(String externalPackagePath);
|
||||||
|
|
||||||
|
void launch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void launchRunners() {
|
public static class AgentApp implements AgentStep, AgentGatewayStep {
|
||||||
ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor();
|
|
||||||
for (Runnable runner : runners) {
|
private final ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor();
|
||||||
executorService.execute(runner);
|
private final List<Runnable> beforeLaunchRunners = new ArrayList<>();
|
||||||
|
private final List<Runnable> afterLaunchRunners = new ArrayList<>();
|
||||||
|
private AgentGateway gateway;
|
||||||
|
private final Class<?> applicationClass;
|
||||||
|
|
||||||
|
private AgentApp(Class<?> clazz) {
|
||||||
|
this.applicationClass = clazz;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public Agent addRunners(Runnable... runnable) {
|
@Override
|
||||||
runners.addAll(List.of(runnable));
|
public AgentStep setGateway(AgentGateway gateway) {
|
||||||
return this;
|
this.gateway = gateway;
|
||||||
}
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Agent setAgentConfigManager(AgentConfigManager agentConfigManager) {
|
@Override
|
||||||
AgentConfigManager.setINSTANCE(agentConfigManager);
|
public AgentStep addBeforeLaunchRunners(Runnable... runners) {
|
||||||
return this;
|
this.beforeLaunchRunners.addAll(List.of(runners));
|
||||||
}
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Agent setAgentExceptionCallback(AgentExceptionCallback agentExceptionCallback){
|
@Override
|
||||||
GlobalExceptionHandler.setExceptionCallback(agentExceptionCallback);
|
public AgentStep addAfterLaunchRunners(Runnable... runners) {
|
||||||
return this;
|
this.afterLaunchRunners.addAll(List.of(runners));
|
||||||
}
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Agent addScanPackage(String packageName) {
|
@Override
|
||||||
AgentRegisterFactory.addScanPackage(packageName);
|
public AgentStep setAgentConfigManager(AgentConfigManager agentConfigManager) {
|
||||||
return this;
|
AgentConfigManager.setINSTANCE(agentConfigManager);
|
||||||
}
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Agent addScanDir(String externalPackagePath) {
|
@Override
|
||||||
AgentRegisterFactory.addScanDir(externalPackagePath);
|
public AgentStep setAgentExceptionCallback(AgentExceptionCallback agentExceptionCallback) {
|
||||||
return this;
|
GlobalExceptionHandler.setExceptionCallback(agentExceptionCallback);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AgentStep addScanPackage(String packageName) {
|
||||||
|
AgentRegisterFactory.addScanPackage(packageName);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AgentStep addScanDir(String externalPackagePath) {
|
||||||
|
AgentRegisterFactory.addScanDir(externalPackagePath);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void launch() {
|
||||||
|
launchRunners(beforeLaunchRunners);
|
||||||
|
AgentRegisterFactory.launch(applicationClass.getPackageName());
|
||||||
|
executorService.execute(() -> gateway.launch());
|
||||||
|
launchRunners(afterLaunchRunners);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void launchRunners(List<Runnable> runners) {
|
||||||
|
for (Runnable runner : runners) {
|
||||||
|
executorService.execute(runner);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package work.slhaf.partner.api.agent.factory;
|
package work.slhaf.partner.api.agent.factory;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import org.reflections.util.ClasspathHelper;
|
import org.reflections.util.ClasspathHelper;
|
||||||
import work.slhaf.partner.api.agent.factory.capability.CapabilityCheckFactory;
|
import work.slhaf.partner.api.agent.factory.capability.CapabilityCheckFactory;
|
||||||
import work.slhaf.partner.api.agent.factory.capability.CapabilityInjectFactory;
|
import work.slhaf.partner.api.agent.factory.capability.CapabilityInjectFactory;
|
||||||
@@ -13,6 +14,7 @@ import work.slhaf.partner.api.agent.factory.module.ModuleInitHookExecuteFactory;
|
|||||||
import work.slhaf.partner.api.agent.factory.module.ModuleProxyFactory;
|
import work.slhaf.partner.api.agent.factory.module.ModuleProxyFactory;
|
||||||
import work.slhaf.partner.api.agent.factory.module.ModuleRegisterFactory;
|
import work.slhaf.partner.api.agent.factory.module.ModuleRegisterFactory;
|
||||||
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.data.AgentContext;
|
||||||
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
|
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -27,7 +29,7 @@ public class AgentRegisterFactory {
|
|||||||
private AgentRegisterFactory() {
|
private AgentRegisterFactory() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<MetaModule> launch(String packageName) {
|
public static void launch(String packageName) {
|
||||||
urls.addAll(packageNameToURL(packageName));
|
urls.addAll(packageNameToURL(packageName));
|
||||||
AgentRegisterContext registerContext = new AgentRegisterContext(urls);
|
AgentRegisterContext registerContext = new AgentRegisterContext(urls);
|
||||||
//流程
|
//流程
|
||||||
@@ -47,7 +49,9 @@ public class AgentRegisterFactory {
|
|||||||
new ModuleInitHookExecuteFactory().execute(registerContext);
|
new ModuleInitHookExecuteFactory().execute(registerContext);
|
||||||
|
|
||||||
List<MetaModule> moduleList = registerContext.getModuleFactoryContext().getModuleList();
|
List<MetaModule> moduleList = registerContext.getModuleFactoryContext().getModuleList();
|
||||||
return AgentConfigManager.INSTANCE.moduleEnabledStatusFilter(moduleList);
|
AgentConfigManager.INSTANCE.moduleEnabledStatusFilterAndRecord(moduleList);
|
||||||
|
|
||||||
|
BeanUtil.copyProperties(registerContext, AgentContext.INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -89,5 +93,4 @@ public class AgentRegisterFactory {
|
|||||||
return ClasspathHelper.forPackage(packageName).stream().toList();
|
return ClasspathHelper.forPackage(packageName).stream().toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package work.slhaf.partner.api.agent.factory.config;
|
package work.slhaf.partner.api.agent.factory.config;
|
||||||
|
|
||||||
import lombok.Setter;
|
|
||||||
import work.slhaf.partner.api.agent.factory.AgentBaseFactory;
|
import work.slhaf.partner.api.agent.factory.AgentBaseFactory;
|
||||||
import work.slhaf.partner.api.agent.factory.config.pojo.ModelConfig;
|
import work.slhaf.partner.api.agent.factory.config.pojo.ModelConfig;
|
||||||
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
|
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
|
|||||||
import work.slhaf.partner.api.agent.factory.module.annotation.BeforeExecute;
|
import work.slhaf.partner.api.agent.factory.module.annotation.BeforeExecute;
|
||||||
import work.slhaf.partner.api.agent.factory.module.annotation.Init;
|
import work.slhaf.partner.api.agent.factory.module.annotation.Init;
|
||||||
import work.slhaf.partner.api.agent.factory.module.exception.ModuleCheckException;
|
import work.slhaf.partner.api.agent.factory.module.exception.ModuleCheckException;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
|
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningModule;
|
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
|
|
||||||
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
|
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -134,7 +134,7 @@ public class ModuleCheckFactory extends AgentBaseFactory {
|
|||||||
if (type.isAnnotation()) {
|
if (type.isAnnotation()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (type.isAssignableFrom(AgentRunningModule.class)) {
|
if (AgentRunningModule.class.isAssignableFrom(type) && ClassUtil.isNormalClass(type)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
throw new ModuleCheckException("存在未继承AgentInteractionModule.class的AgentModule实现: " + type.getSimpleName());
|
throw new ModuleCheckException("存在未继承AgentInteractionModule.class的AgentModule实现: " + type.getSimpleName());
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import work.slhaf.partner.api.agent.factory.module.annotation.Init;
|
|||||||
import work.slhaf.partner.api.agent.factory.module.exception.ModuleInitHookExecuteFailedException;
|
import work.slhaf.partner.api.agent.factory.module.exception.ModuleInitHookExecuteFailedException;
|
||||||
import work.slhaf.partner.api.agent.factory.module.pojo.MetaMethod;
|
import work.slhaf.partner.api.agent.factory.module.pojo.MetaMethod;
|
||||||
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import work.slhaf.partner.api.agent.factory.module.exception.ModuleInstanceGener
|
|||||||
import work.slhaf.partner.api.agent.factory.module.exception.ModuleProxyGenerateFailedException;
|
import work.slhaf.partner.api.agent.factory.module.exception.ModuleProxyGenerateFailedException;
|
||||||
import work.slhaf.partner.api.agent.factory.module.pojo.MetaMethod;
|
import work.slhaf.partner.api.agent.factory.module.pojo.MetaMethod;
|
||||||
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
@@ -57,8 +57,8 @@ public class ModuleProxyFactory extends AgentBaseFactory {
|
|||||||
|
|
||||||
private void generateProxiedInstances(MethodsListRecord record, MetaModule metaModule) {
|
private void generateProxiedInstances(MethodsListRecord record, MetaModule metaModule) {
|
||||||
try {
|
try {
|
||||||
Class<?> clazz = metaModule.getClazz();
|
Class<? extends AgentRunningModule> clazz = metaModule.getClazz();
|
||||||
Class<?> proxyClass = new ByteBuddy()
|
Class<? extends AgentRunningModule> proxyClass = new ByteBuddy()
|
||||||
.subclass(clazz)
|
.subclass(clazz)
|
||||||
.method(ElementMatchers.isOverriddenFrom(AgentRunningModule.class))
|
.method(ElementMatchers.isOverriddenFrom(AgentRunningModule.class))
|
||||||
.intercept(MethodDelegation.to(new ModuleProxyInterceptor(record.post, record.pre)))
|
.intercept(MethodDelegation.to(new ModuleProxyInterceptor(record.post, record.pre)))
|
||||||
@@ -137,8 +137,8 @@ public class ModuleProxyFactory extends AgentBaseFactory {
|
|||||||
private void generateInstances() {
|
private void generateInstances() {
|
||||||
for (MetaModule metaModule : moduleList) {
|
for (MetaModule metaModule : moduleList) {
|
||||||
try {
|
try {
|
||||||
Class<?> clazz = metaModule.getClazz();
|
Class<? extends AgentRunningModule> clazz = metaModule.getClazz();
|
||||||
Object instance = clazz.getConstructor().newInstance();
|
AgentRunningModule instance = clazz.getConstructor().newInstance();
|
||||||
metaModule.setInstance(instance);
|
metaModule.setInstance(instance);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new ModuleInstanceGenerateFailedException("模块实例构造失败:" + e.getMessage());
|
throw new ModuleInstanceGenerateFailedException("模块实例构造失败:" + e.getMessage());
|
||||||
@@ -148,17 +148,17 @@ public class ModuleProxyFactory extends AgentBaseFactory {
|
|||||||
|
|
||||||
private record ModuleProxyInterceptor(List<MetaMethod> postHookMethods, List<MetaMethod> preHookMethods) {
|
private record ModuleProxyInterceptor(List<MetaMethod> postHookMethods, List<MetaMethod> preHookMethods) {
|
||||||
@RuntimeType
|
@RuntimeType
|
||||||
public Object intercept(@Origin Method method, @AllArguments Object[] allArguments, @SuperCall Callable<?> zuper, @This Object proxy) throws Exception {
|
public Object intercept(@Origin Method method, @AllArguments Object[] allArguments, @SuperCall Callable<?> zuper, @This Object proxy) throws Exception {
|
||||||
for (MetaMethod metaMethod : preHookMethods) {
|
for (MetaMethod metaMethod : preHookMethods) {
|
||||||
metaMethod.getMethod().invoke(proxy);
|
metaMethod.getMethod().invoke(proxy);
|
||||||
}
|
|
||||||
Object res = zuper.call();
|
|
||||||
for (MetaMethod metaMethod : postHookMethods) {
|
|
||||||
metaMethod.getMethod().invoke(proxy);
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
Object res = zuper.call();
|
||||||
|
for (MetaMethod metaMethod : postHookMethods) {
|
||||||
|
metaMethod.getMethod().invoke(proxy);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
record MethodsListRecord(List<MetaMethod> post, List<MetaMethod> pre) {
|
record MethodsListRecord(List<MetaMethod> post, List<MetaMethod> pre) {
|
||||||
public MethodsListRecord {
|
public MethodsListRecord {
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package work.slhaf.partner.api.agent.factory.module;
|
package work.slhaf.partner.api.agent.factory.module;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ClassUtil;
|
||||||
import org.reflections.Reflections;
|
import org.reflections.Reflections;
|
||||||
import work.slhaf.partner.api.agent.factory.AgentBaseFactory;
|
import work.slhaf.partner.api.agent.factory.AgentBaseFactory;
|
||||||
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
|
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext;
|
||||||
import work.slhaf.partner.api.agent.factory.context.ModuleFactoryContext;
|
import work.slhaf.partner.api.agent.factory.context.ModuleFactoryContext;
|
||||||
import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
|
import work.slhaf.partner.api.agent.factory.module.annotation.AgentModule;
|
||||||
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
|
||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -35,14 +37,17 @@ public class ModuleRegisterFactory extends AgentBaseFactory {
|
|||||||
//反射扫描获取@AgentModule所在类, 该部分为Agent流程执行模块
|
//反射扫描获取@AgentModule所在类, 该部分为Agent流程执行模块
|
||||||
Set<Class<?>> modules = reflections.getTypesAnnotatedWith(AgentModule.class);
|
Set<Class<?>> modules = reflections.getTypesAnnotatedWith(AgentModule.class);
|
||||||
for (Class<?> module : modules) {
|
for (Class<?> module : modules) {
|
||||||
AgentModule agentModule = module.getAnnotation(AgentModule.class);
|
if (!ClassUtil.isNormalClass(module)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Class<? extends AgentRunningModule> clazz = module.asSubclass(AgentRunningModule.class);
|
||||||
|
AgentModule agentModule = clazz.getAnnotation(AgentModule.class);
|
||||||
MetaModule metaModule = new MetaModule();
|
MetaModule metaModule = new MetaModule();
|
||||||
metaModule.setName(agentModule.name());
|
metaModule.setName(agentModule.name());
|
||||||
metaModule.setOrder(agentModule.order());
|
metaModule.setOrder(agentModule.order());
|
||||||
metaModule.setClazz(module);
|
metaModule.setClazz(clazz);
|
||||||
moduleList.add(metaModule);
|
moduleList.add(metaModule);
|
||||||
}
|
}
|
||||||
moduleList.sort(Comparator.comparing(MetaModule::getOrder));
|
moduleList.sort(Comparator.comparing(MetaModule::getOrder));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
package work.slhaf.partner.api.agent.factory.module.pojo;
|
package work.slhaf.partner.api.agent.factory.module.pojo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class MetaModule {
|
public class MetaModule {
|
||||||
private String name;
|
private String name;
|
||||||
private int order;
|
private int order;
|
||||||
private Class<?> clazz;
|
private Class<? extends AgentRunningModule> clazz;
|
||||||
private Object instance;
|
private AgentRunningModule instance;
|
||||||
private boolean enabled = true;
|
private boolean enabled = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
package work.slhaf.partner.api.agent.flow;
|
|
||||||
|
|
||||||
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
|
||||||
import work.slhaf.partner.api.agent.flow.entity.RunningFlowContext;
|
|
||||||
import work.slhaf.partner.api.agent.runtime.exception.GlobalExceptionHandler;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Agent执行流程
|
|
||||||
*/
|
|
||||||
public class AgentRunningFlow {
|
|
||||||
|
|
||||||
private AgentRunningFlow(){}
|
|
||||||
|
|
||||||
public static void launch(List<MetaModule> moduleList, RunningFlowContext interactionContext){
|
|
||||||
try {
|
|
||||||
//流程执行启动,需考虑模块热插拔,可结合http调整模块启用情况,并序列化至本地或数据库中
|
|
||||||
}catch (Exception e){
|
|
||||||
GlobalExceptionHandler.INSTANCE.handle(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
package work.slhaf.partner.api.agent.flow.abstracts;
|
|
||||||
|
|
||||||
import work.slhaf.partner.api.agent.flow.entity.RunningFlowContext;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 流程执行模块基类
|
|
||||||
*/
|
|
||||||
public abstract class AgentRunningModule extends Module {
|
|
||||||
public abstract void execute(RunningFlowContext context);
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package work.slhaf.partner.api.agent.runtime.config;
|
package work.slhaf.partner.api.agent.runtime.config;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import work.slhaf.partner.api.agent.factory.config.exception.ConfigNotExistException;
|
import work.slhaf.partner.api.agent.factory.config.exception.ConfigNotExistException;
|
||||||
@@ -16,21 +16,16 @@ import java.util.List;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@Data
|
||||||
public abstract class AgentConfigManager {
|
public abstract class AgentConfigManager {
|
||||||
|
|
||||||
@Setter
|
@Setter
|
||||||
public static AgentConfigManager INSTANCE;
|
public static AgentConfigManager INSTANCE;
|
||||||
private static final String DEFAULT_KEY = "default";
|
private static final String DEFAULT_KEY = "default";
|
||||||
|
|
||||||
@Getter
|
|
||||||
protected HashMap<String, ModelConfig> modelConfigMap;
|
protected HashMap<String, ModelConfig> modelConfigMap;
|
||||||
@Getter
|
|
||||||
protected HashMap<String, List<Message>> modelPromptMap;
|
protected HashMap<String, List<Message>> modelPromptMap;
|
||||||
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
protected HashMap<String, Boolean> moduleEnabledStatus;
|
protected HashMap<String, Boolean> moduleEnabledStatus;
|
||||||
|
|
||||||
protected List<MetaModule> moduleList;
|
protected List<MetaModule> moduleList;
|
||||||
|
|
||||||
public void load() {
|
public void load() {
|
||||||
@@ -48,7 +43,7 @@ public abstract class AgentConfigManager {
|
|||||||
|
|
||||||
protected abstract HashMap<String, Boolean> loadModuleEnabledStatusMap();
|
protected abstract HashMap<String, Boolean> loadModuleEnabledStatusMap();
|
||||||
|
|
||||||
public List<MetaModule> moduleEnabledStatusFilter(List<MetaModule> moduleList) {
|
public void moduleEnabledStatusFilterAndRecord(List<MetaModule> moduleList) {
|
||||||
this.moduleList = moduleList;
|
this.moduleList = moduleList;
|
||||||
this.moduleEnabledStatus = loadModuleEnabledStatusMap();
|
this.moduleEnabledStatus = loadModuleEnabledStatusMap();
|
||||||
|
|
||||||
@@ -65,7 +60,6 @@ public abstract class AgentConfigManager {
|
|||||||
if (unmatch) {
|
if (unmatch) {
|
||||||
dumpModuleEnabledStatus();
|
dumpModuleEnabledStatus();
|
||||||
}
|
}
|
||||||
return moduleList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package work.slhaf.partner.api.agent.runtime;
|
package work.slhaf.partner.api.agent.runtime.data;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
||||||
@@ -10,6 +10,9 @@ import java.util.function.Function;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class AgentContext {
|
public class AgentContext {
|
||||||
|
|
||||||
|
public static AgentContext INSTANCE = new AgentContext();
|
||||||
|
|
||||||
private HashMap<String, Function<Object[], Object>> methodsRouterTable;
|
private HashMap<String, Function<Object[], Object>> methodsRouterTable;
|
||||||
private HashMap<String, Function<Object[], Object>> coordinatedMethodsRouterTable;
|
private HashMap<String, Function<Object[], Object>> coordinatedMethodsRouterTable;
|
||||||
private HashMap<Class<?>, Object> capabilityCoreInstances;
|
private HashMap<Class<?>, Object> capabilityCoreInstances;
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package work.slhaf.partner.api.agent.runtime.interaction;
|
||||||
|
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentInputData;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentOutputData;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
|
||||||
|
|
||||||
|
public interface AgentGateway {
|
||||||
|
|
||||||
|
void launch();
|
||||||
|
|
||||||
|
<I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> AgentInteractionAdapter<I, O, C> adapter();
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package work.slhaf.partner.api.agent.runtime.interaction;
|
||||||
|
|
||||||
|
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentInputData;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentOutputData;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.AgentRunningFlow;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public abstract class AgentInteractionAdapter<I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> {
|
||||||
|
|
||||||
|
private static AgentInteractionAdapter<?,?,?> INSTANCE;
|
||||||
|
|
||||||
|
protected AgentRunningFlow<C> agentRunningFlow = new AgentRunningFlow<>();
|
||||||
|
protected List<MetaModule> moduleList = AgentConfigManager.INSTANCE.getModuleList();
|
||||||
|
|
||||||
|
public void receive(I inputData) {
|
||||||
|
C finalInputData = parseInputData(inputData);
|
||||||
|
C outputContext = agentRunningFlow.launch(moduleList, finalInputData);
|
||||||
|
O outputData = parseOutputData(outputContext);
|
||||||
|
send(outputData);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract O parseOutputData(C outputContext);
|
||||||
|
|
||||||
|
protected abstract C parseInputData(I inputData);
|
||||||
|
|
||||||
|
public abstract void send(O outputData);
|
||||||
|
|
||||||
|
public static <I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> AgentInteractionAdapter<I, O, C> getInstance() {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
AgentInteractionAdapter<I, O, C> instance = (AgentInteractionAdapter<I, O, C>) INSTANCE;
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> void setInstance(AgentInteractionAdapter<I, O, C> instance) {
|
||||||
|
INSTANCE = instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package work.slhaf.partner.api.agent.runtime.interaction.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Data
|
||||||
|
public abstract class AgentInputData extends InteractionData{
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package work.slhaf.partner.api.agent.runtime.interaction.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Data
|
||||||
|
public abstract class AgentOutputData extends InteractionData{
|
||||||
|
|
||||||
|
private int code;
|
||||||
|
|
||||||
|
public static class StatusCode {
|
||||||
|
public static final int SUCCESS = 1;
|
||||||
|
public static final int FAILED = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package work.slhaf.partner.api.agent.runtime.interaction.data;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public abstract class InteractionData {
|
||||||
|
protected String userInfo;
|
||||||
|
protected String content;
|
||||||
|
protected LocalDateTime dateTime;
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package work.slhaf.partner.api.agent.runtime.interaction.flow;
|
||||||
|
|
||||||
|
import work.slhaf.partner.api.agent.factory.module.pojo.MetaModule;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.exception.GlobalExceptionHandler;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Agent执行流程
|
||||||
|
*/
|
||||||
|
public class AgentRunningFlow<C extends RunningFlowContext> {
|
||||||
|
|
||||||
|
public C launch(List<MetaModule> moduleList, C interactionContext){
|
||||||
|
try {
|
||||||
|
//流程执行启动
|
||||||
|
for (MetaModule metaModule : moduleList) {
|
||||||
|
metaModule.getInstance().execute(interactionContext);
|
||||||
|
}
|
||||||
|
}catch (Exception e){
|
||||||
|
GlobalExceptionHandler.INSTANCE.handle(e);
|
||||||
|
}
|
||||||
|
return interactionContext;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package work.slhaf.partner.api.agent.flow.abstracts;
|
package work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import work.slhaf.partner.api.agent.factory.config.pojo.ModelConfig;
|
import work.slhaf.partner.api.agent.factory.config.pojo.ModelConfig;
|
||||||
import work.slhaf.partner.api.agent.factory.module.annotation.Init;
|
import work.slhaf.partner.api.agent.factory.module.annotation.Init;
|
||||||
import work.slhaf.partner.api.agent.flow.entity.Model;
|
|
||||||
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
|
import work.slhaf.partner.api.agent.runtime.config.AgentConfigManager;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.Model;
|
||||||
import work.slhaf.partner.api.chat.ChatClient;
|
import work.slhaf.partner.api.chat.ChatClient;
|
||||||
import work.slhaf.partner.api.chat.constant.ChatConstant;
|
import work.slhaf.partner.api.chat.constant.ChatConstant;
|
||||||
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts;
|
||||||
|
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程执行模块基类
|
||||||
|
*/
|
||||||
|
public abstract class AgentRunningModule extends Module {
|
||||||
|
public abstract void execute(RunningFlowContext context);
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package work.slhaf.partner.api.agent.flow.abstracts;
|
package work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package work.slhaf.partner.api.agent.flow.abstracts;
|
package work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityHolder;
|
import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityHolder;
|
||||||
import work.slhaf.partner.api.agent.flow.entity.Model;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.Model;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模块基类
|
* 模块基类
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package work.slhaf.partner.api.agent.flow.entity;
|
package work.slhaf.partner.api.agent.runtime.interaction.flow.entity;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import work.slhaf.partner.api.chat.ChatClient;
|
import work.slhaf.partner.api.chat.ChatClient;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package work.slhaf.partner.api.agent.flow.entity;
|
package work.slhaf.partner.api.agent.runtime.interaction.flow.entity;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -4,7 +4,7 @@ import net.bytebuddy.ByteBuddy;
|
|||||||
import net.bytebuddy.implementation.MethodDelegation;
|
import net.bytebuddy.implementation.MethodDelegation;
|
||||||
import net.bytebuddy.matcher.ElementMatchers;
|
import net.bytebuddy.matcher.ElementMatchers;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package module;
|
package module;
|
||||||
|
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningModule;
|
||||||
import work.slhaf.partner.api.agent.flow.entity.RunningFlowContext;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
|
||||||
|
|
||||||
public class MyAgentRunningModule extends AgentRunningModule {
|
public class MyAgentRunningModule extends AgentRunningModule {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
|
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||||
import work.slhaf.partner.api.chat.constant.ChatConstant;
|
import work.slhaf.partner.api.chat.constant.ChatConstant;
|
||||||
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
||||||
import work.slhaf.partner.api.chat.pojo.Message;
|
import work.slhaf.partner.api.chat.pojo.Message;
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import com.alibaba.fastjson2.JSONObject;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||||
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
|
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
|
||||||
import work.slhaf.partner.core.cognation.common.pojo.MemoryResult;
|
import work.slhaf.partner.core.cognation.common.pojo.MemoryResult;
|
||||||
import work.slhaf.partner.core.cognation.common.pojo.MemorySliceResult;
|
import work.slhaf.partner.core.cognation.common.pojo.MemorySliceResult;
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
|
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||||
import work.slhaf.partner.api.chat.pojo.Message;
|
import work.slhaf.partner.api.chat.pojo.Message;
|
||||||
import work.slhaf.partner.api.chat.pojo.MetaMessage;
|
import work.slhaf.partner.api.chat.pojo.MetaMessage;
|
||||||
import work.slhaf.partner.common.exception_handler.GlobalExceptionHandler;
|
import work.slhaf.partner.common.exception_handler.GlobalExceptionHandler;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package work.slhaf.partner.module.modules.memory.updater.summarizer;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||||
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
|
import work.slhaf.partner.common.thread.InteractionThreadPoolExecutor;
|
||||||
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeInput;
|
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeInput;
|
||||||
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeResult;
|
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeResult;
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import com.alibaba.fastjson2.JSONObject;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||||
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
||||||
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeInput;
|
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeInput;
|
||||||
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeResult;
|
import work.slhaf.partner.module.modules.memory.updater.summarizer.data.SummarizeResult;
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import com.alibaba.fastjson2.JSONObject;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||||
import work.slhaf.partner.api.chat.constant.ChatConstant;
|
import work.slhaf.partner.api.chat.constant.ChatConstant;
|
||||||
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
||||||
import work.slhaf.partner.api.chat.pojo.Message;
|
import work.slhaf.partner.api.chat.pojo.Message;
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import com.alibaba.fastjson2.JSONObject;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||||
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package work.slhaf.partner.module.modules.perceive.updater.relation_extractor;
|
|||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||||
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
||||||
import work.slhaf.partner.api.chat.pojo.Message;
|
import work.slhaf.partner.api.chat.pojo.Message;
|
||||||
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
|
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import com.alibaba.fastjson2.JSONObject;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
|
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.ActivateModel;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel;
|
||||||
import work.slhaf.partner.api.agent.flow.abstracts.AgentRunningSubModule;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule;
|
||||||
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
||||||
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
|
import work.slhaf.partner.core.cognation.cognation.CognationCapability;
|
||||||
import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability;
|
import work.slhaf.partner.core.cognation.submodule.perceive.PerceiveCapability;
|
||||||
|
|||||||
@@ -1,12 +1,25 @@
|
|||||||
package work.slhaf.demo;
|
package work.slhaf.demo;
|
||||||
|
|
||||||
|
|
||||||
import work.slhaf.demo.flow.AgentDemoFlowContext;
|
|
||||||
import work.slhaf.partner.api.agent.Agent;
|
import work.slhaf.partner.api.agent.Agent;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.AgentGateway;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.AgentInteractionAdapter;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentInputData;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.data.AgentOutputData;
|
||||||
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
|
||||||
|
|
||||||
public class AgentDemoApplication {
|
public class AgentDemoApplication {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Agent.newAgent(AgentDemoApplication.class, new AgentDemoFlowContext())
|
Agent.newAgent(AgentDemoApplication.class).setGateway(new AgentGateway() {
|
||||||
.run();
|
@Override
|
||||||
|
public void launch() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <I extends AgentInputData, O extends AgentOutputData, C extends RunningFlowContext> AgentInteractionAdapter<I, O, C> adapter() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}).launch();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package work.slhaf.demo.flow;
|
package work.slhaf.demo.flow;
|
||||||
|
|
||||||
import work.slhaf.partner.api.agent.flow.entity.RunningFlowContext;
|
import work.slhaf.partner.api.agent.runtime.interaction.flow.entity.RunningFlowContext;
|
||||||
|
|
||||||
public class AgentDemoFlowContext extends RunningFlowContext {
|
public class AgentDemoFlowContext extends RunningFlowContext {
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user