
你将构建什么
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 步:体验学习工作流
前端和后端运行后,该项目支持两种主要学习路径。
根据主题生成测验
- 通过微信用户流程登录。
- 输入你想学习的主题。
- 根据该主题生成 AI 辅助问题。
- 提交答案并查看返回的答案和解析。
- 完成学习会话,并查看 AI 报告中的掌握程度分析、薄弱点和建议。
通过私有文档学习
- 选择受支持的 PDF、Word、Markdown 或 TXT 文档。
- 将其上传到应用的知识库工作流。
- 让系统通过 RAG 流程检索相关的文档上下文。
- 回答生成的问题并查看解析。
- 根据生成的报告判断材料中的哪些部分需要进一步学习。
基于主题的学习可以使用 Tavily 添加最新的 Web 上下文。基于文档的学习则以上传的私有材料作为检索依据。实际可用功能取决于后端环境中配置的服务和凭据。
第 4 步:运行测试套件
从 backend 目录运行后端测试:
cd backend
pytest该项目使用 pytest 和 pytest-asyncio。修改后端后以及部署前,请运行测试套件,以发现同步和异步行为中的回归问题。
进阶技巧
开发期间使用 API 文档
FastAPI 文档页面有助于检查项目当前运行版本所公开的路由。请将其作为权威信息来源,不要自行推测 README 中未记录的请求字段或端点路径。
分离开发环境与生产环境密钥
本地 .env 文件应仅用于开发。在生产环境中,请通过微信云托管或所选容器平台配置密钥。不要将已填写的环境文件提交到代码仓库。
选择合适的知识来源
当信息时效性很重要时,请使用结合 Tavily 的主题生成功能。当问题需要基于私有材料或组织专属资料时,请使用文档工作流。支持上传 PDF、Word、Markdown 和 TXT 文件。
分层验证各项服务
- 确认健康检查端点能够响应。
- 查看 FastAPI 文档。
- 运行
pytest。 - 编译 Taro 前端。
- 在微信开发者工具中打开
frontend/dist。 - 使用已配置的外部服务测试登录、测验生成、反馈、历史记录和报告回顾功能。
按照此顺序操作,可以更轻松地区分后端配置问题、前端编译问题和微信工具问题。
准备容器化部署
代码仓库包含 backend/Dockerfile 和 backend/.dockerignore。借助这些文件,可以将后端打包为 Docker 容器,并部署到微信云托管或其他兼容平台。
部署前,请运行测试,确认平台能够提供所有必需的生产环境变量,并避免将密钥写入镜像。确认 MySQL、腾讯云 COS、模型提供商、Tavily 和微信身份验证等外部依赖能够从部署环境中访问。
总结
该项目为微信生态中的 AI 辅助学习提供了完整基础:基于 Taro 和 React 的小程序、FastAPI 后端、基于主题和文档的测验生成、即时解析、学习报告、用户历史记录,以及支持容器化部署的能力。首先验证后端,然后在微信开发者工具中编译前端,最后配置所选学习工作流所需的外部服务。
