| |
| """ |
| 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() |
|
|
| |
| 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}") |
|
|
| |
| agent = RLAgent() |
|
|
| |
| 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() |
|
|