chore: remove belief collector and small tweaks
This commit is contained in:
@@ -167,7 +167,7 @@ class BDICoreAgent(BaseAgent):
|
|||||||
case "force_next_phase":
|
case "force_next_phase":
|
||||||
self._force_next_phase()
|
self._force_next_phase()
|
||||||
case _:
|
case _:
|
||||||
self.logger.warning("Received unknow user interruption: %s", msg)
|
self.logger.warning("Received unknown user interruption: %s", msg)
|
||||||
|
|
||||||
def _apply_belief_changes(self, belief_changes: BeliefMessage):
|
def _apply_belief_changes(self, belief_changes: BeliefMessage):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ class AgentSettings(BaseModel):
|
|||||||
Names of the various agents in the system. These names are used for routing messages.
|
Names of the various agents in the system. These names are used for routing messages.
|
||||||
|
|
||||||
:ivar bdi_core_name: Name of the BDI Core Agent.
|
:ivar bdi_core_name: Name of the BDI Core Agent.
|
||||||
:ivar bdi_belief_collector_name: Name of the Belief Collector Agent.
|
|
||||||
:ivar bdi_program_manager_name: Name of the BDI Program Manager Agent.
|
:ivar bdi_program_manager_name: Name of the BDI Program Manager Agent.
|
||||||
:ivar text_belief_extractor_name: Name of the Text Belief Extractor Agent.
|
:ivar text_belief_extractor_name: Name of the Text Belief Extractor Agent.
|
||||||
:ivar vad_name: Name of the Voice Activity Detection (VAD) Agent.
|
:ivar vad_name: Name of the Voice Activity Detection (VAD) Agent.
|
||||||
@@ -50,7 +49,6 @@ class AgentSettings(BaseModel):
|
|||||||
|
|
||||||
# agent names
|
# agent names
|
||||||
bdi_core_name: str = "bdi_core_agent"
|
bdi_core_name: str = "bdi_core_agent"
|
||||||
bdi_belief_collector_name: str = "belief_collector_agent"
|
|
||||||
bdi_program_manager_name: str = "bdi_program_manager_agent"
|
bdi_program_manager_name: str = "bdi_program_manager_agent"
|
||||||
text_belief_extractor_name: str = "text_belief_extractor_agent"
|
text_belief_extractor_name: str = "text_belief_extractor_agent"
|
||||||
vad_name: str = "vad_agent"
|
vad_name: str = "vad_agent"
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ from zmq.asyncio import Context
|
|||||||
|
|
||||||
# BDI agents
|
# BDI agents
|
||||||
from control_backend.agents.bdi import (
|
from control_backend.agents.bdi import (
|
||||||
BDIBeliefCollectorAgent,
|
|
||||||
BDICoreAgent,
|
BDICoreAgent,
|
||||||
TextBeliefExtractorAgent,
|
TextBeliefExtractorAgent,
|
||||||
)
|
)
|
||||||
@@ -122,12 +121,6 @@ async def lifespan(app: FastAPI):
|
|||||||
"name": settings.agent_settings.bdi_core_name,
|
"name": settings.agent_settings.bdi_core_name,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
"BeliefCollectorAgent": (
|
|
||||||
BDIBeliefCollectorAgent,
|
|
||||||
{
|
|
||||||
"name": settings.agent_settings.bdi_belief_collector_name,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
"TextBeliefExtractorAgent": (
|
"TextBeliefExtractorAgent": (
|
||||||
TextBeliefExtractorAgent,
|
TextBeliefExtractorAgent,
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -478,8 +478,7 @@ async def test_stop_closes_sockets():
|
|||||||
|
|
||||||
pubsocket.close.assert_called_once()
|
pubsocket.close.assert_called_once()
|
||||||
subsocket.close.assert_called_once()
|
subsocket.close.assert_called_once()
|
||||||
# Note: repsocket is not closed in stop() method, but you might want to add it
|
repsocket.close.assert_called_once()
|
||||||
# repsocket.close.assert_called_once()
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
|
|||||||
@@ -45,12 +45,12 @@ async def test_setup_no_asl(mock_agentspeak_env, agent):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_handle_belief_collector_message(agent, mock_settings):
|
async def test_handle_belief_message(agent, mock_settings):
|
||||||
"""Test that incoming beliefs are added to the BDI agent"""
|
"""Test that incoming beliefs are added to the BDI agent"""
|
||||||
beliefs = [Belief(name="user_said", arguments=["Hello"])]
|
beliefs = [Belief(name="user_said", arguments=["Hello"])]
|
||||||
msg = InternalMessage(
|
msg = InternalMessage(
|
||||||
to="bdi_agent",
|
to="bdi_agent",
|
||||||
sender=mock_settings.agent_settings.bdi_belief_collector_name,
|
sender=mock_settings.agent_settings.text_belief_extractor_name,
|
||||||
body=BeliefMessage(create=beliefs).model_dump_json(),
|
body=BeliefMessage(create=beliefs).model_dump_json(),
|
||||||
thread="beliefs",
|
thread="beliefs",
|
||||||
)
|
)
|
||||||
@@ -82,7 +82,7 @@ async def test_handle_delete_belief_message(agent, mock_settings):
|
|||||||
|
|
||||||
msg = InternalMessage(
|
msg = InternalMessage(
|
||||||
to="bdi_agent",
|
to="bdi_agent",
|
||||||
sender=mock_settings.agent_settings.bdi_belief_collector_name,
|
sender=mock_settings.agent_settings.text_belief_extractor_name,
|
||||||
body=BeliefMessage(delete=beliefs).model_dump_json(),
|
body=BeliefMessage(delete=beliefs).model_dump_json(),
|
||||||
thread="beliefs",
|
thread="beliefs",
|
||||||
)
|
)
|
||||||
@@ -104,11 +104,11 @@ async def test_handle_delete_belief_message(agent, mock_settings):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_incorrect_belief_collector_message(agent, mock_settings):
|
async def test_incorrect_belief_message(agent, mock_settings):
|
||||||
"""Test that incorrect message format triggers an exception."""
|
"""Test that incorrect message format triggers an exception."""
|
||||||
msg = InternalMessage(
|
msg = InternalMessage(
|
||||||
to="bdi_agent",
|
to="bdi_agent",
|
||||||
sender=mock_settings.agent_settings.bdi_belief_collector_name,
|
sender=mock_settings.agent_settings.text_belief_extractor_name,
|
||||||
body=json.dumps({"bad_format": "bad_format"}),
|
body=json.dumps({"bad_format": "bad_format"}),
|
||||||
thread="beliefs",
|
thread="beliefs",
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -359,6 +359,30 @@ async def test_simulated_real_turn_remove_belief(agent, llm, sample_program):
|
|||||||
assert any(b.name == "no_more_booze" for b in agent._current_beliefs.false)
|
assert any(b.name == "no_more_booze" for b in agent._current_beliefs.false)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_infer_goal_completions_sends_beliefs(agent, llm):
|
||||||
|
"""Test that inferred goal completions are sent to the BDI core."""
|
||||||
|
goal = BaseGoal(
|
||||||
|
id=uuid.uuid4(), name="Say Hello", description="The user said hello", can_fail=True
|
||||||
|
)
|
||||||
|
agent.goal_inferrer.goals = {goal}
|
||||||
|
|
||||||
|
# Mock goal inference: goal is achieved
|
||||||
|
llm.query = AsyncMock(return_value=True)
|
||||||
|
|
||||||
|
await agent._infer_goal_completions()
|
||||||
|
|
||||||
|
# Should send belief change to BDI core
|
||||||
|
agent.send.assert_awaited_once()
|
||||||
|
sent: InternalMessage = agent.send.call_args.args[0]
|
||||||
|
assert sent.to == settings.agent_settings.bdi_core_name
|
||||||
|
assert sent.thread == "beliefs"
|
||||||
|
|
||||||
|
parsed = BeliefMessage.model_validate_json(sent.body)
|
||||||
|
assert len(parsed.create) == 1
|
||||||
|
assert parsed.create[0].name == "achieved_say_hello"
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_llm_failure_handling(agent, llm, sample_program):
|
async def test_llm_failure_handling(agent, llm, sample_program):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -55,4 +55,6 @@ def test_get_decode_options():
|
|||||||
assert isinstance(options["sample_len"], int)
|
assert isinstance(options["sample_len"], int)
|
||||||
|
|
||||||
# When disabled, it should not limit output length based on input size
|
# When disabled, it should not limit output length based on input size
|
||||||
assert "sample_rate" not in options
|
recognizer = OpenAIWhisperSpeechRecognizer(limit_output_length=False)
|
||||||
|
options = recognizer._get_decode_options(audio)
|
||||||
|
assert "sample_len" not in options
|
||||||
|
|||||||
@@ -60,7 +60,6 @@ async def test_handle_message_unknown_command(agent):
|
|||||||
|
|
||||||
await agent.handle_message(msg)
|
await agent.handle_message(msg)
|
||||||
|
|
||||||
agent.logger.warning.assert_called()
|
|
||||||
agent._paused.clear.assert_not_called()
|
agent._paused.clear.assert_not_called()
|
||||||
agent._paused.set.assert_not_called()
|
agent._paused.set.assert_not_called()
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ def mock_settings():
|
|||||||
mock.zmq_settings.internal_sub_address = "tcp://localhost:5561"
|
mock.zmq_settings.internal_sub_address = "tcp://localhost:5561"
|
||||||
mock.zmq_settings.ri_command_address = "tcp://localhost:0000"
|
mock.zmq_settings.ri_command_address = "tcp://localhost:0000"
|
||||||
mock.agent_settings.bdi_core_name = "bdi_core_agent"
|
mock.agent_settings.bdi_core_name = "bdi_core_agent"
|
||||||
mock.agent_settings.bdi_belief_collector_name = "belief_collector_agent"
|
|
||||||
mock.agent_settings.llm_name = "llm_agent"
|
mock.agent_settings.llm_name = "llm_agent"
|
||||||
mock.agent_settings.robot_speech_name = "robot_speech_agent"
|
mock.agent_settings.robot_speech_name = "robot_speech_agent"
|
||||||
mock.agent_settings.transcription_name = "transcription_agent"
|
mock.agent_settings.transcription_name = "transcription_agent"
|
||||||
|
|||||||
Reference in New Issue
Block a user