Spaces:
Sleeping
Sleeping
| 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.""" |