| # agents/base_agent.py | |
| from typing import Dict | |
| class ACPMessage: | |
| def __init__(self, sender: str, receiver: str, performative: str, content: str): | |
| self.sender = sender | |
| self.receiver = receiver | |
| self.performative = performative # "inform", "request", etc. | |
| self.content = content | |
| def to_dict(self) -> Dict: | |
| return { | |
| "sender": self.sender, | |
| "receiver": self.receiver, | |
| "performative": self.performative, | |
| "content": self.content | |
| } | |
| def __str__(self): | |
| return f"[{self.performative.upper()}] {self.sender} → {self.receiver}: {self.content}" | |
| class BaseAgent: | |
| def __init__(self, name: str, role: str): | |
| self.name = name | |
| self.role = role | |
| def receive_message(self, message: ACPMessage) -> ACPMessage: | |
| """ | |
| Override this method to define agent-specific reply logic. | |
| """ | |
| raise NotImplementedError("You must override receive_message() in your agent.") | |
| def create_message(self, receiver: str, performative: str, content: str) -> ACPMessage: | |
| return ACPMessage( | |
| sender=self.name, | |
| receiver=receiver, | |
| performative=performative, | |
| content=content | |
| ) | |