#!/usr/bin/env python3 """ Main entry point for the agent server. This script creates an agent implementation and starts the RPC server to handle requests from the evaluator. """ import argparse import logging import sys from agent import RLAgent from agent_server import start_server def setup_logging(level=logging.INFO): """Configure logging.""" logging.basicConfig( level=level, format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", handlers=[logging.StreamHandler(sys.stdout)], ) def main(): """Main entry point.""" parser = argparse.ArgumentParser(description="Start the agent server") parser.add_argument( "--host", type=str, default="0.0.0.0", help="Host to bind the server to" ) parser.add_argument( "--port", type=int, default=8000, help="Port to bind the server to" ) parser.add_argument( "--log-level", type=str, default="INFO", choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"], help="Logging level", ) args = parser.parse_args() # Setup logging log_level = getattr(logging, args.log_level) setup_logging(log_level) logger = logging.getLogger(__name__) logger.info(f"Starting agent server on {args.host}:{args.port}") # Create the RLAgent agent = RLAgent() # Start the server try: start_server(agent, args.host, args.port) except KeyboardInterrupt: logger.info("Server stopped by user") except Exception as e: logger.error(f"Error starting server: {e}", exc_info=True) sys.exit(1) if __name__ == "__main__": main()