Spaces:
Build error
Build error
File size: 1,723 Bytes
01523b5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
from __future__ import annotations
from typing import TYPE_CHECKING, List, Tuple
from . import updater_registry as UpdaterRegistry
from .base import BaseUpdater
from agentverse.message import Message
if TYPE_CHECKING:
from agentverse.environments import BaseEnvironment
from agentverse.agents import BaseAgent
@UpdaterRegistry.register("sde_team")
class SdeTeamUpdater(BaseUpdater):
"""
The basic version of updater.
The messages will be seen by all the receiver specified in the message.
"""
def update_memory(self, environment: BaseEnvironment):
added = False
for message in environment.last_messages:
if message.content == "":
continue
added |= self.add_message_to_all_agents(environment.agents, message)
def add_message_to_all_agents(
self, agents: List[BaseAgent], message: Message
) -> bool:
if "all" in message.receiver:
# If receiver is all, then add the message to all agents
for agent in agents:
agent.add_message_to_memory([message])
return True
else:
# If receiver is not all, then add the message to the specified agents
receiver_set = message.receiver
for agent in agents:
if agent.name in receiver_set:
agent.add_message_to_memory([message])
receiver_set.remove(agent.name)
if len(receiver_set) > 0:
missing_receiver = ", ".join(list(receiver_set))
raise ValueError(
"Receiver {} not found. Message discarded".format(missing_receiver)
)
return True
|