- Revised site name and description for clarity and detail. - Updated navigation structure to better reflect the organization of content. - Improved changelog entries for better readability and consistency. - Migrated assistant configuration and prompt guidelines to new documentation paths. - Enhanced core concepts section to clarify the roles and capabilities of assistants and engines. - Streamlined workflow documentation to provide clearer guidance on configuration and usage.
313 lines
7.6 KiB
Markdown
313 lines
7.6 KiB
Markdown
# 系统架构
|
|
|
|
本文档只解释 Realtime Agent Studio (RAS) 的服务边界、数据流、部署形态和关键技术选型,不重复产品定位或上手流程。
|
|
|
|
---
|
|
|
|
## 整体架构
|
|
|
|
RAS 采用前后端分离的微服务架构,主要由三个核心服务组成:
|
|
|
|
```mermaid
|
|
flowchart TB
|
|
subgraph Client["客户端"]
|
|
Browser[Web 浏览器]
|
|
Mobile[移动应用]
|
|
ThirdParty[第三方系统]
|
|
end
|
|
|
|
subgraph Frontend["前端服务"]
|
|
WebApp[React 管理控制台]
|
|
end
|
|
|
|
subgraph Backend["后端服务"]
|
|
API[API 服务<br/>FastAPI]
|
|
Engine[实时交互引擎<br/>WebSocket]
|
|
end
|
|
|
|
subgraph Storage["数据存储"]
|
|
DB[(SQLite/PostgreSQL)]
|
|
FileStore[文件存储]
|
|
end
|
|
|
|
subgraph External["外部服务"]
|
|
OpenAI[OpenAI]
|
|
SiliconFlow[SiliconFlow]
|
|
DashScope[DashScope]
|
|
LocalModel[本地模型]
|
|
end
|
|
|
|
subgraph Tools["工具"]
|
|
Webhook[Webhook]
|
|
ClientTool[客户端工具]
|
|
Builtin[内建工具]
|
|
end
|
|
|
|
Browser --> WebApp
|
|
Mobile -->|WebSocket| Engine
|
|
ThirdParty -->|REST API| API
|
|
WebApp -->|REST API| API
|
|
WebApp -->|WebSocket| Engine
|
|
API <--> DB
|
|
API <--> FileStore
|
|
Engine <--> API
|
|
Engine --> External
|
|
Engine --> Tools
|
|
```
|
|
|
|
---
|
|
|
|
## 核心组件
|
|
|
|
### 1. Web 前端 (React)
|
|
|
|
管理控制台,提供可视化的配置、测试和监控界面。
|
|
|
|
| 功能模块 | 说明 |
|
|
|---------|------|
|
|
| 助手管理 | 创建、配置、测试智能助手 |
|
|
| 资源库 | LLM / ASR / TTS 等模型管理 |
|
|
| 知识库 | RAG 文档上传与管理 |
|
|
| 历史记录 | 会话日志查询与回放 |
|
|
| 仪表盘 | 实时数据统计 |
|
|
| 调试控制台 | WebSocket 实时测试 |
|
|
|
|
### 2. API 服务 (FastAPI)
|
|
|
|
REST API 后端,处理资源管理、持久化配置和历史数据等控制面能力。
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
subgraph API["API 服务"]
|
|
Router[路由层]
|
|
Service[业务逻辑层]
|
|
Model[数据模型层]
|
|
end
|
|
|
|
Client[客户端] --> Router
|
|
Router --> Service
|
|
Service --> Model
|
|
Model --> DB[(数据库)]
|
|
```
|
|
|
|
**主要职责:**
|
|
|
|
- 助手 CRUD 操作
|
|
- 模型资源管理
|
|
- 知识库管理
|
|
- 会话记录存储
|
|
- 认证与授权
|
|
|
|
### 3. 实时交互引擎 (Engine)
|
|
|
|
处理实时音视频对话、事件流转、模型调用与工具执行。
|
|
|
|
```mermaid
|
|
flowchart TB
|
|
subgraph Engine["实时交互引擎"]
|
|
WS[WebSocket Handler]
|
|
SM[会话管理器]
|
|
|
|
subgraph Pipeline["管线式引擎"]
|
|
VAD[声音活动检测 VAD]
|
|
ASR[语音识别 ASR]
|
|
TD[回合检测 TD]
|
|
LLM[大语言模型 LLM]
|
|
TTS[语音合成 TTS]
|
|
end
|
|
|
|
subgraph Realtime["实时引擎连接"]
|
|
RTOpenAI[OpenAI Realtime]
|
|
RTGemini[Gemini Live]
|
|
RTDoubao[Doubao 实时交互]
|
|
end
|
|
|
|
subgraph Tools["工具"]
|
|
Webhook[Webhook]
|
|
ClientTool[客户端工具]
|
|
Builtin[内建工具]
|
|
end
|
|
end
|
|
|
|
Client[客户端] -->|音频流| WS
|
|
WS --> SM
|
|
SM --> Pipeline
|
|
SM --> Realtime
|
|
Pipeline --> LLM
|
|
LLM --> Tools
|
|
Realtime --> Tools
|
|
Pipeline -->|文本/音频| WS
|
|
Realtime -->|文本/音频| WS
|
|
```
|
|
|
|
### 外部服务与工具
|
|
|
|
| 类别 | 说明 | 可选项 |
|
|
|------|------|--------|
|
|
| **外部模型服务** | Pipeline 引擎各环节依赖的云端或本地服务 | OpenAI、SiliconFlow、DashScope、本地模型 |
|
|
| **实时模型连接** | Realtime 引擎可直接连接的后端 | OpenAI Realtime、Gemini Live、Doubao 实时交互 |
|
|
| **工具系统** | 由助手或引擎调用的外部执行能力 | Webhook、客户端工具、内建工具 |
|
|
|
|
---
|
|
|
|
## 引擎架构
|
|
|
|
### 管线式全双工引擎
|
|
|
|
管线式引擎由 **VAD → ASR → TD → LLM → TTS** 组成。每个环节可替换,适合需要精细控制、工具扩展和较高可解释性的场景。
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant C as 客户端
|
|
participant E as 引擎
|
|
participant VAD as VAD
|
|
participant ASR as 语音识别
|
|
participant TD as 回合检测
|
|
participant LLM as 大语言模型
|
|
participant TTS as 语音合成
|
|
participant Tools as 工具
|
|
|
|
C->>E: 音频流 (PCM)
|
|
E->>VAD: 检测语音活动
|
|
VAD-->>E: 有效语音段
|
|
E->>ASR: 语音转写
|
|
ASR-->>E: 转写文本
|
|
E->>TD: 判断回合边界
|
|
TD-->>E: 可送入 LLM 的输入
|
|
E->>LLM: 生成回复
|
|
LLM->>Tools: 可选:调用工具
|
|
Tools-->>LLM: 工具结果
|
|
LLM-->>E: 回复文本 (流式)
|
|
E->>TTS: 文本转语音
|
|
TTS-->>E: 音频流
|
|
E->>C: 播放音频
|
|
```
|
|
|
|
**特点:**
|
|
|
|
- 各环节可单独替换和优化
|
|
- 便于接入知识库、工具、工作流等能力
|
|
- 延迟通常高于端到端实时模型,但可控性更强
|
|
|
|
### Realtime 引擎
|
|
|
|
Realtime 引擎直接连接端到端实时模型,适合追求更低延迟和更自然多模态交互的场景。
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant C as 客户端
|
|
participant E as 引擎
|
|
participant RT as Realtime Model
|
|
|
|
C->>E: 音频/视频/文本输入
|
|
E->>RT: 实时流输入
|
|
RT-->>E: 流式文本/音频输出
|
|
E->>C: 播放或渲染结果
|
|
```
|
|
|
|
**特点:**
|
|
|
|
- 交互链路更短,延迟更低
|
|
- 更依赖具体模型供应商的能力边界
|
|
- 适合强调自然对话和多模态体验的入口
|
|
|
|
---
|
|
|
|
## 数据流
|
|
|
|
### WebSocket 会话流程
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant C as 客户端
|
|
participant E as 引擎
|
|
participant API as API 服务
|
|
participant DB as 数据库
|
|
|
|
C->>E: 连接 ws://.../ws?assistant_id=xxx
|
|
E->>API: 获取助手配置
|
|
API->>DB: 查询助手
|
|
DB-->>API: 助手数据
|
|
API-->>E: 配置信息
|
|
|
|
C->>E: session.start
|
|
E-->>C: session.started
|
|
E-->>C: config.resolved
|
|
|
|
loop 对话循环
|
|
C->>E: 音频帧 (binary)
|
|
E-->>C: input.speech_started
|
|
E-->>C: transcript.delta
|
|
E-->>C: transcript.final
|
|
E-->>C: assistant.response.delta
|
|
E-->>C: output.audio.start
|
|
E-->>C: 音频帧 (binary)
|
|
E-->>C: output.audio.end
|
|
end
|
|
|
|
C->>E: session.stop
|
|
E->>API: 保存会话记录
|
|
API->>DB: 存储
|
|
E-->>C: session.stopped
|
|
```
|
|
|
|
### 智能打断流程
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant C as 客户端
|
|
participant E as 引擎
|
|
participant TTS as TTS 服务
|
|
|
|
Note over E: 正在播放 TTS 音频
|
|
E->>C: 音频帧...
|
|
|
|
C->>E: 用户说话 (VAD 检测)
|
|
E->>E: 触发打断
|
|
E->>TTS: 停止合成
|
|
E-->>C: output.audio.interrupted
|
|
|
|
Note over E: 处理新的用户输入
|
|
E-->>C: input.speech_started
|
|
```
|
|
|
|
---
|
|
|
|
## 部署形态
|
|
|
|
### 开发环境
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
subgraph Local["本地开发"]
|
|
Web[npm run dev<br/>:3000]
|
|
API[uvicorn<br/>:8080]
|
|
Engine[python main.py<br/>:8000]
|
|
DB[(SQLite)]
|
|
end
|
|
|
|
Web --> API
|
|
Web --> Engine
|
|
API --> DB
|
|
Engine --> API
|
|
```
|
|
|
|
## 技术选型
|
|
|
|
| 组件 | 技术 | 说明 |
|
|
|------|------|------|
|
|
| **前端框架** | React 18 | 管理控制台与调试界面 |
|
|
| **状态管理** | Zustand | 前端轻量状态管理 |
|
|
| **UI 样式** | Tailwind CSS | 快速构建控制台界面 |
|
|
| **后端框架** | FastAPI | 管理接口与配置持久化 |
|
|
| **WebSocket** | websockets | 实时事件与音频流通信 |
|
|
| **数据库** | SQLite / PostgreSQL | 配置与历史数据存储 |
|
|
|
|
---
|
|
|
|
## 相关文档
|
|
|
|
- [产品概览](index.md) - 产品定位、核心模块与适用场景
|
|
- [引擎架构](../concepts/engines.md) - Pipeline 与 Realtime 的选择指南
|
|
- [WebSocket 协议](../api-reference/websocket.md) - 实时对话事件和消息格式
|