|
| 1 | +import asyncio |
| 2 | +import logging |
| 3 | + |
| 4 | +from agnext.application import SingleThreadedAgentRuntime |
| 5 | +from agnext.application.logging import EVENT_LOGGER_NAME |
| 6 | +from team_one.agents.multimodal_web_surfer import MultimodalWebSurfer |
| 7 | +from team_one.agents.orchestrator import RoundRobinOrchestrator |
| 8 | +from team_one.agents.user_proxy import UserProxy |
| 9 | +from team_one.messages import RequestReplyMessage |
| 10 | +from team_one.utils import LogHandler, create_completion_client_from_env |
| 11 | + |
| 12 | +# NOTE: Don't forget to 'playwright install --with-deps chromium' |
| 13 | + |
| 14 | + |
| 15 | +async def main() -> None: |
| 16 | + # Create the runtime. |
| 17 | + runtime = SingleThreadedAgentRuntime() |
| 18 | + |
| 19 | + # Create an appropriate client |
| 20 | + client = create_completion_client_from_env() |
| 21 | + |
| 22 | + # Register agents. |
| 23 | + web_surfer = runtime.register_and_get_proxy( |
| 24 | + "WebSurfer", |
| 25 | + lambda: MultimodalWebSurfer(), |
| 26 | + ) |
| 27 | + |
| 28 | + user_proxy = runtime.register_and_get_proxy( |
| 29 | + "UserProxy", |
| 30 | + lambda: UserProxy(), |
| 31 | + ) |
| 32 | + |
| 33 | + runtime.register("orchestrator", lambda: RoundRobinOrchestrator([web_surfer, user_proxy])) |
| 34 | + |
| 35 | + run_context = runtime.start() |
| 36 | + |
| 37 | + actual_surfer = runtime._get_agent(web_surfer.id) # type: ignore |
| 38 | + assert isinstance(actual_surfer, MultimodalWebSurfer) |
| 39 | + await actual_surfer.init(model_client=client, browser_channel="chromium") |
| 40 | + |
| 41 | + await runtime.send_message(RequestReplyMessage(), user_proxy.id) |
| 42 | + await run_context.stop_when_idle() |
| 43 | + |
| 44 | + |
| 45 | +if __name__ == "__main__": |
| 46 | + logger = logging.getLogger(EVENT_LOGGER_NAME) |
| 47 | + logger.setLevel(logging.INFO) |
| 48 | + log_handler = LogHandler() |
| 49 | + logger.handlers = [log_handler] |
| 50 | + asyncio.run(main()) |
0 commit comments