File size: 1,825 Bytes
a522797
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
def get_semester_selection_prompt(profile_str: str, courses_str: str, num_courses: int = 4) -> str:
    """Generate optimized prompt for LLM course selection"""
    
    return f"""You are an expert academic advisor for computer science students.



TASK: Select exactly {num_courses} courses for the upcoming semester.



STUDENT PROFILE:

{profile_str}



AVAILABLE COURSES:

{courses_str}



SELECTION CRITERIA:

1. Prerequisites must be satisfied (from completed courses list)

2. Prioritize courses that align with student's career goals

3. Balance workload - mix harder and easier courses

4. Consider logical progression (foundations before advanced)

5. Focus on CS, DS, IS courses for AI/ML career path



OUTPUT FORMAT (must be valid JSON):

{{

    "courses": ["COURSE_ID_1", "COURSE_ID_2", "COURSE_ID_3", "COURSE_ID_4"],

    "reasoning": "One sentence explaining the selection"

}}



Return ONLY the JSON object, no other text."""

def get_plan_optimization_prompt(student_profile: dict, available_courses: list, semester_num: int) -> str:
    """Generate prompt for full degree plan optimization"""
    
    return f"""Create semester {semester_num} schedule for an AI/ML-focused student.



COMPLETED: {', '.join(student_profile.get('completed_courses', []))}

GOAL: {student_profile.get('career_goals', 'AI Engineer')}

INTERESTS: {', '.join(student_profile.get('interests', []))}



MUST FOLLOW RULES:

- Take foundations first: CS1800, CS2500, CS2510, CS2800, CS3000, CS3500

- Year 1: Focus on 1000-2000 level courses

- Year 2: Add 3000 level courses  

- Year 3-4: Include 4000+ level courses

- Avoid labs, recitations, seminars (they're auto-enrolled)



AVAILABLE COURSES:

{chr(10).join(available_courses[:20])}



OUTPUT: JSON with "courses" array (4 course IDs) and "reasoning" string."""