实验一:AI故事生成平台(2025.11.13)
学习目标
构建平台后端核心,实现基于关键词的自动故事生成功能。
技术实现
- 数据模型设计
Story数据模型
class Story:
id: int # 主键
title: str # 故事标题
summary: str # 故事梗概
content: str # 完整故事内容
keywords: str # 用户输入的关键词
created_time: datetime # 创建时间
- 百度文心一言集成
关键技术点:
• 使用qianfan SDK进行API调用
• 设计适合儿童故事的prompt模板
• 实现响应结果的解析和处理
核心代码:
def generate_story(keywords, age_group):
prompt = f"根据关键词{keywords}创作{age_group}儿童故事..."
response = client.do(model="ERNIE-Bot", messages=[...])
return parse_response(response)
遇到的问题及解决方案
-
问题:API返回格式不稳定
解决:增加响应解析的容错机制,支持多种返回格式 -
问题:故事质量参差不齐
解决:优化prompt设计,增加具体要求和约束条件
学习收获
• 掌握了大型语言模型API的调用方法
• 学习了prompt工程的基本技巧
• 理解了后端服务的数据流设计
Git提交记录
feat: 初始化项目结构和基础配置
feat: 实现Story数据模型和数据库操作
feat: 集成百度文心一言故事生成API
docs: 更新实验一文档和API说明
实验二:AI插图生成平台(2025.11.20)
学习目标
为生成的故事自动创建配套插图,并管理故事与插图的关联。
技术实现
- 数据模型扩展
扩展Story模型
illustration_path: str # 插图存储路径
image_url: str # 云端图片URL(可选)
- 百度文心一格集成
关键技术点:
• OAuth 2.0客户端凭证获取access_token
• 文本到图像的提示词优化
• 图片文件的本地存储管理
核心代码:
def generate_illustration(story_content):
prompt = create_image_prompt(story_content)
response = requests.post(API_URL, json=payload)
return save_image(response.content)
遇到的问题及解决方案
-
问题:图片生成与故事内容不匹配
解决:改进提示词生成算法,从故事中提取关键场景 -
问题:图片存储路径管理混乱
解决:建立统一的文件命名规范和路径管理机制
学习收获
• 掌握了文生图API的调用流程
• 学习了文件存储和路径管理的最佳实践
• 理解了多模态AI应用的集成方法
Git提交记录
feat: 扩展Story模型支持插图存储
feat: 集成百度文心一格图像生成API
feat: 实现图片文件管理和路径处理
fix: 修复图片提示词生成逻辑
实验三:AI语音生成平台(2025.11.27)
学习目标
为故事生成朗读音频,实现多媒体展示功能。
技术实现
- 数据模型再次扩展
扩展Story模型
audio_path: str # 音频文件路径
audio_duration: int # 音频时长(秒)
voice_type: str # 使用的语音类型
- 百度语音合成集成
关键技术点:
• TTS API的参数配置(语速、音调、发音人)
• 音频文件的流式处理和保存
• 前端音频播放控件集成
核心代码:
def generate_audio(story_text, voice_type):
params = {
'tex': story_text,
'per': voice_type,
'spd': 5,
'pit': 5
}
audio_data = requests.post(TTS_API, data=params)
return save_audio(audio_data.content)
遇到的问题及解决方案
-
问题:长文本合成失败
解决:实现文本分块合成,然后合并音频文件 -
问题:前端音频播放兼容性
解决:使用HTML5 audio标签并提供多种格式备用
学习收获
• 掌握了语音合成技术的应用方法
• 学习了音频文件处理和播放技术
• 理解了多媒体内容的集成展示
Git提交记录
feat: 扩展Story模型支持音频存储
feat: 集成百度语音合成TTS API
feat: 实现音频文件生成和播放功能
feat: 添加前端音频播放器组件
最终大作业:系统集成(2025.12.04)
学习目标
将三个实验成果集成为完整的Web应用,实现端到端的故事生成工作流。
系统架构设计
- 完整工作流
用户输入关键词
→ 故事文本生成(实验一)
→ 插图生成(实验二)
→ 语音合成(实验三)
→ 结果展示
- 前端界面设计
• 关键词输入表单
• 生成进度展示
• 故事阅读界面(图文+音频)
技术集成难点
- 异步处理优化
解决方案:使用Celery实现任务队列,避免请求超时
- 错误处理机制
解决方案:实现重试机制和优雅降级策略
- 性能优化
解决方案:添加缓存层和图片懒加载
核心集成代码
@app.route('/generate', methods=['POST'])
def generate_complete_story():
# 1. 生成故事文本
story_data = story_generator.generate(keywords)
# 2. 生成插图(异步)
illustration_task = celery.send_task('generate_illustration', [story_data])# 3. 生成音频(异步)
audio_task = celery.send_task('generate_audio', [story_data])# 4. 等待所有任务完成
results = await_tasks([illustration_task, audio_task])return jsonify(integrate_results(story_data, results))
项目成果
- 功能完整:实现了从关键词到多媒体故事的全自动生成
- 用户体验良好:响应式设计,支持移动端访问
- 代码质量高:模块化设计,易于维护扩展
Git提交记录
feat: 实现完整故事生成工作流集成
feat: 添加前端用户界面和交互逻辑
feat: 实现异步任务处理和进度展示
feat: 添加错误处理和用户反馈
docs: 完成项目文档和部署说明
项目总结
技术收获
- 全栈开发能力:从前端到后端的完整开发经验
- AI技术集成:掌握了多种AI服务的集成方法
- 工程化思维:学习了软件开发的工程化实践
遇到的问题与解决
• API限制:通过异步处理和缓存优化解决
• 资源管理:建立统一的文件管理策略
• 用户体验:通过进度反馈和错误处理改善