|
|
|
""" |
|
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() |
|
|
|
|