AI内容生成--单词故事业务实践
1. 需求背景
课后复习环节引入AI能力,通过选择单词和故事风格,生成小故事的形式,辅助用户记忆单词。故事的文本需要包含中英文,并对英文文本中使用到的单词进行高亮,同时需要有有配套的英文文本对应的朗读音频。
2. 技术方案
用户选择好若干个单词和故事风格,提交到后台,返回一个taskId,前端通过taskId去轮询后台的结果接口,当返回状态为text_done时,那么故事文本已生成,当返回状态为audio_done时,那么故事的音频已生成完毕。
故事的文本,调用的dify部署的agent生成,使用了gpt-4o模型;故事的音频,调用了微软的TTS服务,它们的英文语音合成,发音更为地道。
具体交互时序图如下:
sequenceDiagram
actor user
participant front as APP客户端
participant stu as APP服务端
participant cache as 缓存
participant content as 内容服务后端
participant ai as LLM
participant tts as 微软TTS
participant oss as 阿里云OSS
user->>front: 选择单词+故事风格
front->>stu: 提交生成请求(单词,风格)
activate stu
alt 无生成次数
stu-->>front: 返回提示
else 有生成次数
stu-->>cache: 写入生成中记录
activate stu
activate cache
cache-->>stu: 写入成功
deactivate cache
deactivate stu
stu-->>front: 返回任务ID
end
deactivate stu
activate stu
par 提交生成任务
stu-->>content: 提交任务(id,style,grade)
activate stu
activate content
content-->>content: 查单词释义
content-->>ai: ai生成
activate ai
ai-->>content: 返回故事 (5~6s)
deactivate ai
content-->>stu: 返回故事
deactivate content
stu-->>cache: 更新故事文本(text done)
activate cache
deactivate cache
deactivate stu
stu-->>content: 提交tts请求
activate stu
activate content
content-->>tts: 语音合成
activate tts
tts-->>content: 返回字节数组
deactivate tts
content-->>oss: 上传音频
activate oss
oss-->>content: 返回音频链接
deactivate oss
content-->>stu: 返回音频链接
deactivate content
stu-->>cache: 更新故事音频(audio done)
activate cache
deactivate cache
deactivate stu
end
deactivate stu
loop 30s内每秒轮询
front->>stu: 查询故事文本
end
loop 30s内每秒轮询
front->>stu: 查询故事音频
end
Tips:
需求中提及“对英文文本中使用到的单词进行高亮”,因为具体单词,在造句之后,会有时态的变换,所以这里使用了NLP的python库Spacy,可以获取到英文文本的所有lemma(词元)。

故事文本内容生成使用的提示词
1 | # Role |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Kiboroy's Stack!