Skip to content

Eric-he-cn/course-pilot

Repository files navigation

CoursePilot-面向大学课程学习场景的智能体学习平台

Python FastAPI Streamlit RAG Embedding MCP License

CoursePilot 是一个面向大学课程学习场景的智能体学习平台,目标是把“教材接入 -> 概念讲解 -> 练习生成 -> 考试评卷 -> 错题记忆”做成一条可追踪、可评测的学习闭环。

通用 Chat 应用通常擅长回答单个问题,但很难稳定处理课程材料引用、多轮学习状态、练习/考试、工具权限和质量回归。CoursePilot 将多 Agent 编排、教材级 RAG、长短期记忆、MCP 工具治理组合在一起,让系统既能围绕教材回答问题,也能持续跟踪学习过程,并用可追溯证据约束回答质量。

CoursePilot UI

Core Capabilities

  • 多 Agent 协作:Router 理解意图并制定计划,Tutor 负责讲解,QuizMaster 负责出题,Grader 负责评分与反馈。
  • 教材 RAG:支持课程材料解析、切块、向量索引、BM25 + dense 混合检索,并在回答中展示来源页码和证据片段。
  • 学习闭环:覆盖 learn / practice / exam 三种模式,从讲解到练习、考试、评分、记录沉淀在同一系统内完成。
  • 记忆系统:服务端维护会话状态、用户画像和情景记忆,用于多轮学习连续性和个性化反馈。
  • 工具系统:通过 MCP 与 ToolHub 管理搜索、计算、文件写入等工具,统一做权限、预算、去重和失败处理。
  • 评测系统:内置 benchmark、LLM-as-a-Judge 和 review 队列,用客观指标与主观评分跟踪系统质量。

Quick Start

1. 安装依赖

推荐使用 Python 3.11

py -3.11 -m pip install -r requirements.txt

2. 配置 .env

在项目根目录创建 .env,最少需要:

OPENAI_API_KEY=...
OPENAI_BASE_URL=https://api.openai.com/v1
DEFAULT_MODEL=gpt-4o-mini

如果需要 judge 模型、运行治理参数或完整环境变量说明,请看 配置总览

3. 启动系统

# 终端 1:后端
py -3.11 -m backend.api

# 终端 2:前端
streamlit run frontend/streamlit_app.py

默认后端端口 8000,前端端口 8501

4. 上传教材并构建索引

推荐直接通过前端完成:

  1. 创建或选择课程
  2. 上传教材文件
  3. 点击“构建索引”
  4. 开始学习 / 练习 / 考试

如果你需要批量重建所有课程索引:

py -3.11 scripts/rebuild_indexes.py

How It Works

对外,CoursePilot 提供三种学习模式:

  • learn:解释概念、回答问题、引用教材
  • practice:生成练习题并评分讲评
  • exam:生成试卷并完成一次性评卷

对内,系统不会直接把模式映射到单一函数,而是先由 Router 生成计划,再进入受控模板执行。当前核心执行思路是:

  • workflow_template:决定本轮是“只讲解”、“只出题”还是“出题后评分”等路径
  • ExecutionRuntime + TaskGraph:把计划编译成可观测、可回退的执行步骤
  • RAGService + MemoryService:负责教材证据和历史记忆预取
  • ToolHub:统一工具门控与审计

更详细的执行链路见 架构文档

Repository Layout

course-pilot/
├─ backend/                  API 与 SSE
├─ frontend/                 Streamlit UI
├─ core/                     Agent 编排与运行时
│  ├─ agents/                Router / Tutor / QuizMaster / Grader
│  ├─ orchestration/         Runner、Plan、SessionState
│  ├─ runtime/               ExecutionRuntime、TaskGraph
│  ├─ services/              RAG、Memory、ToolHub
│  ├─ llm/                   LLM client 与工具轮
│  └─ metrics/               运行指标
├─ rag/                      解析、切块、索引、检索
├─ memory/                   长期记忆与用户画像
├─ mcp_tools/                MCP 与工具实现
├─ scripts/                  索引、评测、worker 脚本
│  ├─ eval/                  bench / judge / review
│  ├─ perf/                  性能脚本
│  └─ workers/               后台 worker
├─ benchmarks/               benchmark 与 gold 数据
│  └─ archive/               历史数据集
├─ tests/                    回归测试
├─ docs/                     项目文档
│  ├─ guides/                指南文档
│  ├─ examples/              示例
│  ├─ reviews/               审阅报告
│  ├─ internal/              内部资料
│  └─ archive/               历史归档
├─ data/                     本地运行产物
└─ artifacts/                本地实验材料

Read More

README 文档只是一个快速启动和项目概览,更多细节和设计思路请看这些文档:

FAQ

它和普通 RAG 问答项目有什么不同?

重点不只是“把文档喂给模型”,而是把教材证据、练习/考试链路、状态管理、工具治理和动态评测放进同一个工程体系里。

可以只把它当教材问答系统来用吗?

可以。你完全可以只用 learn 模式;练习、考试和评测链路是增量能力,不强制依赖。

License

MIT

About

This is an LLM agent for college students to study courses by themselves. Upload your textbook and enjoy the learning experience now!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages