跳到主要内容
AI教程

构建并运行 AI 驱动的微信学习小程序

配置并运行 AI 知识库智能学习小程序,连接 FastAPI 后端与 Taro 前端,完成验证、测试及 Docker 部署准备。

AI 驱动的微信学习小程序

你将构建什么

AI 知识库智能学习小程序是一款面向微信生态的智能学习应用。学习者可以输入主题或上传私有文档,然后通过 AI 辅助工作流生成问题、即时获得解析,并查看涵盖掌握程度、薄弱环节和后续学习建议的报告。

该项目结合了大语言模型、Web 搜索和检索增强生成。Tavily 提供最新的 Web 上下文,Chroma 则支持从上传的 PDF、Word、Markdown 和 TXT 文件中检索内容。

主要功能

  • 基于主题生成测验:根据用户提供的主题生成学习问题。
  • Web 搜索增强:使用 Tavily 添加最新上下文。
  • 私有知识库学习:上传 PDF、Word、Markdown 或 TXT 文档,并通过 RAG 检索相关内容。
  • 即时反馈:检查答案,并在每次作答后返回解析。
  • 学习报告:分析掌握程度、识别薄弱环节并提供学习建议。
  • 题目配图:生成辅助图片并将其存储到腾讯云 COS。
  • 微信用户支持:提供登录、学习历史记录和报告回顾功能。
  • 容器化部署:通过 Docker 将后端部署到微信云托管或其他兼容平台。

了解系统架构

小程序前端使用 Taro 4、React 18、TypeScript 和 Sass。后端基于 Python 3.11 运行,并使用 FastAPI、Pydantic v2 和 Uvicorn。LangChain 和 LangGraph 负责协调 AI 操作,模型与检索技术栈中还包含 DeepSeek 和阿里云百炼。

MySQL 用于存储应用数据,腾讯云 COS 用于存储生成的配图,Chroma 用作向量数据库。身份验证使用微信 jscode2session 和 JWT。后端测试使用 pytest 和 pytest-asyncio。

仓库结构

.\
├── backend/        # FastAPI 后端
├── frontend/       # 基于 Taro 的微信小程序前端
├── docs/           # 本地保存的项目文档
├── openspec/       # 本地保存的规范文件
└── prototypes/     # 本地保存的原型文件

前置条件

开始之前,请安装 Python 3.11、带有 npm 的 Node.js 以及微信开发者工具。你还需要准备 backend/.env.example 所要求的服务凭据和配置值。只有在准备构建或部署后端容器时才需要 Docker。

请勿将真实 API 密钥、数据库凭据、JWT 密钥和云存储凭据提交到版本控制系统。生产环境密钥应通过部署平台注入。

第 1 步:配置后端

打开终端,进入后端目录并创建隔离的 Python 环境。README 提供了以下面向 PowerShell 的配置步骤:

cd backend
python -m venv venv
venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env

打开新建的 .env 文件,填写所选模型、Tavily 集成、数据库、身份验证、向量检索和腾讯云存储所需的配置。请以 backend/.env.example 作为所需变量的权威清单。

启动 FastAPI 服务

python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

--reload 选项在本地开发期间非常实用,因为后端代码发生变化时 Uvicorn 会自动重启。绑定到 0.0.0.0 后,可以通过本机的网络接口访问开发服务。

验证后端

启动后,在 http://localhost:8000/docs 打开交互式 API 文档。你还可以通过 http://localhost:8000/api/v1/health 检查服务健康状态。

在排查前端问题之前,请先验证健康检查端点。如果该端点不可用,请确认虚拟环境已激活、依赖项已成功安装、.env 文件存在,并且 8000 端口未被占用。

第 2 步:构建微信小程序前端

保持后端运行,打开第二个终端并安装前端依赖项:

cd frontend
npm install
npm run dev:weapp

该开发命令会将 Taro 应用编译为微信小程序。编译完成后,启动微信开发者工具并打开生成的 frontend/dist 目录。

开发期间请保持编译器终端处于运行状态,以便重新构建前端更改。FastAPI 服务器也应在其独立终端中保持运行,以便小程序访问后端功能。

第 3 步:体验学习工作流

前端和后端运行后,该项目支持两种主要学习路径。

根据主题生成测验

  1. 通过微信用户流程登录。
  2. 输入你想学习的主题。
  3. 根据该主题生成 AI 辅助问题。
  4. 提交答案并查看返回的答案和解析。
  5. 完成学习会话,并查看 AI 报告中的掌握程度分析、薄弱点和建议。

通过私有文档学习

  1. 选择受支持的 PDF、Word、Markdown 或 TXT 文档。
  2. 将其上传到应用的知识库工作流。
  3. 让系统通过 RAG 流程检索相关的文档上下文。
  4. 回答生成的问题并查看解析。
  5. 根据生成的报告判断材料中的哪些部分需要进一步学习。

基于主题的学习可以使用 Tavily 添加最新的 Web 上下文。基于文档的学习则以上传的私有材料作为检索依据。实际可用功能取决于后端环境中配置的服务和凭据。

第 4 步:运行测试套件

backend 目录运行后端测试:

cd backend
pytest

该项目使用 pytest 和 pytest-asyncio。修改后端后以及部署前,请运行测试套件,以发现同步和异步行为中的回归问题。

进阶技巧

开发期间使用 API 文档

FastAPI 文档页面有助于检查项目当前运行版本所公开的路由。请将其作为权威信息来源,不要自行推测 README 中未记录的请求字段或端点路径。

分离开发环境与生产环境密钥

本地 .env 文件应仅用于开发。在生产环境中,请通过微信云托管或所选容器平台配置密钥。不要将已填写的环境文件提交到代码仓库。

选择合适的知识来源

当信息时效性很重要时,请使用结合 Tavily 的主题生成功能。当问题需要基于私有材料或组织专属资料时,请使用文档工作流。支持上传 PDF、Word、Markdown 和 TXT 文件。

分层验证各项服务

  1. 确认健康检查端点能够响应。
  2. 查看 FastAPI 文档。
  3. 运行 pytest
  4. 编译 Taro 前端。
  5. 在微信开发者工具中打开 frontend/dist
  6. 使用已配置的外部服务测试登录、测验生成、反馈、历史记录和报告回顾功能。

按照此顺序操作,可以更轻松地区分后端配置问题、前端编译问题和微信工具问题。

准备容器化部署

代码仓库包含 backend/Dockerfilebackend/.dockerignore。借助这些文件,可以将后端打包为 Docker 容器,并部署到微信云托管或其他兼容平台。

部署前,请运行测试,确认平台能够提供所有必需的生产环境变量,并避免将密钥写入镜像。确认 MySQL、腾讯云 COS、模型提供商、Tavily 和微信身份验证等外部依赖能够从部署环境中访问。

总结

该项目为微信生态中的 AI 辅助学习提供了完整基础:基于 Taro 和 React 的小程序、FastAPI 后端、基于主题和文档的测验生成、即时解析、学习报告、用户历史记录,以及支持容器化部署的能力。首先验证后端,然后在微信开发者工具中编译前端,最后配置所选学习工作流所需的外部服务。