diff --git a/src/control_backend/agents/bdi/bdi_core.py b/src/control_backend/agents/bdi/bdi_core.py index 1026df5..910beae 100644 --- a/src/control_backend/agents/bdi/bdi_core.py +++ b/src/control_backend/agents/bdi/bdi_core.py @@ -7,6 +7,7 @@ from spade.template import Template from spade_bdi.bdi import BDIAgent from control_backend.agents.bdi.behaviours.belief_setter import BeliefSetter +from control_backend.agents.bdi.behaviours.recieve_llm_resp_behavoir import ReceiveLLMResponseBehaviour from control_backend.core.config import settings @@ -27,7 +28,7 @@ class BDICoreAgent(BDIAgent): self.logger.info("BDICoreAgent setup started") self.add_behaviour(BeliefSetter()) - self._add_llm_response_receiver() + self.add_behaviour(ReceiveLLMResponseBehaviour()) await self._send_to_llm("Hello we are the Pepper plus team") # This is the example message currently sent to the llm at the start of the Program @@ -63,36 +64,9 @@ class BDICoreAgent(BDIAgent): body= text, thread= "llm_request", ) - msg.set_metadata("performative", "inform") + await self.send(msg) self.agent.logger.debug("Message sent to LLM: %s", text) self.add_behaviour(SendBehaviour()) - return "LLM message dispatch scheduled" - - def _add_llm_response_receiver(self) -> None: - """ - Adds behavior to receive responses from the LLM Agent. - """ - - class ReceiveLLMResponseBehaviour(CyclicBehaviour): - async def run(self) -> None: - msg = await self.receive(timeout=2) - if not msg: - return - - sender = msg.sender.node - match sender: - case settings.agent_settings.llm_agent_name: - content = msg.body - self.agent.logger.info("Received LLM response: %s", content) - #Here the BDI can pass the message back as a response - case _: - self.logger.debug("Not from the llm, discarding message") - pass - - - template = Template() - template.thread = "llm_response" - - self.add_behaviour(ReceiveLLMResponseBehaviour(), template) + return "LLM message dispatch scheduled" \ No newline at end of file diff --git a/src/control_backend/agents/bdi/behaviours/recieve_llm_resp_behavoir.py b/src/control_backend/agents/bdi/behaviours/recieve_llm_resp_behavoir.py new file mode 100644 index 0000000..2b788ae --- /dev/null +++ b/src/control_backend/agents/bdi/behaviours/recieve_llm_resp_behavoir.py @@ -0,0 +1,29 @@ +import asyncio +import json +import logging + +from spade.agent import Message +from spade.behaviour import CyclicBehaviour +from spade_bdi.bdi import BDIAgent + +from control_backend.core.config import settings + +class ReceiveLLMResponseBehaviour(CyclicBehaviour): + """ + Adds behavior to receive responses from the LLM Agent. + """ + logger = logging.getLogger("BDI/LLM Reciever") + async def run(self): + msg = await self.receive(timeout=2) + if not msg: + return + + sender = msg.sender.node + match sender: + case settings.agent_settings.llm_agent_name: + content = msg.body + self.logger.info("Received LLM response: %s", content) + #Here the BDI can pass the message back as a response + case _: + self.logger.debug("Not from the llm, discarding message") + pass \ No newline at end of file diff --git a/src/control_backend/main.py b/src/control_backend/main.py index 200b52d..97b8218 100644 --- a/src/control_backend/main.py +++ b/src/control_backend/main.py @@ -36,9 +36,11 @@ async def lifespan(app: FastAPI): # Initiate agents - llm_agent = LLMAgent(settings.agent_settings.test_agent_name + '@' + settings.agent_settings.host, "secret, ask twirre") + llm_agent = LLMAgent(settings.agent_settings.llm_agent_name + '@' + settings.agent_settings.host, + "secret, ask twirre") await llm_agent.start() - bdi_core = BDICoreAgent(settings.agent_settings.bdi_core_agent_name + '@' + settings.agent_settings.host, "secret, ask twirre", "src/control_backend/agents/bdi/rules.asl") + bdi_core = BDICoreAgent(settings.agent_settings.bdi_core_agent_name + '@' + settings.agent_settings.host, + "secret, ask twirre", "src/control_backend/agents/bdi/rules.asl") await bdi_core.start()