mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
refactor(ActionInterventor): redefine DTOs in ActionInterventor to adapt the actual intervention logic
This commit is contained in:
@@ -10,6 +10,7 @@ import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateM
|
|||||||
import work.slhaf.partner.core.action.ActionCapability;
|
import work.slhaf.partner.core.action.ActionCapability;
|
||||||
import work.slhaf.partner.core.action.ActionCore;
|
import work.slhaf.partner.core.action.ActionCore;
|
||||||
import work.slhaf.partner.core.action.entity.ActionData;
|
import work.slhaf.partner.core.action.entity.ActionData;
|
||||||
|
import work.slhaf.partner.core.action.entity.PhaserRecord;
|
||||||
import work.slhaf.partner.core.cognation.CognationCapability;
|
import work.slhaf.partner.core.cognation.CognationCapability;
|
||||||
import work.slhaf.partner.core.memory.MemoryCapability;
|
import work.slhaf.partner.core.memory.MemoryCapability;
|
||||||
import work.slhaf.partner.module.common.module.PreRunningModule;
|
import work.slhaf.partner.module.common.module.PreRunningModule;
|
||||||
@@ -174,7 +175,7 @@ public class ActionInterventor extends PreRunningModule implements ActivateModel
|
|||||||
recognizerInput.setUserDialogMapStr(memoryCapability.getUserDialogMapStr(userId));
|
recognizerInput.setUserDialogMapStr(memoryCapability.getUserDialogMapStr(userId));
|
||||||
// 参考的对话列表大小或需调整
|
// 参考的对话列表大小或需调整
|
||||||
recognizerInput.setRecentMessages(cognationCapability.getChatMessages());
|
recognizerInput.setRecentMessages(cognationCapability.getChatMessages());
|
||||||
recognizerInput.setExecutingActions(actionCapability.listPhaserRecords());
|
recognizerInput.setExecutingActions(actionCapability.listPhaserRecords().stream().map(PhaserRecord::actionData).toList());
|
||||||
recognizerInput.setPreparedActions(actionCapability.listPreparedAction(userId));
|
recognizerInput.setPreparedActions(actionCapability.listPreparedAction(userId));
|
||||||
return recognizerInput;
|
return recognizerInput;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import work.slhaf.partner.api.chat.pojo.Message;
|
|||||||
import work.slhaf.partner.core.action.ActionCapability;
|
import work.slhaf.partner.core.action.ActionCapability;
|
||||||
import work.slhaf.partner.core.action.ActionCore.ExecutorType;
|
import work.slhaf.partner.core.action.ActionCore.ExecutorType;
|
||||||
import work.slhaf.partner.core.action.entity.ActionData;
|
import work.slhaf.partner.core.action.entity.ActionData;
|
||||||
import work.slhaf.partner.core.action.entity.PhaserRecord;
|
|
||||||
import work.slhaf.partner.core.memory.pojo.EvaluatedSlice;
|
import work.slhaf.partner.core.memory.pojo.EvaluatedSlice;
|
||||||
import work.slhaf.partner.module.modules.action.interventor.evaluator.entity.EvaluatorInput;
|
import work.slhaf.partner.module.modules.action.interventor.evaluator.entity.EvaluatorInput;
|
||||||
import work.slhaf.partner.module.modules.action.interventor.evaluator.entity.EvaluatorResult;
|
import work.slhaf.partner.module.modules.action.interventor.evaluator.entity.EvaluatorResult;
|
||||||
@@ -37,7 +36,7 @@ public class InterventionEvaluator extends AgentRunningSubModule<EvaluatorInput,
|
|||||||
public EvaluatorResult execute(EvaluatorInput input) {
|
public EvaluatorResult execute(EvaluatorInput input) {
|
||||||
// 获取必须数据
|
// 获取必须数据
|
||||||
ExecutorService executor = actionCapability.getExecutor(ExecutorType.VIRTUAL);
|
ExecutorService executor = actionCapability.getExecutor(ExecutorType.VIRTUAL);
|
||||||
Map<String, PhaserRecord> executingInterventions = input.getExecutingInterventions();
|
Map<String, ActionData> executingInterventions = input.getExecutingInterventions();
|
||||||
Map<String, ActionData> preparedInterventions = input.getPreparedInterventions();
|
Map<String, ActionData> preparedInterventions = input.getPreparedInterventions();
|
||||||
CountDownLatch latch = new CountDownLatch(executingInterventions.size() + preparedInterventions.size());
|
CountDownLatch latch = new CountDownLatch(executingInterventions.size() + preparedInterventions.size());
|
||||||
|
|
||||||
@@ -59,15 +58,9 @@ public class InterventionEvaluator extends AgentRunningSubModule<EvaluatorInput,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> void evaluateIntervention(List<EvaluatedInterventionData> evaluatedDataList, Map<String, T> interventionMap, EvaluatorInput input, ExecutorService executor, CountDownLatch latch) {
|
private void evaluateIntervention(List<EvaluatedInterventionData> evaluatedDataList, Map<String, ActionData> interventionMap, EvaluatorInput input, ExecutorService executor, CountDownLatch latch) {
|
||||||
interventionMap.forEach((tendency, data) -> {
|
interventionMap.forEach((tendency, actionData) -> executor.execute(() -> {
|
||||||
executor.execute(() -> {
|
|
||||||
try {
|
try {
|
||||||
ActionData actionData = switch (data) {
|
|
||||||
case PhaserRecord record -> record.actionData();
|
|
||||||
case ActionData tempData -> tempData;
|
|
||||||
default -> null;
|
|
||||||
};
|
|
||||||
String prompt = buildPrompt(input.getRecentMessages(), input.getActivatedSlices(), actionData, tendency);
|
String prompt = buildPrompt(input.getRecentMessages(), input.getActivatedSlices(), actionData, tendency);
|
||||||
|
|
||||||
ChatResponse response = this.singleChat(prompt);
|
ChatResponse response = this.singleChat(prompt);
|
||||||
@@ -81,8 +74,7 @@ public class InterventionEvaluator extends AgentRunningSubModule<EvaluatorInput,
|
|||||||
} finally {
|
} finally {
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
}
|
}
|
||||||
});
|
}));
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildPrompt(List<Message> recentMessages, List<EvaluatedSlice> activatedSlices,
|
private String buildPrompt(List<Message> recentMessages, List<EvaluatedSlice> activatedSlices,
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package work.slhaf.partner.module.modules.action.interventor.evaluator.entity;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import work.slhaf.partner.api.chat.pojo.Message;
|
import work.slhaf.partner.api.chat.pojo.Message;
|
||||||
import work.slhaf.partner.core.action.entity.ActionData;
|
import work.slhaf.partner.core.action.entity.ActionData;
|
||||||
import work.slhaf.partner.core.action.entity.PhaserRecord;
|
|
||||||
import work.slhaf.partner.core.memory.pojo.EvaluatedSlice;
|
import work.slhaf.partner.core.memory.pojo.EvaluatedSlice;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -11,7 +10,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class EvaluatorInput {
|
public class EvaluatorInput {
|
||||||
private Map<String, PhaserRecord> executingInterventions;
|
private Map<String, ActionData> executingInterventions;
|
||||||
private Map<String, ActionData> preparedInterventions;
|
private Map<String, ActionData> preparedInterventions;
|
||||||
private List<EvaluatedSlice> activatedSlices;
|
private List<EvaluatedSlice> activatedSlices;
|
||||||
private List<Message> recentMessages;
|
private List<Message> recentMessages;
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import work.slhaf.partner.api.chat.pojo.ChatResponse;
|
|||||||
import work.slhaf.partner.core.action.ActionCapability;
|
import work.slhaf.partner.core.action.ActionCapability;
|
||||||
import work.slhaf.partner.core.action.ActionCore;
|
import work.slhaf.partner.core.action.ActionCore;
|
||||||
import work.slhaf.partner.core.action.entity.ActionData;
|
import work.slhaf.partner.core.action.entity.ActionData;
|
||||||
import work.slhaf.partner.core.action.entity.PhaserRecord;
|
|
||||||
import work.slhaf.partner.module.modules.action.interventor.recognizer.entity.MetaRecognizerResult;
|
import work.slhaf.partner.module.modules.action.interventor.recognizer.entity.MetaRecognizerResult;
|
||||||
import work.slhaf.partner.module.modules.action.interventor.recognizer.entity.RecognizerInput;
|
import work.slhaf.partner.module.modules.action.interventor.recognizer.entity.RecognizerInput;
|
||||||
import work.slhaf.partner.module.modules.action.interventor.recognizer.entity.RecognizerResult;
|
import work.slhaf.partner.module.modules.action.interventor.recognizer.entity.RecognizerResult;
|
||||||
@@ -31,13 +30,13 @@ public class InterventionRecognizer extends AgentRunningSubModule<RecognizerInpu
|
|||||||
public RecognizerResult execute(RecognizerInput input) {
|
public RecognizerResult execute(RecognizerInput input) {
|
||||||
// 获取必须数据
|
// 获取必须数据
|
||||||
ExecutorService executor = actionCapability.getExecutor(ActionCore.ExecutorType.VIRTUAL);
|
ExecutorService executor = actionCapability.getExecutor(ActionCore.ExecutorType.VIRTUAL);
|
||||||
List<PhaserRecord> executingActions = input.getExecutingActions();
|
List<ActionData> executingActions = input.getExecutingActions();
|
||||||
List<ActionData> preparedActions = input.getPreparedActions();
|
List<ActionData> preparedActions = input.getPreparedActions();
|
||||||
CountDownLatch countDownLatch = new CountDownLatch(executingActions.size() + preparedActions.size());
|
CountDownLatch countDownLatch = new CountDownLatch(executingActions.size() + preparedActions.size());
|
||||||
|
|
||||||
// 创建结果容器
|
// 创建结果容器
|
||||||
RecognizerResult recognizerResult = new RecognizerResult();
|
RecognizerResult recognizerResult = new RecognizerResult();
|
||||||
Map<String, PhaserRecord> executingInterventions = recognizerResult.getExecutingInterventions();
|
Map<String, ActionData> executingInterventions = recognizerResult.getExecutingInterventions();
|
||||||
Map<String, ActionData> preparedInterventions = recognizerResult.getPreparedInterventions();
|
Map<String, ActionData> preparedInterventions = recognizerResult.getPreparedInterventions();
|
||||||
|
|
||||||
// 执行识别操作
|
// 执行识别操作
|
||||||
@@ -52,8 +51,8 @@ public class InterventionRecognizer extends AgentRunningSubModule<RecognizerInpu
|
|||||||
return recognizerResult;
|
return recognizerResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> void recognizeIntervention(Map<String, T> interventionsMap, List<T> actions, ExecutorService executor, RecognizerInput input, CountDownLatch latch) {
|
private void recognizeIntervention(Map<String, ActionData> interventionsMap, List<ActionData> actions, ExecutorService executor, RecognizerInput input, CountDownLatch latch) {
|
||||||
for (T data : actions) {
|
for (ActionData data : actions) {
|
||||||
executor.execute(() -> {
|
executor.execute(() -> {
|
||||||
try {
|
try {
|
||||||
String prompt = buildPrompt(data, input);
|
String prompt = buildPrompt(data, input);
|
||||||
@@ -73,15 +72,7 @@ public class InterventionRecognizer extends AgentRunningSubModule<RecognizerInpu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> String buildPrompt(T data, RecognizerInput input) {
|
private String buildPrompt(ActionData actionData, RecognizerInput input) {
|
||||||
ActionData actionData = switch (data) {
|
|
||||||
case PhaserRecord record -> record.actionData();
|
|
||||||
case ActionData tempData -> tempData;
|
|
||||||
default -> null;
|
|
||||||
};
|
|
||||||
if (actionData == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
JSONObject json = new JSONObject();
|
JSONObject json = new JSONObject();
|
||||||
|
|
||||||
JSONObject actionInfo = json.putObject("行动信息");
|
JSONObject actionInfo = json.putObject("行动信息");
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package work.slhaf.partner.module.modules.action.interventor.recognizer.entity;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import work.slhaf.partner.api.chat.pojo.Message;
|
import work.slhaf.partner.api.chat.pojo.Message;
|
||||||
import work.slhaf.partner.core.action.entity.ActionData;
|
import work.slhaf.partner.core.action.entity.ActionData;
|
||||||
import work.slhaf.partner.core.action.entity.PhaserRecord;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -18,6 +17,6 @@ public class RecognizerInput {
|
|||||||
/**
|
/**
|
||||||
* 正在执行的行动-Phaser记录列表,在Recognizer中结合本次输入并发评估(考虑到不同行动链之间对LLM的影响)
|
* 正在执行的行动-Phaser记录列表,在Recognizer中结合本次输入并发评估(考虑到不同行动链之间对LLM的影响)
|
||||||
*/
|
*/
|
||||||
private List<PhaserRecord> executingActions;
|
private List<ActionData> executingActions;
|
||||||
private List<ActionData> preparedActions;
|
private List<ActionData> preparedActions;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package work.slhaf.partner.module.modules.action.interventor.recognizer.entity;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import work.slhaf.partner.core.action.entity.ActionData;
|
import work.slhaf.partner.core.action.entity.ActionData;
|
||||||
import work.slhaf.partner.core.action.entity.PhaserRecord;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -16,9 +15,9 @@ public class RecognizerResult {
|
|||||||
* <h4>将被干预的‘执行中行动’</h4>
|
* <h4>将被干预的‘执行中行动’</h4>
|
||||||
* key: 干预倾向
|
* key: 干预倾向
|
||||||
* <br/>
|
* <br/>
|
||||||
* value: 干预倾向将作用的 phaser 记录
|
* value: 干预倾向将作用的行动数据
|
||||||
*/
|
*/
|
||||||
private Map<String, PhaserRecord> executingInterventions = new HashMap<>();
|
private Map<String, ActionData> executingInterventions = new HashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <h4>将被干预的‘等待中行动’</h4>
|
* <h4>将被干预的‘等待中行动’</h4>
|
||||||
|
|||||||
Reference in New Issue
Block a user