fix: some bugs and some tests
ref: N25B-429
This commit is contained in:
@@ -101,7 +101,6 @@ class BDICoreAgent(BaseAgent):
|
||||
maybe_more_work = True
|
||||
while maybe_more_work:
|
||||
maybe_more_work = False
|
||||
self.logger.debug("Stepping BDI.")
|
||||
if self.bdi_agent.step():
|
||||
maybe_more_work = True
|
||||
|
||||
|
||||
@@ -67,14 +67,14 @@ class BDIProgramManager(BaseAgent):
|
||||
|
||||
await self.send(msg)
|
||||
|
||||
def handle_message(self, msg: InternalMessage):
|
||||
async def handle_message(self, msg: InternalMessage):
|
||||
match msg.thread:
|
||||
case "transition_phase":
|
||||
phases = json.loads(msg.body)
|
||||
|
||||
self._transition_phase(phases["old"], phases["new"])
|
||||
await self._transition_phase(phases["old"], phases["new"])
|
||||
|
||||
def _transition_phase(self, old: str, new: str):
|
||||
async def _transition_phase(self, old: str, new: str):
|
||||
assert old == str(self._phase.id)
|
||||
|
||||
if new == "end":
|
||||
@@ -85,8 +85,8 @@ class BDIProgramManager(BaseAgent):
|
||||
if str(phase.id) == new:
|
||||
self._phase = phase
|
||||
|
||||
self._send_beliefs_to_semantic_belief_extractor()
|
||||
self._send_goals_to_semantic_belief_extractor()
|
||||
await self._send_beliefs_to_semantic_belief_extractor()
|
||||
await self._send_goals_to_semantic_belief_extractor()
|
||||
|
||||
# Notify user interaction agent
|
||||
msg = InternalMessage(
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
norms("").
|
||||
|
||||
+user_said(Message) : norms(Norms) <-
|
||||
.notify_user_said(Message);
|
||||
-user_said(Message);
|
||||
.reply(Message, Norms).
|
||||
|
||||
@@ -90,7 +90,7 @@ class TextBeliefExtractorAgent(BaseAgent):
|
||||
self.logger.debug("Received text from LLM: %s", msg.body)
|
||||
self._apply_conversation_message(ChatMessage(role="assistant", content=msg.body))
|
||||
case settings.agent_settings.bdi_program_manager_name:
|
||||
self._handle_program_manager_message(msg)
|
||||
await self._handle_program_manager_message(msg)
|
||||
case _:
|
||||
self.logger.info("Discarding message from %s", sender)
|
||||
return
|
||||
@@ -105,7 +105,7 @@ class TextBeliefExtractorAgent(BaseAgent):
|
||||
length_limit = settings.behaviour_settings.conversation_history_length_limit
|
||||
self.conversation.messages = (self.conversation.messages + [message])[-length_limit:]
|
||||
|
||||
def _handle_program_manager_message(self, msg: InternalMessage):
|
||||
async def _handle_program_manager_message(self, msg: InternalMessage):
|
||||
"""
|
||||
Handle a message from the program manager: extract available beliefs and goals from it.
|
||||
|
||||
@@ -114,8 +114,10 @@ class TextBeliefExtractorAgent(BaseAgent):
|
||||
match msg.thread:
|
||||
case "beliefs":
|
||||
self._handle_beliefs_message(msg)
|
||||
await self._infer_new_beliefs()
|
||||
case "goals":
|
||||
self._handle_goals_message(msg)
|
||||
await self._infer_goal_completions()
|
||||
case "conversation_history":
|
||||
if msg.body == "reset":
|
||||
self._reset()
|
||||
@@ -141,8 +143,9 @@ class TextBeliefExtractorAgent(BaseAgent):
|
||||
available_beliefs = [b for b in belief_list.beliefs if isinstance(b, SemanticBelief)]
|
||||
self.belief_inferrer.available_beliefs = available_beliefs
|
||||
self.logger.debug(
|
||||
"Received %d semantic beliefs from the program manager.",
|
||||
"Received %d semantic beliefs from the program manager: %s",
|
||||
len(available_beliefs),
|
||||
", ".join(b.name for b in available_beliefs),
|
||||
)
|
||||
|
||||
def _handle_goals_message(self, msg: InternalMessage):
|
||||
@@ -158,8 +161,9 @@ class TextBeliefExtractorAgent(BaseAgent):
|
||||
available_goals = [g for g in goals_list.goals if g.can_fail]
|
||||
self.goal_inferrer.goals = available_goals
|
||||
self.logger.debug(
|
||||
"Received %d failable goals from the program manager.",
|
||||
"Received %d failable goals from the program manager: %s",
|
||||
len(available_goals),
|
||||
", ".join(g.name for g in available_goals),
|
||||
)
|
||||
|
||||
async def _user_said(self, text: str):
|
||||
@@ -183,6 +187,7 @@ class TextBeliefExtractorAgent(BaseAgent):
|
||||
|
||||
new_beliefs = conversation_beliefs - self._current_beliefs
|
||||
if not new_beliefs:
|
||||
self.logger.debug("No new beliefs detected.")
|
||||
return
|
||||
|
||||
self._current_beliefs |= new_beliefs
|
||||
@@ -217,6 +222,7 @@ class TextBeliefExtractorAgent(BaseAgent):
|
||||
self._current_goal_completions[goal] = achieved
|
||||
|
||||
if not new_achieved and not new_not_achieved:
|
||||
self.logger.debug("No goal achievement changes detected.")
|
||||
return
|
||||
|
||||
belief_changes = BeliefMessage(
|
||||
|
||||
Reference in New Issue
Block a user