达不溜记头像
EduAgent 项目全解析(一):教育场景的 AI 多智能体平台,从架构到落地封面图

EduAgent 项目全解析(一):教育场景的 AI 多智能体平台,从架构到落地

系列导读:本文是 EduAgent 项目全解析 系列的第一篇。EduAgent 是一个基于 LangGraph + FastAPI 构建的 AI 教育多智能体平台,完整实现了四个业务 Agent(智能问答 / 试卷批改 / 简历审查 / 模拟面试)。本系列共 7 篇,从工程地基讲到编排集成,全程结合真实源码讲解,适合想学习 LangGraph 多智能体工程化实践的同学。

  • 第一篇(本文):项目概览与系统架构
  • 第二篇:工程地基——配置中心、LLM 工厂与三层兜底
  • 第三篇:RAG 智能问答 Agent——混合检索、HyDE 与 Multi-Query
  • 第四篇:简历审查 Agent——PDF 解析与六维并行评分
  • 第五篇:试卷批改 Agent——三轨并行与人在环中(HitL)
  • 第六篇:模拟面试 Agent——五阶段状态机
  • 第七篇:系统集成——Orchestrator 编排与统一 SSE 入口

一、项目背景:教培机构的四类重复性业务

IT 教培机构每天面对四类重复性高、耗费师资的业务:

场景痛点
学员答疑同类问题反复出现,老师精力有限
试卷批改量大、主观题评分容易不一致
简历审查老师无暇逐份精读打分
技术面试缺少随时可陪练并给出专业反馈的「面试官」

EduAgent 将这四类业务分别封装为独立的 AI Agent,每个 Agent 融合企业私有知识、内置完整业务流程、配备工程化容错机制。

二、四大核心 Agent 一览

Agent业务能力核心技术范式
智能问答(QA)基于课程知识库实时答疑RAG 混合检索 + BGE-M3 + Reranker 精排 + SSE 流式
试卷批改(Exam)自动批改选择题 / 简答题 / 编程题三轨并行批改 + HitL 教师确认环
简历审查(Resume)六维度评分并给出改进建议PDF 解析 + 结构化抽取 + 多维度并行评分
模拟面试(Interview)五阶段全程技术面试陪练状态机对话 + Think Tool 双轨质量评估

四个 Agent 之上由 Orchestrator 编排层 统一做意图路由与多 Agent 串联 Pipeline。

三、技术栈选型

层面选型
开发语言Python 3.11(严格锁定)
Web 框架FastAPI + SSE-Starlette
Agent 框架LangChain 1.2.10 + LangGraph 1.0.9
主力大模型DeepSeek(OpenAI 兼容接口)
向量数据库Milvus
关系数据库PostgreSQL + SQLAlchemy(全异步)
嵌入模型BGE-M3(进程内,dense + sparse 双输出)
精排模型BGE-Reranker-large(进程内)
意图分类MiniLM-L6-v2(进程内)
前端Vue3 + TypeScript + Element Plus

这里有一个值得注意的工程决策:BGE-M3、BGE-Reranker、MiniLM 三个本地模型都是进程内调用,不单独起服务,在后端启动时并行预热。相比把模型部署成独立推理服务,这种方案在中小规模场景下更简单、省资源。

四、系统整体架构

┌─────────────────────────────────────────────────┐
│              前端层   Vue3 SPA (:3000)            │
└────────────────────┬────────────────────────────┘
                     │ HTTP / SSE
┌────────────────────▼────────────────────────────┐
│            API 层   FastAPI (:8000)              │
│          JWT 鉴权 / SSE 流式 / 文件上传            │
└────────────────────┬────────────────────────────┘
                     │
┌────────────────────▼────────────────────────────┐
│          编排层   Orchestrator                   │
│    规则拦截 → LLM 意图识别 → 单 Agent / Pipeline  │
└──────┬───────────┬───────────┬───────────┬──────┘
       │           │           │           │
  ┌────▼───┐  ┌───▼────┐  ┌───▼────┐  ┌───▼──────┐
  │  QA    │  │  Exam  │  │Resume  │  │Interview │  ← LangGraph StateGraph × 4
  │ Agent  │  │ Agent  │  │ Agent  │  │  Agent   │
  └────────┘  └────────┘  └────────┘  └──────────┘
                       公共层
       ├── LLM Factory(LLM 统一封装 + 结构化输出)
       ├── BGE-Reranker / MiniLM / MemorySaver
       └── MCP Server(知识库检索 + Web 搜索)
                     │
┌────────────────────▼────────────────────────────┐
│   数据层   PostgreSQL · Redis · Milvus · MinIO   │
└─────────────────────────────────────────────────┘

数据流大致是:前端(Vue3)通过 HTTP/SSE 调 FastAPI → API 层做 JWT 鉴权后交给编排层 → 编排层按意图把请求分发到某个 Agent 的 LangGraph 图 → 图内各节点读写 PostgreSQL / Milvus,调用 LLM → 结果经 SSE 流式推回前端。

五、目录结构导读(后端视角)

backend/
├── main.py                      # FastAPI 入口 & lifespan(模型预热 + DB 迁移)
├── config.py                    # pydantic-settings 配置中心
├── dependencies.py              # JWT 鉴权依赖 + AsyncSessionLocal
├── langfuse_handler.py          # Langfuse 可观测性回调
├── api/
│   └── v1/                      # 业务接口(auth/qa/exam/resume/interview/unified_chat)
├── agents/                      # ★ 四大 Agent(每个含 graph/nodes/state/prompts 四件套)
│   ├── qa/                      # RAG 智能问答
│   ├── exam/                    # 试卷批改 HitL
│   ├── resume/                  # 简历审查 fan-out
│   └── interview/               # 模拟面试状态机
├── core/                        # ★ 公共核心模块
│   ├── llm_factory.py           # LLM 统一工厂
│   ├── orchestrator.py          # 编排器
│   ├── knowledge_base.py        # BGE-M3 向量检索(Milvus)
│   ├── reranker.py              # BGE-Reranker 精排
│   ├── query_classifier.py      # 意图分类器
│   ├── memory.py                # MemorySaver + 对话记忆
│   ├── retry.py                 # 三层兜底重试
│   ├── exceptions.py            # 统一异常体系
│   └── logger.py                # structlog 日志
├── db/migrations.py             # 数据迁移
└── mcp_server/                  # MCP Server(知识库检索 + Web 搜索)

六、最值得学习的 5 个工程范式

读这个项目,我建议重点留意下面五个贯穿全项目的模式(后续文章会逐一展开):

  1. Agent 四件套结构:每个 Agent 都是 graph.py + state.py + nodes.py + prompts.py 四个文件,结构高度统一。state.py 用 TypedDict 定义图的数据总线,用 Pydantic 定义 LLM 结构化输出的 Schema。
  2. LLM 工厂模式:所有 Agent 禁止直接调用 init_chat_model,必须通过 LLMFactory 按 agent_type 路由拿模型,自带实例缓存和结构化输出绑定。
  3. 三层兜底机制:自动重试(1s/3s 间隔)→ Agent 级降级(各业务有自己的兜底策略)→ 系统级兜底(永不抛异常给用户)。
  4. 单例模式 + 进程内模型:三个本地模型全部 get_instance() 单例,lifespan 里用 asyncio.gather + run_in_executor 并行预热,避免首个请求卡顿。
  5. HitL(Human-in-the-Loop):试卷批改图执行到教师审核节点会 interrupt() 暂停,教师确认后 Command(resume=...) 恢复,这是 LangGraph 最实用的能力之一。

七、运行架构速览

服务端口说明
FastAPI 后端8000REST + SSE 接口,/docs 查看 Swagger
Vue3 前端3000学员 / 教师 / 管理员界面
PostgreSQL5432关系数据库
Milvus19530向量库
Langfuse3100LLM 调用追踪与可观测性

所有连接配置统一从 .env.local 读取,禁止硬编码端口号——配置中心用 pydantic-settings 实现,下一篇会讲。


下篇预告

下一篇《EduAgent 项目全解析(二):工程地基——配置中心、LLM 工厂与三层兜底》,我们会深入 config.py、llm_factory.py、retry.py 三个文件,看看一个生产级 AI 项目的地基是怎么打的:如何用 pydantic-settings 管理配置、如何用工厂模式统一管理 LLM 实例、如何用装饰器实现三层兜底,以及为什么 trust_env=False 能解决代理导致的 SSL 报错。

项目源码仅供教学参考,欢迎 Star、转发、留言交流。有任何想深入拆解的模块,评论区告诉我。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/m0_74337786/article/details/163802777

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--