全栈 AI Agent 从 0 到 1 :智能播客平台开发全记录

全栈 AI Agent 从 0 到 1 :智能播客平台开发全记录

💡 原文中文,约23200字,阅读约需56分钟。
📝

内容提要

这是一个端到端智能播客制作平台,用户上传音视频后,AI自动完成内容理解、音色设计、语音合成和混音。项目采用Vue 3、FastAPI、LangGraph等技术,通过SSE和AG-UI协议实现流式通信,并集成多模态识别、音频处理工具及临时文件清理机制,实现全流程自动化。

🔎

延伸解读

技术选型与架构设计

项目采用Vue 3、FastAPI、LangGraph等技术栈,通过SSE和AG-UI协议实现流式通信,并集成多模态识别、音频处理工具及临时文件清理机制,实现全流程自动化。这种架构设计兼顾了前后端分离、流式交互和资源管理,为AI应用开发提供了可参考的实践范例。

工程实践与经验

作者在开发中总结了多项工程实践:工具设计遵循单一职责原则,将音频处理拆分为9个独立工具;存储采用临时与永久分离的双层架构,避免磁盘膨胀;流式输出使用stream_mode="messages"确保真流式;配置管理支持可视化界面,降低使用门槛。这些经验对AI应用开发者具有借鉴意义。

项目局限与注意事项

文章指出InMemorySaver仅适合本地简单尝试,真实业务需用数据库;SSE响应可能被缓冲,需添加特定响应头;LangChain 1.0 API变动大,需关注官方文档。此外,项目依赖阿里云DashScope服务,实际部署需考虑API成本和稳定性。

Q&A

Smart Podcast Platform 是什么?它的核心功能是什么?

Smart Podcast Platform 是一个端到端的智能播客制作平台,用户上传音视频后,AI 自动完成内容理解、音色设计、语音合成和混音,全程无需人工干预。

Smart Podcast Platform 使用了哪些主要技术栈?

前端使用 Vue 3、TypeScript、Vite、Tailwind CSS、shadcn-vue 和 ai-elements-vue;后端使用 FastAPI 和 Uvicorn;AI 框架使用 LangChain 1.0 和 LangGraph 1.0.3;语音引擎和识别使用阿里云 DashScope(Qwen-TTS 和 Qwen-ASR);多模态模型使用 qwen3.5-omni-plus;音频处理使用 pydub 和 FFmpeg;通信协议使用 SSE 和 AG-UI。

为什么选择 SSE 而不是 WebSocket 来实现流式通信?

因为 SSE 是单向的服务器推送,基于普通 HTTP 连接,比 WebSocket 更轻量。对于 AI 对话这种“用户发一条,AI 持续回复”的场景,SSE 完全够用,且不需要额外的握手和连接管理。

AG-UI 协议是什么?它定义了哪些事件类型?

AG-UI 是一套专门为 AI Agent 与前端通信设计的事件规范,定义了标准事件类型,如 RUN_STARTED、TEXT_MESSAGE_START、TEXT_MESSAGE_CONTENT、TEXT_MESSAGE_END、TOOL_CALL_START、TOOL_CALL_ARGS、TOOL_CALL_END、TOOL_CALL_RESULT、RUN_FINISHED 等。

项目中的音频混音工具模块包含哪些核心工具?

包含三个核心工具:音频拼接工具(concatenate_audio)、智能BGM选择工具(select_background_music)和音频混音工具(mix_audio_with_bgm)。

项目如何管理音频资源?

项目使用轻量级的 JSON 文件(voice_index.json)作为音频索引,提供 RESTful API 进行查询、上传和删除,并通过文件锁保证并发安全。

临时文件清理机制是如何工作的?

系统定时清理 storage/temp/ 目录下超过指定时间(默认10分钟)的过期文件,递归清理所有子目录并自动移除空目录,返回统计信息。

项目如何实现多模态识别?

项目集成了阿里云 DashScope 的 qwen3.5-omni-plus 模型,支持图片、视频、音频的统一理解。对于大视频文件,会自动分割成多个片段分别处理。

配置管理采用什么策略?

采用配置文件 > 环境变量 > 默认值的三级配置优先级,用户可以通过前端界面修改配置,自动持久化到 config.json。

项目在工程实践中有哪些经验总结?

包括工具设计遵循单一职责原则、临时文件与永久存储分离、使用 stream_mode="messages" 实现真流式输出、配置可视化降低使用门槛等。

🏷️

标签

➡️

继续阅读