mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
feat(runner): add builtin capability action provider for memory slices, initiate turn, and interaction status
This commit is contained in:
@@ -0,0 +1,163 @@
|
|||||||
|
package work.slhaf.partner.module.modules.action.builtin;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
|
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
|
||||||
|
import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent;
|
||||||
|
import work.slhaf.partner.core.action.entity.MetaActionInfo;
|
||||||
|
import work.slhaf.partner.core.cognation.CognationCapability;
|
||||||
|
import work.slhaf.partner.core.memory.MemoryCapability;
|
||||||
|
import work.slhaf.partner.core.perceive.PerceiveCapability;
|
||||||
|
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
import static work.slhaf.partner.core.action.ActionCore.BUILTIN_LOCATION;
|
||||||
|
|
||||||
|
@AgentComponent
|
||||||
|
class BuiltinCapabilityActionProvider implements BuiltinActionProvider {
|
||||||
|
|
||||||
|
private static final String CAPABILITY_LOCATION = BUILTIN_LOCATION + "::" + "capability";
|
||||||
|
|
||||||
|
private final Set<String> basicTags = Set.of("Builtin MetaAction", "Agent Capability");
|
||||||
|
|
||||||
|
@InjectCapability
|
||||||
|
private MemoryCapability memoryCapability;
|
||||||
|
@InjectCapability
|
||||||
|
private CognationCapability cognationCapability;
|
||||||
|
@InjectCapability
|
||||||
|
private PerceiveCapability perceiveCapability;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<BuiltinActionRegistry.BuiltinActionDefinition> provideBuiltinActions() {
|
||||||
|
return List.of(
|
||||||
|
buildShowActivatedSlicesDefinition(),
|
||||||
|
buildInteractionStatusDefinition(),
|
||||||
|
buildInteractionStatusDefinition()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用于展示当前已激活的记忆切片的 Builtin MetaAction
|
||||||
|
*
|
||||||
|
* @return 内建 MetaAction 定义数据
|
||||||
|
*/
|
||||||
|
private BuiltinActionRegistry.BuiltinActionDefinition buildShowActivatedSlicesDefinition() {
|
||||||
|
Set<String> tags = new HashSet<>(basicTags);
|
||||||
|
tags.add("Memory");
|
||||||
|
|
||||||
|
MetaActionInfo info = new MetaActionInfo(
|
||||||
|
false,
|
||||||
|
null,
|
||||||
|
Map.of(),
|
||||||
|
"Show memory slices content that is activated.",
|
||||||
|
tags,
|
||||||
|
Set.of(),
|
||||||
|
Set.of(),
|
||||||
|
false,
|
||||||
|
JSONObject.of(
|
||||||
|
"memory_slices", "Array of activated memory slices.",
|
||||||
|
"memory_slice.unitId", "Id of the MemoryUnit which this MemorySlice belongs to.",
|
||||||
|
"memory_slice.summary", "Summary of the MemorySlice.",
|
||||||
|
"memory_slice.date", "Date of the MemorySlice that is created."
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
Function<Map<String, Object>, String> invoker = params -> {
|
||||||
|
List<JSONObject> memorySlices = memoryCapability.getActivatedSlices().stream()
|
||||||
|
.map(activatedSlice -> JSONObject.of(
|
||||||
|
"unitId", activatedSlice.getUnitId(),
|
||||||
|
"summary", activatedSlice.getSummary(),
|
||||||
|
"date", activatedSlice.getDate().toString()
|
||||||
|
))
|
||||||
|
.toList();
|
||||||
|
return JSONObject.of("memory_slices", memorySlices).toJSONString();
|
||||||
|
};
|
||||||
|
|
||||||
|
return new BuiltinActionRegistry.BuiltinActionDefinition(
|
||||||
|
createActionKey("list_activated_memory"),
|
||||||
|
info,
|
||||||
|
invoker
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用于发起自对话的 Builtin MetaAction
|
||||||
|
*
|
||||||
|
* @return 内建 MetaAction 定义数据
|
||||||
|
*/
|
||||||
|
private BuiltinActionRegistry.BuiltinActionDefinition buildInitiateTurnDefinition() {
|
||||||
|
Set<String> tags = new HashSet<>(basicTags);
|
||||||
|
tags.add("Agent Turn");
|
||||||
|
|
||||||
|
MetaActionInfo info = new MetaActionInfo(
|
||||||
|
false,
|
||||||
|
null,
|
||||||
|
Map.of(
|
||||||
|
"input", "Input required to initiate an internal Agent Turn.",
|
||||||
|
"target", "The people expected to reply to this internal Agent Turn."
|
||||||
|
),
|
||||||
|
"Create an internal Agent Turn to resolve a task.",
|
||||||
|
tags,
|
||||||
|
Set.of(),
|
||||||
|
Set.of(),
|
||||||
|
false,
|
||||||
|
JSONObject.of(
|
||||||
|
"answer", "The answer of the Agent Turn."
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
Function<Map<String, Object>, String> invoker = params -> {
|
||||||
|
String input = BuiltinActionRegistry.BuiltinActionDefinition.requireString(params, "input");
|
||||||
|
String target = BuiltinActionRegistry.BuiltinActionDefinition.requireString(params, "target");
|
||||||
|
return cognationCapability.initiateTurn(input, target);
|
||||||
|
};
|
||||||
|
|
||||||
|
return new BuiltinActionRegistry.BuiltinActionDefinition(
|
||||||
|
createActionKey("initiate_turn"),
|
||||||
|
info,
|
||||||
|
invoker
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用于获取当前交互状态的 Builtin MetaAction
|
||||||
|
*
|
||||||
|
* @return 内建 MetaAction 定义数据
|
||||||
|
*/
|
||||||
|
private BuiltinActionRegistry.BuiltinActionDefinition buildInteractionStatusDefinition() {
|
||||||
|
Set<String> tags = new HashSet<>(basicTags);
|
||||||
|
tags.add("Agent Status");
|
||||||
|
|
||||||
|
MetaActionInfo info = new MetaActionInfo(
|
||||||
|
false,
|
||||||
|
null,
|
||||||
|
Map.of(),
|
||||||
|
"View last interaction time.",
|
||||||
|
tags,
|
||||||
|
Set.of(),
|
||||||
|
Set.of(),
|
||||||
|
false,
|
||||||
|
JSONObject.of(
|
||||||
|
"lastInteractTime", "Last interaction time."
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
Function<Map<String, Object>, String> invoker = params -> perceiveCapability.showLastInteract().atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||||
|
|
||||||
|
return new BuiltinActionRegistry.BuiltinActionDefinition(
|
||||||
|
createActionKey("initiate_turn"),
|
||||||
|
info,
|
||||||
|
invoker
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String createActionKey(String actionName) {
|
||||||
|
return CAPABILITY_LOCATION + "::" + actionName;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user