AI 项目实战|打造一款“AI 个性化学习助手”(从0到上线)
作者:微信文章📌 本文为教育行业 AI 项目保姆级实战教程。
你将从一个想法开始,最终做出一款能上线、能分享、能变现的 AI 学习工具。一、为什么要做 AI 个性化学习助手?(行业痛点)
随着大模型普及,AI 在教育领域的应用正在爆发,但普通用户依然面临 3 个难题:
🎒 学生:不知道如何制定学习计划
✍🏻 老师:作业反馈和教辅任务耗时巨大
🤯 家长:不会辅导孩子,缺乏指导
而 AI 的优势正好是:
会总结知识
会生成题目
会给学习建议
不会累、成本低
因此,“AI 个性化学习助手”是最容易落地的教育行业项目之一。
二、我们要做的成品(你将得到什么?)
你将做出一个可在线使用的学习 AI 工具,核心功能包括:
① AI 生成个性化学习计划
根据学生:年级 + 科目 + 目标 → 自动生成周期学习方案。
② AI 解析错题,并给出讲解
上传题目图片 或 输入题干 → 自动讲解步骤。
③ AI 生成同类型练习题
让学生做“同类型强化训练”。
④ AI 监督学习进度,给每日任务
每天推送学习任务(如部署到微信公众号)。
⑤ AI 批改作文 / 批改作业
适用于语文、英文。
最终你将得到一个类似👇
📍“AI 个性化学习助手”网页
📍可接入公众号
📍支持分享给用户
三、项目总架构(从小白到可上线)
用户界面(Web / 小程序) ↓后端 API(Python Flask / Node.js) ↓大模型(OpenAI / DeepSeek / 月之暗面 / 腾讯混元) ↓数据库(可选:学生档案、错题库)用户(Web / 微信公众号网页 / 小程序) ↓ HTTPS CDN (静态 + React SPA) ↓ 负载均衡 / API 网关 (nginx / AWS ALB) ↓ 后端服务群(FastAPI) ├─ Auth 服务 ├─ User / Profile 服务 ├─ AI Agent 服务(调用大模型) └─ Task/Job 服务(异步任务) ↓ Redis(缓存、任务队列) PostgreSQL(主数据) MinIO/S3(文件/图片存储) 第三方大模型 API(OpenAI 或自建模型) 支付网关(微信支付/Stripe) 监控(Prometheus + Grafana)、日志(Loki / ELK)、异常(Sentry)三、技术选型(推荐)
后端:Python + FastAPI(异步、开发快)
异步任务:Celery + Redis 或 RQ
数据库:PostgreSQL
缓存:Redis
文件存储:S3 / MinIO(题目图片、学生上传文件)
前端:React + Vite + Tailwind CSS(移动优先)
微信/公众号接入:微信公众平台网页授权 + JSSDK
模型:OpenAI GPT-4o / 本地 LLM(如 Llama 2 或商业云模型)(根据成本与合规选)
部署:Docker + Kubernetes(EKS / GKE / kube on 服务器) 或 简化:Docker Compose + DigitalOcean App / AWS ECS
CI/CD:GitHub Actions
支付:微信支付、支付宝、Stripe(海外)
监控/告警:Prometheus + Grafana + Alertmanager + Sentry
四、数据库设计(主要表)
下面列出关键表和字段(SQL风格简化版):
-- 用户表CREATE TABLE users (id BIGSERIAL PRIMARY KEY,email VARCHAR(255) UNIQUE,phone VARCHAR(32),password_hash TEXT,role VARCHAR(20) DEFAULT 'user',created_at TIMESTAMP DEFAULT now());
-- 学生档案CREATE TABLE student_profiles (id BIGSERIAL PRIMARY KEY,user_id BIGINT REFERENCES users(id),name VARCHAR(100),grade VARCHAR(20),subjects TEXT[], -- e.g. ['math','chinese']level VARCHAR(50),created_at TIMESTAMP DEFAULT now());
-- 学习计划(生成结果)CREATE TABLE study_plans (id BIGSERIAL PRIMARY KEY,student_id BIGINT REFERENCES student_profiles(id),title VARCHAR(255),plan_json JSONB, -- 详细计划source_prompt TEXT,created_at TIMESTAMP DEFAULT now());
-- 错题/题库CREATE TABLE questions (id BIGSERIAL PRIMARY KEY,origin TEXT, -- 原始题目文本/图片链接type VARCHAR(20), -- single/multi/short/essayanswer TEXT,explanation TEXT,created_at TIMESTAMP DEFAULT now());
-- 用户做题记录/错题本CREATE TABLE attempts (id BIGSERIAL PRIMARY KEY,user_id BIGINT REFERENCES users(id),question_id BIGINT REFERENCES questions(id),user_answer TEXT,correct BOOLEAN,score FLOAT,feedback JSONB,created_at TIMESTAMP DEFAULT now());
-- 订阅/支付CREATE TABLE subscriptions (id BIGSERIAL PRIMARY KEY,user_id BIGINT REFERENCES users(id),plan VARCHAR(50),status VARCHAR(20),started_at TIMESTAMP,expires_at TIMESTAMP);五、核心 API 设计(RESTful 示例)
仅列关键接口,实际请加上鉴权(JWT)和速率限制
注册 / 登录
POST /api/auth/registerPOST /api/auth/login → 返回 JWT
学生档案
GET /api/studentsPOST /api/students(创建档案)
生成学习计划(同步 / 异步两种)
POST /api/ai/generate-plan
请求 body:
{"student_id":123,"subject":"math","goal":"高考数学进步20分","hours_per_day":1}
响应(同步示例):
{"plan_id":456,"status":"completed","plan":{ ... }}
异步模式:返回 job_id,客户端轮询或推送完成通知。
题目讲解(支持图片或文本)
POST /api/ai/explain{"input_type":"text","content":"解下列方程 x^2-3x+2=0"}返回分步讲解与难点提示。
生成练习题
POST /api/ai/generate-exercises支持 count、difficulty。
用户做题记录
POST /api/attempts(记录用户答案并触发批改)
支付与订阅
POST /api/pay/create-session(调用微信/Stripe)
六、关键实现要点与代码片段
1) 后端:FastAPI + 调用 OpenAI(同步示例)
# app/main.pyfrom fastapi import FastAPI, Depends, HTTPExceptionfrom pydantic import BaseModelimport osimport httpx
app = FastAPI()OPENAI_KEY = os.getenv("OPENAI_API_KEY")
class PlanRequest(BaseModel): student_id: int subject: str goal: str hours_per_day: float
def call_openai(prompt: str): headers = {"Authorization": f"Bearer {OPENAI_KEY}"} data = {"model":"gpt-4o-mini","messages":[{"role":"user","content":prompt}], "temperature":0.2} resp = httpx.post("https://api.openai.com/v1/chat/completions", json=data, headers=headers, timeout=30) resp.raise_for_status() return resp.json()["choices"]["message"]["content"]
@app.post("/api/ai/generate-plan")async def generate_plan(req: PlanRequest): prompt = f"你是一名教育规划师,给出年级为{req.student_id}的{req.subject}学习计划,目标:{req.goal},每天{req.hours_per_day}小时。要求结构化返回。" try: plan_text = call_openai(prompt) except Exception as e: raise HTTPException(status_code=500, detail=str(e)) # TODO: 保存到 DB return {"plan": plan_text}说明:生产环境请加重试、超时、限速与费用控制策略(见下文)
2) 异步任务(Celery)用于长任务与图像 OCR
把图片题目发送到 OCR(Tesseract/第三方),将文字送模型处理
Task 示例:tasks.generate_plan_task(student_id, ...),完成后写 DB 并发送 WebSocket/推送通知
七、Prompt 与输出规范(模板)
为保证输出可解析并存入 DB,建议使用明确输出格式(JSON 或 YAML)并在 Prompt 中强制要求。
示例 Prompt(生成学习计划,要求 JSON 输出)
你是教育规划专家。输入学生信息,输出 JSON:{"goal": "...","summary": "...","weekly_plan": [ {"day":"2025-12-01","tasks":[""]}, ...],"daily_task_template": "...","recommended_resources": ["..."]}学生信息:- 年级: 初二- 科目: 数学- 目标: 期末成绩提高10分- 可用时间: 1小时/天要求:只返回一段 JSON,且保证可被解析。八、部署与 CI/CD(示例)
每个服务使用 Dockerfile 打包,镜像推到 Docker Registry(DockerHub / ECR)
Kubernetes 部署(Deployment + HPA + Service),持久化 PG 用 RDS/Managed,Redis 使用 managed cache
GitHub Actions 流程:push -> run tests -> build images -> push -> kubectl apply(或通过 ArgoCD)
环境隔离:dev/staging/prod,机密存储用 Secret 管理
示例 Dockerfile(后端)
FROM python:3.11-slimWORKDIR /appCOPY pyproject.toml poetry.lock ./RUN pip install --upgrade pip && pip install poetry && poetry install --no-devCOPY . .CMD ["uvicorn","app.main:app","--host","0.0.0.0","--port","8000","--workers","1"]九、示例 GitHub 仓库结构(建议)/backend/app main.py api/ models/ services/Dockerfile/frontendreact-app/infrakubernetes/helm-charts/github-actions/docsarchitecture.mdrunbook.md
关注我了解更多
页:
[1]