Skip to content

ynwelc/CampusMind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI 校园课程智能答疑助手

Python AWS Lambda DynamoDB DeepSeek Flask


📦 项目基本信息与痛点分析

项目概述

一个全栈独立开发的计算机专业课程智能答疑系统,基于 AWS 无服务器架构构建,集成 DeepSeek 大语言模型,为计算机专业学生提供课程作业答疑、代码纠错、知识点梳理等智能化服务。

背景与痛点分析

技术痛点:通用 LLM 模型对于计算机专业课程的垂类知识理解不够精准,常常产生幻觉回答,影响学习效率。

业务痛点:学生在课程学习中遇到问题时,缺乏即时、专业的答疑渠道,传统的搜索引擎或论坛问答效率低下。

核心解决方案

  • 通过专业领域 Prompt 工程,引导模型聚焦于计算机专业知识(Python/Java/数据结构/操作系统/计算机网络)
  • 实现问题输入 → AI 精准答疑 → DynamoDB 持久化 → 历史查询的完整业务闭环
  • 无服务器架构提供弹性伸缩能力,按需付费,成本可控

🎬 系统演示

点击下方图片观看项目完整演示视频 🎥

AI 校园课程智能答疑助手 - 系统技术架构图

💡 点击上方图片,观看项目完整演示视频,了解系统功能与技术架构的详细展示


✨ 核心功能与亮点

核心业务能力

功能 描述 技术实现
智能问答 输入问题,AI 返回专业解答 调用 call_deepseek_api() 构建标准化请求体,设置 max_tokens=2000, temperature=0.7
代码纠错 粘贴代码片段,获取错误分析 SYSTEM_PROMPT 明确引导代码分析和修复方案输出
历史记录 自动保存问答历史 DynamoDB 复合主键设计:questionId(HASH) + createdAt(RANGE)
分类筛选 按标签筛选历史记录 DynamoDB Scan + FilterExpression=Attr('tag').eq()
批量删除 清空全部历史记录 batch_writer() 高效批量操作,减少网络往返

技术亮点

1. Lambda 单文件架构设计

  • 所有业务逻辑集中在 lambda_function.py零依赖外部模块,部署包体积最小化
  • 路由分发通过 http_method + path 组合实现,避免复杂框架开销
  • 统一响应构建 build_response(),自动处理 CORS 和 JSON 序列化

2. 输入校验与容错体系

  • 问题长度限制(2000字符)防止 API 滥用
  • 空问题检测,快速返回 400 状态码
  • 全局异常捕获,敏感错误信息不泄露给客户端
  • HTTP 状态码规范:200(成功) / 400(请求错误) / 404(资源未找到) / 500(服务器错误)

3. 前端交互体验优化

  • 深色/浅色主题切换:CSS 变量实现,localStorage 持久化
  • 代码语法高亮:集成 highlight.js,支持多种编程语言
  • Markdown 渲染:使用 marked.js 解析 AI 返回的富文本内容
  • 响应式设计:适配移动端和桌面端,侧边栏在小屏幕自动隐藏

4. 本地开发环境

  • Flask 模拟 Lambdalocal_server.py 将 Lambda 事件结构转换为 Flask 请求,支持热更新调试
  • 环境变量检测:启动时自动检查必要配置是否存在

🛠️ 全栈技术栈总览

Backend: Python 3.10+ + AWS Lambda
Database: Amazon DynamoDB
AI Service: DeepSeek API (deepseek-chat)
Local Dev: Flask 2.0+
Frontend: Vanilla JS + CSS3
Cloud Infrastructure: AWS API Gateway + S3


📡 核心业务/数据流程设计

问答请求处理流程

sequenceDiagram
    participant User as 用户
    participant Frontend as 前端
    participant APIGW as API Gateway
    participant Lambda as Lambda Function
    participant DeepSeek as DeepSeek API
    participant DynamoDB as DynamoDB

    User->>Frontend: 输入问题 + 选择标签
    Frontend->>APIGW: POST /ask (question, tag)
    APIGW->>Lambda: lambda_handler(event)
    Lambda->>Lambda: handle_ask(event)
    Lambda->>Lambda: 输入校验 (非空 + 长度)
    Lambda->>DeepSeek: call_deepseek_api(question)
    DeepSeek-->>Lambda: {"choices": [{"message": {"content": "..."}}]}
    Lambda->>Lambda: 生成 questionId (UUID)
    Lambda->>DynamoDB: save_to_dynamodb(item)
    DynamoDB-->>Lambda: 写入成功
    Lambda-->>APIGW: build_response(200, {"success": true, "data": {...}})
    APIGW-->>Frontend: JSON 响应
    Frontend->>User: 显示 AI 回答
Loading

历史记录查询流程

sequenceDiagram
    participant User as 用户
    participant Frontend as 前端
    participant APIGW as API Gateway
    participant Lambda as Lambda Function
    participant DynamoDB as DynamoDB

    User->>Frontend: 切换标签筛选
    Frontend->>APIGW: GET /history?tag=数据结构&limit=50
    APIGW->>Lambda: lambda_handler(event)
    Lambda->>Lambda: handle_get_history(event)
    alt 有标签筛选
        Lambda->>DynamoDB: scan(FilterExpression=Attr('tag').eq(tag), Limit=50)
    else 无标签筛选
        Lambda->>DynamoDB: scan(Limit=50)
    end
    DynamoDB-->>Lambda: {"Items": [...]}
    Lambda->>Lambda: items.sort(key=lambda x: x['createdAt'], reverse=True)
    Lambda-->>APIGW: build_response(200, {"success": true, "data": items})
    APIGW-->>Frontend: JSON 响应
    Frontend->>User: 渲染历史列表
Loading

🚀 快速本地运行

环境准备

  1. 安装依赖
cd lambda
pip install -r requirements.txt
pip install flask boto3
  1. 配置环境变量
# Windows PowerShell
$env:DEEPSEEK_API_KEY="your_deepseek_api_key"
$env:TABLE_NAME="campus-qa-8056-qa-history"
  1. 启动本地服务器
python local_server.py

API 调用示例

提问接口

curl -X POST http://localhost:5000/ask \
  -H "Content-Type: application/json" \
  -d '{"question": "什么是二叉树的前序遍历?", "tag": "数据结构"}'

查询历史

curl http://localhost:5000/history?tag=数据结构&limit=10

清空历史

curl -X DELETE http://localhost:5000/history

🔒 安全与性能指标

安全性

  • 环境变量隔离:API Key 通过 AWS Secrets Manager/环境变量注入,不硬编码到代码中
  • 输入校验:问题长度限制、空值检测,防止恶意输入和资源滥用
  • CORS 配置:明确允许的 Origin、Methods、Headers,防止跨域攻击
  • 异常处理:全局 try-catch,错误信息脱敏处理,敏感信息不泄露

性能优化

  • Lambda 冷启动优化:单文件架构减少依赖加载时间,启动更快
  • DynamoDB 批量操作batch_writer() 合并多个操作,减少网络往返次数
  • 超时控制:API 请求设置 30s 超时,避免资源长时间占用
  • 日志记录:关键节点打印日志,便于问题排查和性能监控

如果这个项目对你有帮助,请给个支持的 star!谢谢 ⭐️

About

A serverless AI 🧠 Q&A assistant for computer science students, built with AWS Lambda and DeepSeek.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors