基于大语言模型(LLM)与检索增强生成(RAG)技术的 Python 智能辅导系统,为学习者提供个性化、交互式的编程学习体验。
Python 智能学伴 是一款 AI 驱动的个性化 Python 学习伴侣系统。系统以通义千问(Qwen)大语言模型为核心引擎,结合混合 RAG 检索管线与多智能体(Multi-Agent)架构,构建了一个覆盖 智能问答、练习测评、学情诊断、学习规划 四大场景的完整学习闭环。
系统采用 Streamlit 构建交互式前端界面,LangChain 作为大模型应用开发框架,ChromaDB 作为向量数据库,支持稠密向量检索与 BM25 稀疏检索的混合召回,并通过 RRF 融合排序与可选的 LLM 重排序实现高质量知识检索。
基于混合 RAG(Hybrid RAG)技术的 Python 智能问答系统。采用 稠密向量检索(Dense)+ BM25 稀疏检索(Sparse)+ RRF 融合排序 + 可选 LLM 重排序 的多级检索策略,从本地 Python 知识库中精准召回相关知识点,结合大语言模型生成准确、可溯源的回答。支持多轮对话,具备上下文理解能力。
由 LLM 根据学生当前学习进度与薄弱点智能生成个性化练习题,覆盖选择、填空、代码阅读等多种题型。系统支持自动批改与智能评分,提供详细的解题思路与知识点讲解,并自动记录答题情况以更新学情画像。
基于学习历史的 AI 学情诊断模块。系统自动收集并分析学生的问答记录、练习成绩、知识掌握情况等多维数据,运用 LLM 进行综合能力评估,生成可视化的学情报告,精准识别学习薄弱点与优势领域。
根据学情诊断结果与学生个人目标,由 AI 规划代理生成个性化的学习路径与阶段性计划。支持动态调整,随着学习进度与诊断结果的更新,自动优化后续学习内容的优先级与难度安排。
本项目采用 五层架构设计,各层职责清晰、耦合度低,便于扩展与维护:
| 层级 | 模块 | 职责说明 |
|---|---|---|
| UI 层 | Streamlit 四页应用 | 提供智能问答、练习测评、学情诊断、学习规划四个交互页面 |
| 编排层 | Orchestrator | 基于 LLM 的意图分类与路由编排,将用户请求分发至对应 Agent |
| Agent 层 | 四大智能体 | TutorAgent(问答)、PracticeAgent(练习)、DiagnosticAgent(诊断)、PlannerAgent(规划) |
| Skill 层 | 技能工具库 | retrieval_skill、exercise_skill、evaluation_skill、diagnosis_skill、planning_skill |
| 基础层 | 基础设施 | 混合 RAG 检索管线、记忆系统、LLM 客户端、配置中心 |
├── app.py # Streamlit 主入口
├── app/ # 页面模块
│ ├── chat_page.py # 智能问答页
│ ├── practice_page.py # 练习测评页
│ ├── profile_page.py # 学情诊断页
│ └── plan_page.py # 学习规划页
├── agents/ # 智能体
│ ├── orchestrator.py # 意图路由编排器
│ ├── tutor_agent.py # 问答代理
│ ├── practice_agent.py # 练习代理
│ ├── diagnostic_agent.py # 诊断代理
│ └── planner_agent.py # 规划代理
├── skills/ # 技能工具库
│ ├── retrieval_skill.py # 检索技能
│ ├── exercise_skill.py # 出题技能
│ ├── evaluation_skill.py # 评分技能
│ ├── diagnosis_skill.py # 诊断技能
│ └── planning_skill.py # 规划技能
├── rag/ # RAG 检索管线
│ ├── retriever.py # 混合检索 (Dense+Sparse+RRF+Rerank)
│ ├── vector_store.py # ChromaDB 向量存储
│ ├── sparse_store.py # BM25 稀疏检索
│ ├── document_loader.py # 文档加载器
│ └── ingest.py # 知识库自动索引
├── memory/ # 记忆系统
│ ├── session_memory.py # 会话滑动窗口记忆
│ ├── student_record.py # 学习记录持久化
│ └── profile_builder.py # 学情画像构建
├── core/ # 核心配置
│ ├── config.py # 统一配置管理
│ ├── llm_client.py # LLM 客户端封装
│ ├── prompt_templates.py # 提示词模板
│ └── logger.py # 日志系统
├── knowledge_base/ # Python 知识库 (9篇 Markdown)
│ ├── 01_variables_types.md
│ ├── 02_control_flow.md
│ ├── 03_functions.md
│ ├── 04_data_structures.md
│ ├── 05_oop.md
│ ├── 06_exceptions_files.md
│ ├── 07_modules.md
│ ├── 08_strings.md
│ └── 09_generators_builtins.md
├── data/ # 运行时数据
│ ├── chroma_db/ # ChromaDB 向量数据库
│ ├── logs/ # 应用日志
│ ├── bm25_index.json # BM25 索引文件
│ ├── student_profile.json # 学生画像
│ └── student_record.json # 学习记录
├── .env # 环境变量配置
├── .env.example # 环境变量模板
├── requirements.txt # Python 依赖
└── README.md # 项目说明
git clone https://github.com/yiziheng/python-tutor.git
cd python-tutorpython -m venv .venv
source .venv/bin/activate # Linux / macOS
# .venv\Scripts\activate # Windowspip install -r requirements.txtcp .env.example .env编辑 .env 文件,填入你的 DashScope API Key:
DASHSCOPE_API_KEY=your-api-key-here💡 API Key 获取地址:https://dashscope.aliyuncs.com/
streamlit run app.py应用将自动在浏览器中打开(默认地址:http://localhost:8501)。
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
DASHSCOPE_API_KEY |
✅ | - | DashScope API 密钥,用于调用通义千问模型 |
LLM_MODEL |
❌ | qwen-plus |
LLM 模型选择:qwen-turbo / qwen-plus / qwen-max |
EMBEDDING_MODEL |
❌ | text-embedding-v1 |
Embedding 模型,用于向量检索 |
RERANK_ENABLED |
❌ | false |
RAG 重排序开关:true 更准确但更慢,false 更快 |
| 类别 | 技术选型 |
|---|---|
| 大语言模型 | Qwen(通义千问)via DashScope API |
| 应用框架 | LangChain + Streamlit |
| 向量数据库 | ChromaDB |
| 稀疏检索 | BM25(rank-bm25 + jieba 中文分词) |
| 数据持久化 | JSON 文件存储 |
| 可视化 | Plotly |
本系统内置 9 大 Python 核心知识模块,覆盖 Python 编程入门到进阶的关键内容:
| 序号 | 知识模块 | 文件名 |
|---|---|---|
| 01 | 变量与数据类型 | 01_variables_types.md |
| 02 | 控制流程 | 02_control_flow.md |
| 03 | 函数 | 03_functions.md |
| 04 | 数据结构 | 04_data_structures.md |
| 05 | 面向对象编程 | 05_oop.md |
| 06 | 异常处理与文件操作 | 06_exceptions_files.md |
| 07 | 模块与包 | 07_modules.md |
| 08 | 字符串处理 | 08_strings.md |
| 09 | 生成器与内置函数 | 09_generators_builtins.md |
本项目采用 MIT License 开源协议。
Made with ❤️ for Python learners.