You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

__init__.py 1.3 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from dataclasses import dataclass
  2. from typing import Any
  3. from agnext.components import TypeRoutedAgent, message_handler
  4. from agnext.core import BaseAgent
  5. from agnext.core import MessageContext
  6. @dataclass
  7. class MessageType:
  8. ...
  9. @dataclass
  10. class CascadingMessageType:
  11. round: int
  12. class LoopbackAgent(TypeRoutedAgent):
  13. def __init__(self) -> None:
  14. super().__init__("A loop back agent.")
  15. self.num_calls = 0
  16. @message_handler
  17. async def on_new_message(self, message: MessageType, ctx: MessageContext) -> MessageType:
  18. self.num_calls += 1
  19. return message
  20. class CascadingAgent(TypeRoutedAgent):
  21. def __init__(self, max_rounds: int) -> None:
  22. super().__init__("A cascading agent.")
  23. self.num_calls = 0
  24. self.max_rounds = max_rounds
  25. @message_handler
  26. async def on_new_message(self, message: CascadingMessageType, ctx: MessageContext) -> None:
  27. self.num_calls += 1
  28. if message.round == self.max_rounds:
  29. return
  30. await self.publish_message(CascadingMessageType(round=message.round + 1))
  31. class NoopAgent(BaseAgent):
  32. def __init__(self) -> None:
  33. super().__init__("A no op agent", [])
  34. async def on_message(self, message: Any, ctx: MessageContext) -> Any:
  35. raise NotImplementedError