# 基于LLM的自动试卷生成工具 **Repository Path**: Echoza/TestPaperG ## Basic Information - **Project Name**: 基于LLM的自动试卷生成工具 - **Description**: 开源软件开发导论课程项目,选题为基于LLM的自动试卷生成工具。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-04-04 - **Last Updated**: 2026-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TestPaperG - 基于LLM的试卷智能生成系统 [English](#english) | 简体中文 --- ## 项目简介 TestPaperG 是一款基于大语言模型(LLM)的试卷智能生成工具,旨在帮助教师快速生成高质量、标准格式的考试试卷。 ### 核心特性 - **智能生成**:输入科目、知识点、难度等参数,AI自动生成完整试卷 - **A/B卷支持**:一键生成差异化A/B卷,重复率低于30% - **答案解析**:可选附带标准答案与详细解析 - **PDF导出**:生成符合学校标准格式的A3横向试卷PDF - **智能修改**:通过自然语言描述修改试卷内容 - **历史管理**:记录所有生成历史,支持查看、导出、删除 ## 系统架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ TestPaperG 系统架构 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ Vue 3 前端 │ HTTP │ Spring Boot │ │ │ │ :5173 │◄───────►│ 后端 │ │ │ └──────────────┘ └──────┬───────┘ │ │ │ │ │ ┌─────────▼─────────┐ │ │ │ LangChain4j │ │ │ │ AI Agent │ │ │ └─────────┬─────────┘ │ │ │ │ │ ┌─────────▼─────────┐ │ │ │ 通义千问 API │ │ │ │ (DashScope) │ │ │ └──────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ## 技术栈 ### 后端 | 技术 | 版本 | 说明 | |------|------|------| | Java | 17+ | 编程语言 | | Spring Boot | 3.3.4 | Web应用框架 | | LangChain4j | 1.11.0 | AI Agent开发框架 | | MyBatis-Plus | 3.5.7 | ORM框架 | | H2 Database | 内置 | 嵌入式数据库 | | OpenPDF | 1.3.43 | PDF文档生成 | | DashScope SDK | 2.18.5 | 阿里云SDK | ### 前端 | 技术 | 版本 | 说明 | |------|------|------| | Vue.js | 3.5.32 | 前端框架 | | Vite | 8.0.4 | 构建工具 | | Element Plus | 2.13.7 | UI组件库 | | Axios | 1.15.0 | HTTP客户端 | ## 快速开始 ### 环境要求 - JDK 17 或更高版本 - Node.js 18+ - Maven 3.8+ - npm 9+ 或 pnpm 8+ - 阿里云DashScope API Key ### 1. 克隆项目 ```bash git clone cd TestPaperG ``` ### 2. 配置API Key 编辑 `src/main/resources/application.yml`,填入你的阿里云API Key: ```yaml langchain4j: open-ai: api-key: your-api-key-here llm: api-key: your-api-key-here ``` > 获取API Key:https://dashscope.console.aliyun.com/ ### 3. 启动后端 ```bash # 编译项目 mvn clean package -DskipTests # 运行应用 java -jar target/TestPaperG-1.0-SNAPSHOT.jar ``` 后端服务启动后访问:http://localhost:10000 ### 4. 启动前端 ```bash cd auto-exam-frontend # 安装依赖 npm install # 启动开发服务器 npm run dev ``` 前端服务启动后访问:http://localhost:5173 ### 5. 使用系统 1. 打开浏览器访问 http://localhost:5173 2. 在左侧配置试卷参数(标题、学科、知识点、难度等) 3. 点击"智能生成试卷"按钮 4. 等待AI生成完成,查看右侧预览 5. 可切换到PDF预览标签页,下载PDF文件 ## 功能说明 ### 试卷参数配置 | 参数 | 说明 | 必填 | |------|------|------| | 试卷标题 | 试卷名称,如"2026级高一期中考试" | 是 | | 所属学科 | 学科名称,如"高一数学"、"临床医学" | 是 | | 核心知识点 | 当前试卷要考查的知识点 | 是 | | 总分 | 试卷总分,默认100分 | 否 | | 考试时长 | 考试时间,默认120分钟 | 否 | | 难度等级 | 1-5级(基础→困难),默认3级 | 否 | | 生成AB卷 | 勾选后同时生成A/B两套试卷 | 否 | | 附带答案 | 勾选后试卷包含答案和解析 | 否 | ### 题型配置 支持灵活配置多种题型: - 选择题(单选/多选) - 填空题 - 简答题 - 论述题 - 判断题 每种题型可独立设置题数和每题分值。 ### A/B卷功能 开启A/B卷生成后,系统会: 1. 先生成A卷 2. 将A卷内容作为上下文,生成差异化的B卷 3. 自动计算A/B卷重复率 4. 重复率≤30%视为可接受 ### PDF导出 导出的PDF具有以下特点: - A3横向排版 - 符合学校标准试卷格式 - 包含考场信息栏和分数填涂栏 - 支持批量下载A/B卷 ### 历史记录 - 查看所有历史生成的试卷 - 支持按标题、科目搜索 - 查看、导出、删除历史试卷 - 从历史试卷继续修改 ## API接口 ### 生成试卷 ``` POST /api/agent/papers/generate Content-Type: application/json { "title": "2026级高一期中考试", "subject": "高一数学", "knowledgePoints": ["函数", "三角函数", "极限"], "totalScore": 100, "durationMinutes": 120, "difficultyLevel": 3, "generateAB": false, "includeAnswer": true, "questionTypeCounts": { "单选题": 5, "填空题": 5, "简答题": 3 }, "scoreDistribution": { "单选题": 4, "填空题": 4, "简答题": 20 } } ``` ### 修改试卷(功能尚未完成) ``` POST /api/agent/papers/modify Content-Type: application/json { "recordId": 1, "modificationPrompt": "把第3题的题干改成关于函数单调性的描述" } ``` ### 获取历史记录 ``` GET /api/papers/records?page=1&size=20 ``` ### 生成PDF ``` POST /api/papers/pdf/from-json Content-Type: application/json { "structuredContent": "{...JSON内容...}", "title": "试卷标题", "subject": "学科", "totalScore": 100, "durationMinutes": 120 } ``` ## 项目结构 ``` TestPaperG/ ├── src/ │ └── main/ │ ├── java/org/example/ │ │ ├── agent/ # AI Agent核心 │ │ │ ├── service/ # 业务服务 │ │ │ ├── controller/ # REST控制器 │ │ │ ├── llm/ # LLM调用封装 │ │ │ ├── prompt/ # Prompt模板 │ │ │ ├── parse/ # JSON解析 │ │ │ ├── format/ # 格式化工具 │ │ │ ├── compare/ # A/B卷比较 │ │ │ └── tools/ # Agent工具 │ │ ├── paper/ # 试卷管理 │ │ │ ├── persistence/ # 数据持久化 │ │ │ ├── service/ # 业务服务 │ │ │ ├── controller/ # REST控制器 │ │ │ └── dto/ # 数据传输对象 │ │ ├── config/ # 配置类 │ │ └── common/ # 公共组件 │ └── resources/ │ └── application.yml # 应用配置 ├── auto-exam-frontend/ # 前端项目 │ ├── src/ │ │ ├── App.vue # 主组件 │ │ └── components/ # 公共组件 │ ├── package.json │ └── vite.config.js └── pom.xml # Maven配置 ``` ## 开源许可 本项目采用 Apache License 2.0 开源许可。 ## 致谢 本项目使用了以下优秀的开源项目: - [LangChain4j](https://github.com/langchain4j/langchain4j) - AI Agent开发框架 - [Spring Boot](https://spring.io/projects/spring-boot) - Web应用框架 - [Vue.js](https://vuejs.org/) - 前端JavaScript框架 - [Element Plus](https://element-plus.org/) - Vue 3 UI组件库 - [MyBatis-Plus](https://baomidou.com/) - ORM框架 - [OpenPDF](https://github.com/LibrePDF/OpenPDF) - PDF生成库 --- # TestPaperG - LLM-based Intelligent Test Paper Generation System TestPaperG is an intelligent test paper generation tool powered by Large Language Models (LLM), designed to help teachers quickly generate high-quality, standardized exam papers. ### Key Features - **Intelligent Generation**: Input subject, knowledge points, difficulty level, and let AI generate complete test papers - **A/B Paper Support**: Generate differentiated A/B papers with repeat rate below 30% - **Answer Analysis**: Optional standard answers with detailed explanations - **PDF Export**: Generate A3 landscape PDF in standard school format - **Smart Modification**: Modify paper content through natural language - **History Management**: View, export, and delete historical papers ### Quick Start 1. Configure API Key in `src/main/resources/application.yml` 2. Run backend: `mvn spring-boot:run` or `java -jar target/TestPaperG-1.0-SNAPSHOT.jar` 3. Run frontend: `cd auto-exam-frontend && npm install && npm run dev` 4. Access http://localhost:5173 ### License Apache License 2.0