软件构造实验作业
实验名称:儿童故事管理平台的开发
实验一:AI故事生成平台
一、实验要求
实验名称: AI故事生成平台 - 核心数据模型与文本生成
核心任务: 构建平台的后端核心,实现基于关键词的自动故事生成。
任务要求:
1.设计并实现 Story 数据模型,至少包含标题、故事梗概、正文、创建时间等字段。
2.集成百度文心一言或其他大语言模型API,开发一个后端服务。该服务接收用户提供的故事关键词(如“宇航员、小狗、月球”),调用AI生成一个完整的儿童故事,并保存至数据库。
二、实验步骤
技术:后端springboot+前端vue
操作:自行输入故事标题、内容要求,选择故事篇幅,点击生成故事,等待几秒,故事就会出现在下方区域:
能够显示数据库中已存在的故事:
控制台可以打印日志监视故事生成的状态:
故事成功存入数据库,记录所用模型、生成时间等信息:
通过修改配置中的api来切换所使用的模型:
三、实验总结
在进行百度千帆大模型文心一言api申请的时候,因为它的新旧版本问题,我不知道secret key如何获取,找了一些教程也没有确切的方法。因为自己对大模型api接触不多,在下课之后搜集相关介绍,了解到api可以让我在自己的项目中使用不同大模型,例如,deepseek就是一个推理模型。此外,我了解到一些token的收费规则,即根据字段进行收费,输入和输出的收费标准不同,不同语言的收费标准也不相同。了解到这些之后,我进一步查询文心一言大模型的官方api使用文档,我发现现在版本下使用该模型的时候只需要提供api即可,而secret key的那种方式是旧版的,恰巧网上都是有关旧版的教程,所以我在写作业的时候就卡到这里了。在这个过程中,我体会到在应用一项东西的时候,先对其有一个简单的了解之后就可以在大体上把握自己的进度,我也体会到了官方文档的重要性,还有就是要保持一个持续学习的状态,去拥抱新事物。在实验中我还发现自己的node版本有些老旧不支持现在的vue3项目,于是我根据提示卸载旧有node,下载nvm的程序,由此发现使用nvm对node进行管理更加地方便。
实验二:AI插图生成平台
一、实验要求
实验名称: AI插图平台 - 图像生成与资源管理
核心任务: 为生成的故事自动创建配套插图,并管理故事与插图的关联。
任务要求:
1.扩展 Story 模型,增加用于存储插图URL或文件路径的字段。
2.集成百度文心一格或同类文生图API,开发一个后端服务。该服务接收一个故事标题或一段故事正文,调用AI生成一张符合故事意境的插图。
3.实现将生成的图片保存至本地或云存储,并将图片信息与对应的 Story 记录关联。
二、实验步骤
需求描述:询问deepseek如何向trae描述需求
插图生成页面:可以生成不同风格的图片,还可以重新生成
根据故事生成相应的图:
故事列表中显示存储的故事和插图:
数据库中的存放位置:
三、实验总结
我发现可以和deepseek沟通去更好地操控trae生成实验所需要的功能,能够精确的描述出自己想要的效果。在实验过程中出现报错,学会了除了在浏览器的控制台查看出错之处外,还可以从network那里查看其他具体的错误,错误显示401我的API出现问题,能够更快地修复错误。
实验三:AI语音生成平台
一、实验要求
实验名称: AI语音生成平台 - 语音合成与播放
核心任务: 为故事生成朗读音频,实现多媒体展示。
任务要求:
1.扩展 Story 模型,增加用于存储音频文件URL的字段。
2.集成百度语音合成或同类TTS API,开发一个后端服务。该服务接收一篇故事正文,调用AI将其合成为MP3等格式的音频文件。
3.实现音频文件的保存,并与对应的 Story 记录关联。
4.提供一个简单的播放页面或接口,用于播放生成的故事音频。
二、实验步骤
支持从故事列表中挑选数据进行音频设置:
音频生成:支持对音频参数的设置
音频播放:可以选择不同的倍速和进度播放
存储位置:音频文件的相对位置存放在数据库中
三、实验总结
在实验的过程中,我的secret-api的配置老是出错,经过调试之后,跳过对于secret-api的调用直接使用api进行实现。在刚开始进行需求描述时,错误的把音频所要读的内容说为了api,导致生成的音频没有声音。在音频生成成功之后,进一步增加了进度拖拽和倍速设置,让该音频播放功能显得更加地合理。
大作业:儿童故事管理平台设计与开发
一、实验要求
核心任务: 将三个实验的成果集成为一个完整、可用的Web应用。
任务要求:
- 系统集成: 创建一个完整的工作流。用户在一个页面上输入关键词,平台自动依次调用:实验一的服务生成故事文本、实验二的服务为故事生成插图、实验三的服务为故事生成朗读音频。
- 前端界面: 开发一个友好的用户界面,用于输入关键词、并最终以一个“故事卡”的形式展示生成的故事完整内容、插图和播放按钮。
- 业务逻辑:实现用户管理、故事管理等模块,尽量使得此儿童故事管理平台接近商用平台。
二、实验步骤
这是我solo模式的分享链接:https://www.trae.com.cn/events/s/yeWzNIdtt-A/
首先进行框架的整合使用:
修复登录失败的JWT验证问题:
之后对框架进行修改,风格确定为经典的管理系统:
生成音频文件到本地并进行播放:
首页:
用户管理:
三、实验总结
难点在于对前端框架的寻找和拆分一整个APP.vue页面为许多vue界面。我发现,在trae中,对于代码量较大的文件进行操作往往需要更长的时间,做出来的效果也不是很好。在进行页面设计的时候,因为前后端的api不匹配造成了许多错误。