山东大学软件学院创新实训(一)

张开发
2026/4/14 18:14:53 15 分钟阅读

分享文章

山东大学软件学院创新实训(一)
一、引言与个人职责由于初始项目的定位较为简单经过小组成员的商讨后我们对项目的功能进行了细化和创新从而推出更具智能且个性化的考研助手。通过了协商任务后小组讨论确认了项目初始的架构以及进一步的分工。其中我负责AI后端模块的开发主要目标为构建智能错题分析、个性化推荐及RAG问答服务并集成大模型API为平台提供智能化核心能力。二、系统架构设计系统架构的设计上我们采用了客户端层-服务端层-数据层的三层架构┌─────────────────────────────────────────────────────────────┐ │ 客户端层 │ ├──────────────────────┬──────────────────────────────────────┤ │ Web浏览器 │ 移动设备 │ │ (管理后台) │ (移动App - HBuilder打包) │ │ Vue3 TypeScript │ Vue3 TypeScript UniApp │ │ Element Plus │ Vant UI组件库 │ │ Pinia状态管理 │ │ └──────────────────────┴──────────────────────────────────────┘ │ HTTPS/WSS ┌─────────────────────────▼──────────────────────────────────┐ │ 服务端层 │ ├──────────────────────┬──────────────────────────────────────┤ │ AI后端服务器 │ 业务后端服务器 │ │ Python AI服务 │ Spring Boot应用 (Java 21) │ │ (FastAPI/Flask) │ - Tomcat嵌入式容器 │ │ - RabbitMQ消费者 │ - Mapper层 (MyBatis-Plus) │ │ - LangChain框架 │ - RabbitMQ客户端 │ │ - AI模型接口 │ - Service层 (业务逻辑) │ │ - 向量数据库 │ - WebSocket服务 │ │ │ - Controller层 (REST API) │ └──────────────────────┴──────────────────────────────────────┘ │ ┌─────────────────────────▼──────────────────────────────────┐ │ 数据层 │ ├──────────────┬──────────────┬──────────────┬───────────────┤ │ MySQL数据库 │ Redis缓存 │ 阿里云OSS │ RabbitMQ │ │ - 各种数据 │ - 会话缓存 │ - 图片/PDF │ - 传递数据 │ │ │ - 消息缓存 │ │ │ │ │ - 热点数据 │ │ │ └──────────────┴──────────────┴──────────────┴───────────────┘采用Spring Boot (业务层) RabbitMQ (异步总线) FastAPI/LangChain (AI层)的异构微服务架构兼顾业务稳定性与AI技术敏捷性。三、接口契约设计Spec驱动与RabbitMQ消息规范3.1 核心功能模块划分项目包含六大核心功能模块智能错题本系统自主组卷练习 ↔ 每日智能推题管理错题 ↔ AI分析与识别生成查看知识图谱 ↔ 图片上传(OCR识别)自定义错题标签、管理错题本智能院校推荐查看院校详情 ↔ 查看专业排名查看分数线、查看报录比数据获取个性化推荐 ↔ 院校信息检索考研学习社区查看个人历史、浏览信息流发布帖子含设置标签↔ 富文本编辑删除帖子、点赞帖子、评论帖子、收藏帖子即时聊天与社交好友管理、分享院校信息实时消息通知 ↔ 一对一好友聊天分享错题难题个性化AI助手学习规划建议、智能问答智能对话 ↔ RAG知识检索操作提示管理员端功能用户管理、帖子审核AI智能审核 人工审核数据统计与可视化、AI大模型工具集成3.2RabbitMQ Topic规划与消息体设计ExchangeQueueRouting Key用途消息体关键字段ai.task.exchangeai.task.error-analysistask.error.analysis下发错题分析任务task_id, user_id, question_text, user_answer, correct_answerai.result.exchangeai.result.analysisresult.analysis回传分析结果task_id, weak_points[], knowledge_tags[], analysis, recommended_ids[]ai.task.exchangeai.task.rag-querytask.rag.queryRAG增强问答检索query, user_id, history[], top_kai.task.exchangeai.task.knowledge-graphtask.knowledge.graph知识图谱生成user_id, error_topics[]3.3 幂等性与可靠性保障去重机制Python消费者根据task_id查询Redis缓存若已处理则直接ACK避免大模型重复计费。死信队列DLQ解析失败或LLM连续超时3次的消息路由至ai.task.dlq供运维人工介入。RabbitMQ配置publisher confirmsmandatory flag确保消息不丢失manual ack配合业务逻辑保障至少一次消费。四、知识图谱生成策略对知识图谱的可视化进行了初步思索# 知识图谱生成伪代码 async def generate_knowledge_graph(user_id: int) - dict: # 1. 查询用户错题 error_topics await get_user_error_topics(user_id) # 2. 提取知识点标签 knowledge_points await extract_knowledge_points(error_topics) # 3. 构建图谱节点与边 nodes [] edges [] for point in knowledge_points: nodes.append({ id: point.id, label: point.name, mastery: calculate_mastery(user_id, point.id), category: point.category }) # 添加知识点间的关联边 for relation in point.relations: edges.append({ source: point.id, target: relation.target_id, type: relation.type }) return {nodes: nodes, edges: edges}五、总结本周以准备工作为主目前主要完成了微服务架构设计文档与技术选型讨论搭建Python 3.10 FastAPI LangChain的开发环境解决依赖冲突协助配置RabbitMQ容器化部署与网络规则定义RabbitMQ Topic规划与消息体JSON Schema完成Pydantic/DTO契约对齐

更多文章