mirror of
https://github.com/slhaf/Partner.git
synced 2026-06-27 17:49:16 +08:00
feat(impression): add impression recaller for projected entities
This commit is contained in:
@@ -2,10 +2,12 @@ package work.slhaf.partner.core.cognition;
|
|||||||
|
|
||||||
import org.w3c.dom.Element;
|
import org.w3c.dom.Element;
|
||||||
import work.slhaf.partner.core.cognition.context.ContextWorkspace;
|
import work.slhaf.partner.core.cognition.context.ContextWorkspace;
|
||||||
|
import work.slhaf.partner.core.cognition.impression.ActiveEntity;
|
||||||
import work.slhaf.partner.framework.agent.factory.capability.annotation.Capability;
|
import work.slhaf.partner.framework.agent.factory.capability.annotation.Capability;
|
||||||
import work.slhaf.partner.framework.agent.model.pojo.Message;
|
import work.slhaf.partner.framework.agent.model.pojo.Message;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
|
|
||||||
@Capability("cognition")
|
@Capability("cognition")
|
||||||
@@ -27,4 +29,6 @@ public interface CognitionCapability {
|
|||||||
|
|
||||||
Lock getMessageLock();
|
Lock getMessageLock();
|
||||||
|
|
||||||
|
Set<ActiveEntity> projectEntity(String input);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
package work.slhaf.partner.module.impression;
|
||||||
|
|
||||||
|
import lombok.val;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import work.slhaf.partner.core.cognition.CognitionCapability;
|
||||||
|
import work.slhaf.partner.core.cognition.context.ContextBlock;
|
||||||
|
import work.slhaf.partner.framework.agent.factory.capability.annotation.InjectCapability;
|
||||||
|
import work.slhaf.partner.framework.agent.factory.component.abstracts.AbstractAgentModule;
|
||||||
|
import work.slhaf.partner.runtime.PartnerRunningFlowContext;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class ImpressionRecaller extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
|
||||||
|
|
||||||
|
@InjectCapability
|
||||||
|
private CognitionCapability cognitionCapability;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从交互中积累谈论的内容的特征(证据),基于证据创建 ActiveEntity,然后交给 CognitionCapability 进行投影并更新上下文
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void doExecute(@NotNull PartnerRunningFlowContext context) {
|
||||||
|
val contextWorkspace = cognitionCapability.contextWorkspace();
|
||||||
|
context.getInputs()
|
||||||
|
.stream()
|
||||||
|
.map(inputEntry -> {
|
||||||
|
val content = inputEntry.getContent();
|
||||||
|
return cognitionCapability.projectEntity(content);
|
||||||
|
})
|
||||||
|
.flatMap(Collection::stream)
|
||||||
|
.collect(Collectors.toSet())
|
||||||
|
.forEach(activeEntity -> {
|
||||||
|
contextWorkspace.register(new ContextBlock(
|
||||||
|
activeEntity,
|
||||||
|
activeEntity,
|
||||||
|
activeEntity,
|
||||||
|
Set.of(
|
||||||
|
ContextBlock.FocusedDomain.COGNITION,
|
||||||
|
ContextBlock.FocusedDomain.MEMORY
|
||||||
|
),
|
||||||
|
100,
|
||||||
|
0.5,
|
||||||
|
20
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int order() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user