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.

test_usage.py 1.7 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import asyncio
  2. import os
  3. from agnext.application import SingleThreadedAgentRuntime
  4. from agnext.components import DefaultTopicId, Image, RoutedAgent, message_handler
  5. from agnext.core import MessageContext
  6. from app import build_app
  7. from dotenv import load_dotenv
  8. from messages import ArticleCreated, AuditorAlert, AuditText, GraphicDesignCreated
  9. class Printer(RoutedAgent):
  10. def __init__(
  11. self,
  12. ) -> None:
  13. super().__init__("")
  14. @message_handler
  15. async def handle_graphic_design(self, message: GraphicDesignCreated, ctx: MessageContext) -> None:
  16. image = Image.from_uri(message.imageUri)
  17. # Save image to random name in current directory
  18. image.image.save(os.path.join(os.getcwd(), f"{message.UserId}.png"))
  19. print(f"Received GraphicDesignCreated: user {message.UserId}, saved to {message.UserId}.png")
  20. @message_handler
  21. async def handle_auditor_alert(self, message: AuditorAlert, ctx: MessageContext) -> None:
  22. print(f"Received AuditorAlert: {message.auditorAlertMessage} for user {message.UserId}")
  23. async def main() -> None:
  24. runtime = SingleThreadedAgentRuntime()
  25. await build_app(runtime)
  26. await runtime.register("Printer", lambda: Printer())
  27. runtime.start()
  28. await runtime.publish_message(
  29. AuditText(text="Buy my product for a MASSIVE 50% discount.", UserId="user-1"), topic_id=DefaultTopicId()
  30. )
  31. await runtime.publish_message(
  32. ArticleCreated(article="The best article ever written about trees and rocks", UserId="user-2"),
  33. topic_id=DefaultTopicId(),
  34. )
  35. await runtime.stop_when_idle()
  36. if __name__ == "__main__":
  37. load_dotenv()
  38. asyncio.run(main())