课程规划助手¶
项目背景与目标¶
终身学习时代,学习路径选择成为难题:信息过载、课程质量参差、个人目标与课程匹配度低。学习者常陷入"收藏即学会"的困境,缺乏系统规划。课程规划助手通过评估学习者能力与目标,生成个性化学习路径,推荐优质课程资源,并动态调整计划,提升学习效率与完成率。
本项目目标是构建一个课程规划 Agent,输入学习目标(如转行数据分析师、备考 PMP、学英语),输出能力评估、阶段目标、课程组合、时间安排、里程碑节点。
需求分析¶
核心能力: 1. 能力评估:诊断学习者当前水平(知识/技能/经验) 2. 目标拆解:将大目标拆解为可量化阶段目标 3. 课程匹配:从课程库推荐匹配的课程与资源 4. 路径生成:按依赖关系与时间安排生成学习路径 5. 动态调整:根据进度与反馈调整计划 6. 进度追踪:里程碑提醒、完成度统计
输入信息:学习目标、当前基础、可用时间、预算、偏好(视频/书籍/实战)。
技术选型说明¶
| 模块 | 技术方案 | 选型理由 |
|---|---|---|
| Agent 框架 | LangGraph | 规划流程多步骤 |
| 能力评估 | 测试题 + 自评模型 | 客观+主观结合 |
| 课程库 | 结构化 + 向量检索 | 多维度匹配 |
| LLM | Qwen-Max | 路径生成与建议 |
| 知识图谱 | Neo4j | 技能依赖关系 |
| 推荐算法 | 内容过滤 + 协同 | 个性化课程推荐 |
| 后端 | FastAPI | 交互式规划 |
| 数据库 | PostgreSQL | 学习计划存储 |
架构设计¶
flowchart TD
U[学习者] --> GOAL[输入目标与基础]
GOAL --> ASSESS[能力评估]
ASSESS --> TEST[在线测试]
ASSESS --> SELF[自评问卷]
TEST --> PROFILE[能力画像]
SELF --> PROFILE
PROFILE --> BREAK[目标拆解]
BREAK --> KG[(技能图谱)]
BREAK --> STAGES[阶段目标]
STAGES --> MATCH[课程匹配]
MATCH --> COURSE[(课程库)]
MATCH --> REC[推荐课程]
REC --> PATH[学习路径生成]
PATH --> TRACK[进度追踪]
TRACK --> ADJUST[动态调整]
关键模块实现思路¶
模块1:能力评估¶
能力评估采用"自评 + 测试"双轨。自评问卷快速定位大致水平(如编程:从未接触/能写简单脚本/能独立开发项目),再针对自评结果推送 5-10 道测试题精确定位。
def assess_level(goal, self_report):
rough_level = map_self_report(self_report) # L1-L5
test_questions = select_questions(goal, rough_level)
test_result = administer_test(test_questions)
final_level = bayesian_update(rough_level, test_result)
return {"level": final_level, "strengths": ..., "gaps": ...}
输出能力画像:已具备技能、待提升技能、缺失技能,对照目标岗位要求分析差距。
模块2:目标拆解与技能图谱¶
大目标(如"成为数据分析师")拆解为技能树:硬技能(SQL/Python/统计/可视化/机器学习)、软技能(沟通/业务理解)、工具(Tableau/Excel)。技能图谱建模技能间依赖关系(如"机器学习"依赖"统计学"+"Python")。
SKILL_GRAPH = {
"数据分析师": ["SQL", "Python", "统计", "可视化", "业务"],
"Python": ["基础语法", "Pandas", "数据结构"],
"机器学习": ["统计", "Python", "线性代数"]
}
按依赖拓扑排序生成学习顺序,避免"还没学统计就学机器学习"。
模块3:课程匹配与推荐¶
课程库结构化标注:课程覆盖的技能点、难度等级、时长、价格、评分、形式(视频/书籍/实战项目)。匹配时多维过滤:技能点匹配、难度适配、形式偏好、预算约束。
推荐排序综合考虑:课程评分、与目标匹配度、难度适配度、学习者偏好。协同过滤补充:"学过相同目标的人还学了什么"。
def recommend_courses(skill, level, preferences):
candidates = vector_search(skill, course_db, top_k=20)
filtered = [c for c in candidates if c.difficulty == level
and c.format in preferences.formats
and c.price <= preferences.budget]
return rank_by_score(filtered, preferences)
模块4:学习路径生成与动态调整¶
路径生成输出甘特图式计划:每周学什么课程、做什么练习、达到什么里程碑。考虑学习者可用时间(如每周 10 小时),合理排期避免过载。
def generate_plan(skills_to_learn, weekly_hours, courses):
plan = []
for skill in topological_sort(skills_to_learn):
course = match_course(skill, courses)
weeks = estimate_weeks(course, weekly_hours)
plan.append({"skill": skill, "course": course, "weeks": weeks,
"milestone": define_milestone(skill)})
return plan
动态调整:学习者反馈"这周没时间"→ 顺延计划;"这部分已会"→ 跳过并测试验证;"太难了"→ 插入前置课程。调整后重新生成后续计划。
核心流程详解¶
首次规划流程: 1. 学习者输入目标 + 基础信息 2. 能力评估:自评 → 测试 → 生成能力画像 3. 目标拆解:技能图谱 + 差距分析 4. 课程匹配:每个技能推荐 2-3 门候选课程 5. 路径生成:按依赖与时间排期 6. 输出学习计划(含里程碑与时间表)
执行与调整流程: 1. 每周推送学习任务 2. 学习者标记完成度与反馈 3. 里程碑测试验证掌握度 4. 未达标 → 插入巩固练习 5. 超前完成 → 解锁后续内容 6. 月度复盘:进度报告 + 计划微调
部署与优化建议¶
- 课程库维护:定期更新课程信息,淘汰下架课程
- 多源整合:接入 Coursera、网易云课堂、B 站等平台课程
- 社区智慧:聚合学习者评价与路径分享,丰富推荐依据
- 提醒适度:避免过度推送,关键里程碑才强提醒
- 目标灵活性:支持目标变更,路径平滑迁移
常见问题与解决方案¶
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 课程质量参差 | 来源杂 | 评分过滤 + 权威平台优先 |
| 计划脱离实际 | 时间估计乐观 | 留缓冲期 + 动态调整 |
| 学习者放弃 | 缺乏激励 | 里程碑奖励 + 社区打卡 |
| 技能图谱不全 | 新兴领域 | LLM 辅助生成 + 人工审核 |
扩展方向¶
- 职业规划联动:基于岗位需求变化动态调整技能优先级
- 学习社区:同目标学习者组队互助
- 实战项目推荐:课程配套项目强化应用
- 证书备考规划:PMP、CFA 等考证路径专项规划