# 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 | |
) | |