文档适用:技术博主专栏、B 站配套文稿、内部实训讲义
技术栈:Python + LangGraph 多智能体 + LangChain RAG + FastAPI + 简易 Web 前端
实现目标:学生学习画像识别、薄弱知识点诊断、自适应学习路线规划、AI 智能助教答疑
目录
项目概述与核心能力
系统架构设计
开发环境准备
项目代码实现(全模块源码)
项目启动与测试流程
运行效果演示
功能拓展与私有化改造方案
配套绘图提示词(教程配图专用)
1. 项目概述与核心能力
传统在线教育系统固定课件、统一习题,无法适配每个学生学习短板。
基于大模型 Agent+RAG 构建个性化学习系统,依靠智能体分工实现自适应教育。
系统核心功能
✅ 学生学习画像持久管理,记录知识点掌握程度、错题、学习历史
✅ 诊断 Agent:自动识别学生知识薄弱点
✅ RAG 知识库:教材、知识点本地向量检索,减少大模型幻觉
✅ 路径规划 Agent:生成专属个性化学习方案
✅ 导学答疑 Agent:知识点讲解、智能出题、错题解析
✅ HTTP 接口服务,支持 Web 前端对接
✅ 模块化架构,可拓展题库、多模态识图做题、学习报告
智能体分工
诊断 Agent:分析学生提问 / 答题记录,定位薄弱知识点
知识库检索模块:RAG 获取教学素材
学习规划 Agent:制定阶梯式学习路线
导学 Agent:对话答疑、习题生成
2. 系统架构设计
学生Web前端 ↔ FastAPI接口服务 ↔ LangGraph教育智能Agent集群 ↙️ ↘️ 学生学习画像数据库 教材习题RAG向量库🎨 架构图生成提示词(直接复制 AI 绘图,手绘风格)
手绘简约线稿,Agent智能教育个性化学习系统架构图,白底黑色线条,思维导图布局,模块之间使用箭头连接。模块:Web前端、FastAPI网关、多子Agent集群、学生学习画像库、RAG向量知识库。无阴影、无多余装饰,适合技术教程配图🎨 Agent 工作流程图提示词
横向手绘流程图,教育多Agent流转流程,节点依次:用户输入 → 诊断Agent → RAG知识库检索 → 学习路径规划Agent → AI导学答疑 → 返回结果,箭头串联,极简手绘白底3. 开发环境准备
3.1 依赖安装
pipinstalllangchain langgraph langchain-openai chromadb fastapi uvicorn pydantic python-multipart3.2 项目目录结构
edu-agent-system/ ├── config.py # 大模型全局配置 ├── student_profile.py # 学生画像管理模块 ├── edu_rag.py # RAG教学知识库 ├── edu_agent.py # LangGraph智能体核心 ├── main.py # FastAPI后端服务 └── index.html # 前端交互页面4. 完整代码实现
4.1 配置文件config.py
# config.pyimportos# LLM配置,兼容OpenAI、通义千问、DeepSeek等接口LLM_API_KEY=os.getenv("LLM_API_KEY","填写你的密钥")LLM_BASE_URL="https://api.openai.com/v1"LLM_MODEL="gpt-4o-mini"# 向量数据库存储路径VECTOR_DB_PATH="./edu_chroma_db"4.2 学生画像模块student_profile.py
维护学生知识点掌握度、错题、学习记录
# student_profile.pyfrompydanticimportBaseModelfromtypingimportDict,ListclassStudentProfile(BaseModel):student_id:strname:str# 知识点名称:掌握程度 0~1knowledge_mastery:Dict[str,float]wrong_questions:List[str]learning_history:List[str]classProfileManager:def__init__(self):self.profiles={}defcreate_profile(self,sid:str,name:str)->StudentProfile:profile=StudentProfile(student_id=sid,name=name,knowledge_mastery={},wrong_questions=[],learning_history=[])self.profiles[sid]=profilereturnprofiledefupdate_knowledge(self,sid:str,knowledge:str,score:float):"""更新知识点掌握程度,限制0~1区间"""profile=self.profiles[sid]profile.knowledge_mastery[knowledge]=max(0.0,min(1.0,score))defadd_wrong_question(self,sid:str,question:str):"""记录错题"""self.profiles[sid].wrong_questions.append(question)# 全局画像管理器profile_manager=ProfileManager()4.3 RAG 教学知识库edu_rag.py
将教材文本向量化,实现知识点检索,为 Agent 提供参考资料
# edu_rag.pyfromlangchain_openaiimportOpenAIEmbeddingsfromlangchain_chromaimportChromafromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromconfigimportVECTOR_DB_PATH,LLM_API_KEY,LLM_BASE_URL embedding=OpenAIEmbeddings(api_key=LLM_API_KEY,base_url=LLM_BASE_URL)text_splitter=RecursiveCharacterTextSplitter(chunk_size=400,chunk_overlap=60)# 初始化向量数据库vector_store=Chroma(persist_directory=VECTOR_DB_PATH,embedding_function=embedding)defload_edu_text(text:str):"""导入教材知识点文本进入向量库"""chunks=text_splitter.split_text(text)vector_store.add_texts(chunks)defsearch_knowledge(query:str,top_k=3):"""根据问题检索相关教学资料"""docs=vector_store.similarity_search(query,k=top_k)return"\n".join([doc.page_contentfordocindocs])if__name__=="__main__":# 示例教学素材,可替换为各科教材文本textbook=""" 一元一次方程:含有一个未知数,未知数次数为1的等式。 解题步骤:移项、合并同类项、系数化为1。 易错点:移项必须变号,很多学生容易忽略符号。 """load_edu_text(textbook)print("知识库初始化完成!")4.4 LangGraph 教育智能体核心edu_agent.py
多智能体串行工作流,实现诊断、检索、规划、答疑完整链路
# edu_agent.pyfromlanggraph.graphimportStateGraph,START,ENDfromlangchain_openaiimportChatOpenAIfromtypingimportTypedDict,Annotatedimportoperatorfromconfigimport*fromedu_ragimportsearch_knowledgefromstudent_profileimportprofile_manager llm=ChatOpenAI(api_key=LLM_API_KEY,base_url=LLM_BASE_URL,model=LLM_MODEL)# Agent全局状态容器classAgentState(TypedDict):student_id:struser_input:strweak_knowledge:Annotated[list,operator.add]rag_context:strlearning_plan:stranswer:str# 节点1:薄弱知识点诊断Agentdefdiagnostic_agent(state:AgentState):prompt=f""" 你是教育诊断专家,根据学生输入内容,识别学生薄弱知识点。 只输出知识点名称,一行一个,不要多余描述。 学生输入:{state['user_input']}"""res=llm.invoke(prompt)weak_points=[x.strip()forxinres.content.split("\n")ifx.strip()]return{"weak_knowledge":weak_points}# 节点2:RAG知识点检索defretrieve_knowledge(state:AgentState):query=" ".join(state["weak_knowledge"])context=search_knowledge(query)return{"rag_context":context}# 节点3:个性化学习路径规划Agentdefplan_agent(state:AgentState):prompt=f""" 根据学生薄弱知识点:{state['weak_knowledge']}参考教学资料:{state['rag_context']}生成简短、可执行的个性化学习路线,分步骤描述。 """plan=llm.invoke(prompt).contentreturn{"learning_plan":plan}# 节点4:AI导学答疑Agentdeftutor_agent(state:AgentState):profile=profile_manager.profiles.get(state["student_id"])prompt=f""" 【学生学习档案】{profile.model_dump_json()}薄弱知识点:{state['weak_knowledge']}教学参考资料:{state['rag_context']}个性化学习方案:{state['learning_plan']}学生提问:{state['user_input']}你的身份:AI学科教师。语言通俗易懂,讲解知识点,适当布置练习题巩固。 """reply=llm.invoke(prompt).contentreturn{"answer":reply}# 构建智能体流程图defbuild_edu_agent():graph=StateGraph(AgentState)graph.add_node("diagnostic",diagnostic_agent)graph.add_node("retrieve",retrieve_knowledge)graph.add_node("plan",plan_agent)graph.add_node("tutor",tutor_agent)# 流转逻辑graph.add_edge(START,"diagnostic")graph.add_edge("diagnostic","retrieve")graph.add_edge("retrieve","plan")graph.add_edge("plan","tutor")graph.add_edge("tutor",END)returngraph.compile()edu_graph=build_edu_agent()4.5 FastAPI 后端服务main.py
提供 HTTP 接口,连接前端与智能体系统
# main.pyfromfastapiimportFastAPIfrompydanticimportBaseModelfromedu_agentimportedu_graphfromstudent_profileimportprofile_manager app=FastAPI(title="Agent个性化学习系统接口")classChatRequest(BaseModel):student_id:strstudent_name:strmessage:str@app.post("/api/edu_chat")asyncdefedu_chat(req:ChatRequest):# 自动创建学生档案ifreq.student_idnotinprofile_manager.profiles:profile_manager.create_profile(req.student_id,req.student_name)init_state={"student_id":req.student_id,"user_input":req.message,"weak_knowledge":[],"rag_context":"","learning_plan":"","answer":""}result=edu_graph.invoke(init_state)return{"reply":result["answer"],"weak_knowledge":result["weak_knowledge"],"personal_plan":result["learning_plan"]}if__name__=="__main__":importuvicorn uvicorn.run("main:app",host="0.0.0.0",port=8000,reload=True)4.6 前端页面index.html
浏览器直接打开,无需额外部署
<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><title>Agent个性化学习助教</title><style>.box{width:700px;margin:30px auto;}textarea{width:100%;height:100px;padding:8px;margin:8px 0;}input{width:100%;padding:8px;margin:8px 0;box-sizing:border-box;}button{padding:8px 20px;background:#2563eb;color:#fff;border:none;border-radius:6px;font-size:15px}#result{margin-top:20px;padding:16px;border:1px solid #ddd;border-radius:8px;white-space:pre-wrap;line-height:1.6;}</style></head><body><divclass="box"><h2>Agent智能个性化学习系统</h2><inputplaceholder="学生ID"id="sid"value="stu001"><inputplaceholder="学生姓名"id="sname"value="小明"><textareaid="msg"placeholder="输入你的学习问题,例如:一元一次方程移项总是符号出错"></textarea><buttononclick="sendChat()">发起学习咨询</button><divid="result"></div></div><script>asyncfunctionsendChat(){constsid=document.getElementById("sid").value;constsname=document.getElementById("sname").value;constmsg=document.getElementById("msg").value;constresDiv=document.getElementById("result");resDiv.innerText="AI智能体思考中,请稍候...";constresp=awaitfetch("http://127.0.0.1:8000/api/edu_chat",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({student_id:sid,student_name:sname,message:msg})})constdata=awaitresp.json();resDiv.innerText=`【薄弱知识点】${data.weak_knowledge.join("、")}\n【个性化学习方案】\n${data.personal_plan}\n\n【AI助教回答】\n${data.reply}`}</script></body></html>5. 项目启动与测试流程
配置密钥
修改config.py中的LLM_API_KEY,如使用国内大模型同步修改LLM_BASE_URL初始化知识库
python edu_rag.py执行后自动创建向量数据库文件夹
- 启动后端服务
python main.py服务地址:http://127.0.0.1:8000
打开前端
直接双击index.html文件在浏览器打开测试输入示例
一元一次方程移项经常符号搞错,做题正确率很低
6. 运行效果说明
诊断 Agent 自动识别薄弱知识点:一元一次方程移项规则
RAG 检索教材知识点原文
规划 Agent 输出分阶段学习计划
导学 Agent 进行知识点讲解,并生成练习题
学生信息自动存入内存画像管理器
⚠️ 当前学生画像保存在内存,重启服务数据清空;生产环境建议接入 SQLite/MySQL 持久化。
7. 功能拓展与私有化改造方案
7.1 短期优化
使用 SQLite 持久化学生学习画像
批量导入整本教材、题库文档到 RAG 知识库
增加对话历史记录,实现上下文长记忆
增加知识点掌握度雷达图前端可视化
7.2 私有化部署改造
将 OpenAI 接口替换为开源模型:Qwen、Llama3、DeepSeek
修改edu_agent.py内 LLM 初始化代码,适配 Ollama /vLLM 本地推理
7.3 高阶拓展方向
多模态 Agent:拍照识别题目、图文讲解
自动错题本、周期性学习周报
难度自适应题库,根据掌握度动态出题
增加家长管理端、教师后台
8. 全套教程配图提示词汇总
- 系统整体架构图
手绘简约线稿,Agent智能教育个性化学习系统架构图,白底黑色线条,思维导图布局,模块之间使用箭头连接。模块:Web前端、FastAPI网关、多子Agent集群、学生学习画像库、RAG向量知识库。无阴影、无多余装饰,适合技术教程配图- LangGraph 智能体工作流图
横向手绘流程图,教育多Agent流转流程,节点依次:用户输入 → 诊断Agent → RAG知识库检索 → 学习路径规划Agent → AI导学答疑 → 返回结果,箭头串联,极简手绘白底- 系统界面效果图
手绘UI草图,AI个性化学习网页界面,聊天对话框,左侧知识点掌握情况面板,右侧AI助教对话窗口,简约黑白线稿,技术教程展示图我把全部代码打包成可直接下载的完整项目目录结构,封装为一键初始化脚手架压缩文本,包含完整项目初始配置,新建项目直接粘贴即可完成初始化,适配前文代码与部署逻辑。需要的兄弟微信扫码添加,我挨个发~