mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
feat(trace): support trace input/output information on Running/Sub AgentModule
This commit is contained in:
@@ -26,7 +26,7 @@ public class ActionCorrectionRecognizer extends AbstractAgentModule.Sub<Correcti
|
|||||||
private CognitionCapability cognitionCapability;
|
private CognitionCapability cognitionCapability;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Result<CorrectionRecognizerResult> execute(CorrectionRecognizerInput input) {
|
protected @NotNull Result<CorrectionRecognizerResult> doExecute(CorrectionRecognizerInput input) {
|
||||||
List<Message> messages = List.of(
|
List<Message> messages = List.of(
|
||||||
resolveContextMessage(),
|
resolveContextMessage(),
|
||||||
resolveTaskMessage(input)
|
resolveTaskMessage(input)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public class ActionCorrector extends AbstractAgentModule.Sub<CorrectorInput, Res
|
|||||||
private CognitionCapability cognitionCapability;
|
private CognitionCapability cognitionCapability;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Result<CorrectorResult> execute(CorrectorInput input) {
|
protected @NotNull Result<CorrectorResult> doExecute(CorrectorInput input) {
|
||||||
List<Message> messages = List.of(
|
List<Message> messages = List.of(
|
||||||
resolveContextMessage(),
|
resolveContextMessage(),
|
||||||
resolveTaskMessage(input)
|
resolveTaskMessage(input)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public class ParamsExtractor extends AbstractAgentModule.Sub<ExtractorInput, Res
|
|||||||
private CognitionCapability cognitionCapability;
|
private CognitionCapability cognitionCapability;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Result<ExtractorResult> execute(ExtractorInput input) {
|
protected @NotNull Result<ExtractorResult> doExecute(ExtractorInput input) {
|
||||||
List<Message> messages = List.of(
|
List<Message> messages = List.of(
|
||||||
resolveContextMessage(),
|
resolveContextMessage(),
|
||||||
resolveTaskMessage(input)
|
resolveTaskMessage(input)
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(@NotNull PartnerRunningFlowContext context) {
|
protected void doExecute(@NotNull PartnerRunningFlowContext context) {
|
||||||
String input = context.getInput();
|
String input = context.getInput();
|
||||||
Result<ExtractorResult> result = actionExtractor.execute(input)
|
Result<ExtractorResult> result = actionExtractor.execute(input)
|
||||||
.onFailure(exp -> {
|
.onFailure(exp -> {
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class ActionEvaluator extends AbstractAgentModule.Sub<EvaluatorInput, Lis
|
|||||||
* @return 评估结果集合
|
* @return 评估结果集合
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<EvaluatorResult> execute(EvaluatorInput data) {
|
protected List<EvaluatorResult> doExecute(EvaluatorInput data) {
|
||||||
List<String> tendencies = data.getTendencies();
|
List<String> tendencies = data.getTendencies();
|
||||||
CountDownLatch latch = new CountDownLatch(tendencies.size());
|
CountDownLatch latch = new CountDownLatch(tendencies.size());
|
||||||
List<EvaluatorResult> evaluatorResults = new ArrayList<>();
|
List<EvaluatorResult> evaluatorResults = new ArrayList<>();
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public class ActionExtractor extends AbstractAgentModule.Sub<String, Result<Extr
|
|||||||
private CognitionCapability cognitionCapability;
|
private CognitionCapability cognitionCapability;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Result<ExtractorResult> execute(String input) {
|
protected @NotNull Result<ExtractorResult> doExecute(String input) {
|
||||||
List<Message> messages = List.of(
|
List<Message> messages = List.of(
|
||||||
cognitionCapability.contextWorkspace().resolve(List.of(
|
cognitionCapability.contextWorkspace().resolve(List.of(
|
||||||
ContextBlock.VisibleDomain.COGNITION,
|
ContextBlock.VisibleDomain.COGNITION,
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class CommunicationProducer extends AbstractAgentModule.Running<PartnerRu
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(PartnerRunningFlowContext runningFlowContext) {
|
protected void doExecute(PartnerRunningFlowContext runningFlowContext) {
|
||||||
log.debug("Communicating with: {}", runningFlowContext.getSource());
|
log.debug("Communicating with: {}", runningFlowContext.getSource());
|
||||||
executeChat(runningFlowContext);
|
executeChat(runningFlowContext);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class MemorySelector extends AbstractAgentModule.Running<PartnerRunningFl
|
|||||||
private Lock inputsLock = new ReentrantLock();
|
private Lock inputsLock = new ReentrantLock();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(@NotNull PartnerRunningFlowContext runningFlowContext) {
|
protected void doExecute(@NotNull PartnerRunningFlowContext runningFlowContext) {
|
||||||
inputsLock.lock();
|
inputsLock.lock();
|
||||||
try {
|
try {
|
||||||
collectedInputs.put(ZonedDateTime.now().toLocalDateTime(), runningFlowContext.getInput());
|
collectedInputs.put(ZonedDateTime.now().toLocalDateTime(), runningFlowContext.getInput());
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class SliceSelectEvaluator extends AbstractAgentModule.Sub<EvaluatorInput
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ActivatedMemorySlice> execute(EvaluatorInput evaluatorInput) {
|
protected List<ActivatedMemorySlice> doExecute(EvaluatorInput evaluatorInput) {
|
||||||
List<ActivatedMemorySlice> preparedSlices = evaluatorInput.getMemorySlices();
|
List<ActivatedMemorySlice> preparedSlices = evaluatorInput.getMemorySlices();
|
||||||
List<ActivatedMemorySlice> result = new ArrayList<>();
|
List<ActivatedMemorySlice> result = new ArrayList<>();
|
||||||
CountDownLatch latch = new CountDownLatch(preparedSlices.size());
|
CountDownLatch latch = new CountDownLatch(preparedSlices.size());
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class MemorySelectExtractor extends AbstractAgentModule.Sub<ExtractorInpu
|
|||||||
private MemoryRuntime memoryRuntime;
|
private MemoryRuntime memoryRuntime;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ExtractorResult execute(ExtractorInput input) {
|
protected ExtractorResult doExecute(ExtractorInput input) {
|
||||||
ExtractorResult extractorResult;
|
ExtractorResult extractorResult;
|
||||||
List<Message> messages = List.of(
|
List<Message> messages = List.of(
|
||||||
resolveContextMessage(),
|
resolveContextMessage(),
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public class MemoryUpdater extends AbstractAgentModule.Running<PartnerRunningFlo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(@NotNull PartnerRunningFlowContext context) {
|
protected void doExecute(@NotNull PartnerRunningFlowContext context) {
|
||||||
boolean trigger = cognitionCapability.getChatMessages().size() >= MEMORY_UPDATE_TRIGGER_ROLL_LIMIT;
|
boolean trigger = cognitionCapability.getChatMessages().size() >= MEMORY_UPDATE_TRIGGER_ROLL_LIMIT;
|
||||||
if (!trigger) {
|
if (!trigger) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public class MultiSummarizer extends AbstractAgentModule.Sub<SummarizeInput, Res
|
|||||||
private MemoryRuntime memoryRuntime;
|
private MemoryRuntime memoryRuntime;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Result<SummarizeResult> execute(SummarizeInput input) {
|
protected @NotNull Result<SummarizeResult> doExecute(SummarizeInput input) {
|
||||||
return formattedChat(
|
return formattedChat(
|
||||||
List.of(new Message(Message.Character.USER, JSONUtil.toJsonPrettyStr(input))),
|
List.of(new Message(Message.Character.USER, JSONUtil.toJsonPrettyStr(input))),
|
||||||
SummarizeResult.class
|
SummarizeResult.class
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public class SingleSummarizer extends AbstractAgentModule.Sub<List<Message>, Voi
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Void execute(List<Message> chatMessages) {
|
protected Void doExecute(List<Message> chatMessages) {
|
||||||
log.debug("[MemorySummarizer] 长文本摘要开始...");
|
log.debug("[MemorySummarizer] 长文本摘要开始...");
|
||||||
CountDownLatch latch = new CountDownLatch(chatMessages.size());
|
CountDownLatch latch = new CountDownLatch(chatMessages.size());
|
||||||
for (int i = 0; i < chatMessages.size(); i++) {
|
for (int i = 0; i < chatMessages.size(); i++) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import java.util.List;
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Data
|
@Data
|
||||||
public class TotalSummarizer extends AbstractAgentModule.Sub<HashMap<String, String>, String> implements ActivateModel {
|
public class TotalSummarizer extends AbstractAgentModule.Sub<HashMap<String, String>, String> implements ActivateModel {
|
||||||
public String execute(HashMap<String, String> singleMemorySummary) {
|
protected String doExecute(HashMap<String, String> singleMemorySummary) {
|
||||||
return formattedChat(
|
return formattedChat(
|
||||||
List.of(new Message(Message.Character.USER, JSONUtil.toJsonPrettyStr(singleMemorySummary))),
|
List.of(new Message(Message.Character.USER, JSONUtil.toJsonPrettyStr(singleMemorySummary))),
|
||||||
SummaryContent.class
|
SummaryContent.class
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class PerceiveMonitor extends AbstractAgentModule.Running<PartnerRunningF
|
|||||||
private CognitionCapability cognitionCapability;
|
private CognitionCapability cognitionCapability;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(@NotNull PartnerRunningFlowContext context) {
|
protected void doExecute(@NotNull PartnerRunningFlowContext context) {
|
||||||
String lastInteractTime = perceiveCapability.refreshInteract();
|
String lastInteractTime = perceiveCapability.refreshInteract();
|
||||||
ContextBlock block = new ContextBlock(
|
ContextBlock block = new ContextBlock(
|
||||||
new CommunicationBlockContent(
|
new CommunicationBlockContent(
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import org.slf4j.Logger
|
|||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import work.slhaf.partner.framework.agent.factory.component.annotation.AgentComponent
|
import work.slhaf.partner.framework.agent.factory.component.annotation.AgentComponent
|
||||||
import work.slhaf.partner.framework.agent.interaction.flow.RunningFlowContext
|
import work.slhaf.partner.framework.agent.interaction.flow.RunningFlowContext
|
||||||
|
import work.slhaf.partner.framework.agent.log.LogAdviceProvider
|
||||||
|
import java.lang.reflect.ParameterizedType
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模块基类
|
* 模块基类
|
||||||
@@ -18,16 +20,57 @@ sealed class AbstractAgentModule {
|
|||||||
|
|
||||||
abstract class Running<T : RunningFlowContext> : AbstractAgentModule() {
|
abstract class Running<T : RunningFlowContext> : AbstractAgentModule() {
|
||||||
|
|
||||||
abstract fun execute(context: T)
|
private val advice = run {
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
LogAdviceProvider.createAdvice(
|
||||||
|
moduleName,
|
||||||
|
resolveGenericType(0) as Class<T>,
|
||||||
|
Void::class.java
|
||||||
|
) { context ->
|
||||||
|
doExecute(context)
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun execute(context: T) {
|
||||||
|
advice.invoke(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract fun doExecute(context: T)
|
||||||
|
|
||||||
abstract fun order(): Int
|
abstract fun order(): Int
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class Sub<I, O> : AbstractAgentModule() {
|
abstract class Sub<I, O> : AbstractAgentModule() {
|
||||||
abstract fun execute(input: I): O
|
private val advice = run {
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
LogAdviceProvider.createAdvice(
|
||||||
|
moduleName,
|
||||||
|
resolveGenericType(0) as Class<I>,
|
||||||
|
resolveGenericType(1) as Class<O>
|
||||||
|
) { input ->
|
||||||
|
doExecute(input)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun execute(input: I): O? {
|
||||||
|
return advice.invoke(input).getOrThrow()
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract fun doExecute(input: I): O?
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class Standalone : AbstractAgentModule()
|
abstract class Standalone : AbstractAgentModule()
|
||||||
|
|
||||||
|
protected fun resolveGenericType(index: Int): Class<*> {
|
||||||
|
val genericType = (javaClass.genericSuperclass as? ParameterizedType)
|
||||||
|
?.actualTypeArguments
|
||||||
|
?.getOrNull(index)
|
||||||
|
?: return Any::class.java
|
||||||
|
return when (genericType) {
|
||||||
|
is Class<*> -> genericType
|
||||||
|
is ParameterizedType -> genericType.rawType as? Class<*> ?: Any::class.java
|
||||||
|
else -> Any::class.java
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user