Files
ai-video-fullstack/backend
..
2026-09-07 00:15:32 +08:00
2026-10-23 09:43:17 +08:00
2026-09-07 00:15:32 +08:00

后端运行时

本目录提供 FastAPI 接入层、助手与模型资源管理,以及以 Pipecat 为核心的实时会话运行时。项目定位和完整能力状态见仓库 README与用户文档。当前依赖版本以 requirements.txt 为准。

请求如何进入运行时

业务客户端 ── /v1/realtime WebSocket 或 /v1/realtime/calls WebRTC ──┐
管理界面   ── /api/webrtc/offer、/ws/voice 或 /ws/stream ──────────┤
                                                               ▼
                                                 协议适配 / Pipecat transport
                                                               ▼
                                               助手配置 + Pipeline 或 Realtime 模型
  • Pipeline:ASR → LLM/外部 Agent → TTS;Pipecat 负责媒体帧、用户轮次、打断和服务编排。Pipeline 的 VAD 使用 Silero,轮次结束可选静音等待或 Local Smart Turn。
  • Realtime:端到端语音模型负责识别、生成和合成。当前 create_realtime_service() 只接通 stepfun-realtime 与 qwen-audio-realtime。轮次控制主要来自 Provider 配置。
  • 公开接口:/v1/realtime、/v1/realtime/calls、/v1/realtime/client_secrets、/v1/responses 和 /v1/models。字段、事件和传输限制以兼容矩阵为准。
  • 既有通道:/api/webrtc/offer、/ws/voice、/ws/stream 仍供管理界面和已有集成使用;它们使用管理员鉴权,不采用公开 Realtime JSON 事件协议。

模型资源与能力边界

interface_definitions 定义协议类型和表单字段,model_resources 保存每个资源的连接参数与凭证,assistant_model_bindings 决定助手使用哪些资源。运行时按 interface_type 创建服务,不根据 URL 或模型名自动推断协议。

类型 当前运行状态
openai-llm、openai-asr、openai-tts 及已接通的讯飞接口 Pipeline 可用;具体 Provider 仍需联调。
stepfun-realtime、qwen-audio-realtime Realtime 可用;具体功能按 Provider 能力限制。
openai-realtime、gemini-realtime 未接通运行时。接口定义和种子资源仍在目录中,不能据此宣称模型可用。
任意独立 VAD/EOU 模型 未实现。目前是内置 Pipeline 策略或 Realtime Provider 自身的设置。

后两项是建议收敛的占位内容:在适配完成前,宜隐藏或标记不可用;移除已有资源定义前需考虑数据库记录。

主要目录

路径 用途
routes/openai_realtime.py、routes/openai_responses.py 公开 Realtime 与 Responses 入口。
routes/voice_webrtc.py、routes/voice_ws.py 管理界面和旧通道入口。
services/pipecat/pipeline.py Pipecat 会话编排。
services/pipecat/service_factory.py、services/pipecat/turn_config.py 模型服务与 Pipeline 轮次策略。
services/interface_catalog.py 接口定义目录。
db/models.py、migrations/ SQLAlchemy 数据模型与 Alembic 迁移。
contracts/ OpenAPI 与 Realtime 事件契约快照。

本地运行与验证

在仓库根目录启动 Docker 开发环境:

docker compose up -d

API 容器启动时会执行 Alembic 迁移并同步接口定义。本机单独运行后端时,可用 make db-init 完成这两步;它需要本机安装 uv。需要演示助手和模型资源时,另运行 make db-seed;种子密钥是占位值,不能直接用于真实模型调用。make db-seed 还会更新示例助手的模型绑定,不要在已有生产配置上当作常规升级命令运行。

后端地址是 http://localhost:8000,交互式 HTTP API 文档是 /docs。本地开发也可在 backend/ 目录使用 uv run --with-requirements requirements.txt uvicorn app:app --reload --port 8000,需先准备数据库和环境变量。完整部署与 TURN 配置见部署说明。

make test-backend
make contract-check

开发计划中的生产可观测性、并发保护和可靠性工作尚未全部完成,见单租户生产化计划。

提示词 Pipeline 的远程编程任务接入与迁移步骤见 后台任务说明。使用 Pipecat 原生 Jobs,需先迁移数据库并配置已有的远程 OpenCode 服务。