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.

example_websurfer.py 2.3 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. """This example demonstrates a human user interacting with a web surfer agent
  2. to navigate the web through an embedded incognito browser.
  3. The human user and the web surfer agent takes turn to write input or perform actions,
  4. orchestrated by an round-robin orchestrator agent."""
  5. import asyncio
  6. import logging
  7. import os
  8. from autogen_core.application import SingleThreadedAgentRuntime
  9. from autogen_core.application.logging import EVENT_LOGGER_NAME
  10. from autogen_core.base import AgentId, AgentProxy
  11. from autogen_core.components import DefaultSubscription
  12. from team_one.agents.multimodal_web_surfer import MultimodalWebSurfer
  13. from team_one.agents.orchestrator import RoundRobinOrchestrator
  14. from team_one.agents.user_proxy import UserProxy
  15. from team_one.messages import RequestReplyMessage
  16. from team_one.utils import LogHandler, create_completion_client_from_env
  17. # NOTE: Don't forget to 'playwright install --with-deps chromium'
  18. async def main() -> None:
  19. # Create the runtime.
  20. runtime = SingleThreadedAgentRuntime()
  21. # Create an appropriate client
  22. client = create_completion_client_from_env(model="gpt-4o")
  23. # Register agents.
  24. await runtime.register("WebSurfer", lambda: MultimodalWebSurfer(), lambda: [DefaultSubscription()])
  25. web_surfer = AgentProxy(AgentId("WebSurfer", "default"), runtime)
  26. await runtime.register("UserProxy", lambda: UserProxy(), lambda: [DefaultSubscription()])
  27. user_proxy = AgentProxy(AgentId("UserProxy", "default"), runtime)
  28. await runtime.register(
  29. "orchestrator", lambda: RoundRobinOrchestrator([web_surfer, user_proxy]), lambda: [DefaultSubscription()]
  30. )
  31. runtime.start()
  32. actual_surfer = await runtime.try_get_underlying_agent_instance(web_surfer.id, type=MultimodalWebSurfer)
  33. await actual_surfer.init(
  34. model_client=client,
  35. downloads_folder=os.getcwd(),
  36. start_page="https://www.bing.com",
  37. browser_channel="chromium",
  38. )
  39. await runtime.send_message(RequestReplyMessage(), user_proxy.id)
  40. await runtime.stop_when_idle()
  41. if __name__ == "__main__":
  42. logger = logging.getLogger(EVENT_LOGGER_NAME)
  43. logger.setLevel(logging.INFO)
  44. log_handler = LogHandler()
  45. logger.handlers = [log_handler]
  46. asyncio.run(main())