第一周任务环境配置与部分基础功能实现目录第一周任务环境配置与部分基础功能实现一、项目简介1.1项目简介1.2技术栈二、核心功能2.1评分标准2.2关键代码实现1配置文件2响应DTO核心数据结构3Prompt设计核心技术点4Service层核心逻辑5JSON解析工具三、测试验证四、技术亮点4.1 Prompt工程技巧4.2 架构设计五、总结一、项目简介1.1项目简介本项目是一个基于Spring Boot和大语言模型的高考作文智能评阅系统。第一周目标完成环境配置实现核心的分项评分功能内容项、表达项、发展等级。1.2技术栈技术版本用途Spring Boot2.6.13后端框架MongoDB4.4数据存储Maven3.9.10依赖管理JDK17Java运行环境Volcengine SDKLATEST火山引擎大模型API二、核心功能2.1评分标准高考作文采用三项评分制评分项满分评分要点内容项20分立意明确、结构完整、论据充分表达项20分语言流畅、文采、无语病发展等级20分思想深度、创新性、思辨能力总分60分三项得分之和2.2关键代码实现1配置文件application.properties# 服务端口 server.port8082 # 火山引擎大模型配置 volcengine.api.key你的API_KEY volcengine.model.name你的模型ID volcengine.base.urlhttps://ark.cn-beijing.volces.com/api/v3 # MongoDB连接配置 spring.data.mongodb.hostlocalhost spring.data.mongodb.port27017 spring.data.mongodb.databaseWenXin配置说明volcengine.api.key从火山引擎控制台获取volcengine.model.name部署的模型端点IDvolcengine.base.urlAPI基础地址MongoDB使用分离配置方式host/port/database2响应DTO核心数据结构Data public class CompositionReviewResponse { private Integer totalScore; // 总分 private ScoreDetail contentScore; // 内容项 private ScoreDetail expressionScore; // 表达项 private ScoreDetail developmentScore; // 发展等级 private String overallComment; // 总体评语 private ListString suggestions; // 改进建议 Data public static class ScoreDetail { private Integer score; // 得分 private Integer maxScore; // 满分 private String comment; // 评语 } }3Prompt设计核心技术点private static final String REVIEW_SYSTEM_PROMPT 你是一位经验丰富的高考语文阅卷老师请对以下作文进行评阅。\n\n 评分标准\n - 内容项0-20分立意是否明确、结构是否完整、论据是否充分\n - 表达项0-20分语言是否流畅、文采如何、是否有语病\n - 发展等级0-20分思想深度、创新性、思辨能力\n\n 请以JSON格式返回评阅结果包含以下字段\n {\n \totalScore\: 总分,\n \contentScore\: {\score\: 分数, \maxScore\: 20, \comment\: \评语\},\n \expressionScore\: {\score\: 分数, \maxScore\: 20, \comment\: \评语\},\n \developmentScore\: {\score\: 分数, \maxScore\: 20, \comment\: \评语\},\n \overallComment\: \总体评价\,\n \suggestions\: [\建议1\, \建议2\, \建议3\]\n };设计要点明确角色高考阅卷老师详细说明评分标准强制JSON格式输出定义清晰的字段结构4Service层核心逻辑Service public class CompositionReviewService { Autowired private LlmService llmService; Autowired private CompositionReviewRepository reviewRepository; public CompositionReviewResponse reviewComposition(CompositionReviewRequest request) { // 1. 构建用户消息 String userMessage buildUserMessage(request); // 2. 调用LLM API String aiResponse llmService.chat(REVIEW_SYSTEM_PROMPT, userMessage); // 3. 解析JSON响应 MapString, Object reviewData JsonParser.parseToMap(aiResponse); // 4. 构建响应对象 CompositionReviewResponse response buildResponse(reviewData); // 5. 保存到数据库 saveReviewRecord(request, response); return response; } }流程说明构建包含作文内容的提示词调用火山引擎大模型API解析返回的JSON数据转换为Java对象持久化到MongoDB5JSON解析工具Component public class JsonParser { private static final ObjectMapper objectMapper new ObjectMapper(); /** * 解析JSON为Map支持容错 */ public MapString, Object parseJsonToMap(String json) throws IOException { try { // 尝试直接解析 return objectMapper.readValue(json, new TypeReferenceMapString, Object() {}); } catch (Exception e) { // 失败则提取JSON片段后重试 return extractAndParseJsonToMap(json); } } /** * 从文本中提取JSON并解析 */ private MapString, Object extractAndParseJsonToMap(String text) throws IOException { // 找到第一个{和最后一个} int startIndex text.indexOf({); int endIndex text.lastIndexOf(}); if (startIndex -1 || endIndex -1 || startIndex endIndex) { throw new IOException(未找到有效的 JSON 格式); } // 提取JSON片段 String json text.substring(startIndex, endIndex 1); return objectMapper.readValue(json, new TypeReferenceMapString, Object() {}); } }设计亮点1.双重解析策略先尝试直接解析性能最优,失败后自动提取JSON片段容错性强2.智能提取定位第一个{和最后一个},即使LLM返回了额外文本也能正确解析RestController RequestMapping(/api/composition/review) public class CompositionReviewController { Autowired private CompositionReviewService reviewService; PostMapping(/submit) public ApiResponseCompositionReviewResponse submitComposition( RequestBody CompositionReviewRequest request) { if (request.getContent() null || request.getContent().trim().isEmpty()) { return ApiResponse.error(400, 作文内容不能为空); } try { CompositionReviewResponse response reviewService.reviewComposition(request); return ApiResponse.success(response); } catch (Exception e) { return ApiResponse.error(500, 评阅失败 e.getMessage()); } } }三、测试验证使用Postman测试进行测试接口地址POST http://localhost:8082/api/composition/review/submit请求Body{ userId: 1, title: 科技与人文的平衡, content: 随着科技的飞速发展..., topic: 阅读下面的材料根据要求写作..., year: 2024, region: 全国卷 }响应示例{ code: 200, message: success, data: { totalScore: 52, contentScore: { score: 17, maxScore: 20, comment: 文章立意明确紧扣主题结构完整... }, expressionScore: { score: 18, maxScore: 20, comment: 语言流畅表达清晰有一定文采... }, developmentScore: { score: 17, maxScore: 20, comment: 思考有深度能辩证看待问题... }, overallComment: 这是一篇优秀的作文论点清晰..., suggestions: [ [立意深化] 可以进一步探讨科技与人文融合的具体路径, [论证方法] 增加具体案例支撑观点, [语言表达] 部分段落过渡可以更自然 ] } }四、技术亮点4.1 Prompt工程技巧角色设定赋予AI明确的身份高考阅卷老师结构化输出强制JSON格式便于程序解析评分标准细化明确每个维度的评判要点容错处理清理LLM返回的Markdown标记4.2 架构设计分层清晰Controller → Service → Repository职责单一每层专注自己的任务易于扩展后续可添加题库、范文等功能五、总结本周完成✅ 环境配置JDK、Maven、MongoDB✅ 分项评分功能内容项、表达项、发展等级✅ API接口测试通过