File size: 2,453 Bytes
c5292d8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
"""Main entry point for LLM Code Deployment System."""
import argparse
import asyncio
import sys


def main():
    """Main CLI entry point."""
    parser = argparse.ArgumentParser(
        description="LLM Code Deployment System",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog="""
Examples:
  # Start student API
  python main.py student-api
  
  # Start instructor API
  python main.py instructor-api
  
  # Run round 1 task generation
  python main.py round1
  
  # Run evaluation
  python main.py evaluate
  
  # Run round 2 task generation
  python main.py round2
  
  # Initialize database
  python main.py init-db
        """,
    )

    parser.add_argument(
        "command",
        choices=[
            "student-api",
            "instructor-api",
            "round1",
            "round2",
            "evaluate",
            "init-db",
        ],
        help="Command to run",
    )

    args = parser.parse_args()

    if args.command == "student-api":
        from student.api import app
        import uvicorn
        from shared.config import settings

        settings.ensure_directories()
        print(f"Starting Student API on port {settings.student_api_port}...")
        uvicorn.run(app, host="0.0.0.0", port=settings.student_api_port)

    elif args.command == "instructor-api":
        from instructor.api import app
        import uvicorn
        from shared.config import settings

        settings.ensure_directories()
        print(f"Starting Instructor API on port {settings.instructor_api_port}...")
        uvicorn.run(app, host="0.0.0.0", port=settings.instructor_api_port)

    elif args.command == "round1":
        from instructor.round1 import main as round1_main

        print("Running Round 1 task generation...")
        asyncio.run(round1_main())

    elif args.command == "round2":
        from instructor.round2 import main as round2_main

        print("Running Round 2 task generation...")
        asyncio.run(round2_main())

    elif args.command == "evaluate":
        from instructor.evaluate import main as evaluate_main

        print("Running evaluation...")
        asyncio.run(evaluate_main())

    elif args.command == "init-db":
        from instructor.database import Database

        print("Initializing database...")
        db = Database()
        db.create_tables()
        print("Database initialized successfully!")


if __name__ == "__main__":
    main()