# 核心概念

本章节介绍 Realtime Agent Studio 中的核心概念，帮助你更好地理解和使用平台。

---

## 概念总览

```mermaid
flowchart TB
    subgraph Platform["RAS 平台"]
        Assistant[助手 Assistant]
        
        subgraph Resources["资源库"]
            LLM[LLM 模型]
            ASR[ASR 模型]
            TTS[TTS 声音]
            KB[知识库]
        end
        
        subgraph Engine["交互引擎"]
            Pipeline[管线式引擎]
            Multimodal[多模态引擎]
        end
        
        Session[会话 Session]
    end

    Assistant --> LLM
    Assistant --> ASR
    Assistant --> TTS
    Assistant --> KB
    Assistant --> Engine
    Engine --> Session
```

---

## 助手 (Assistant)

**助手**是 RAS 的核心实体，代表一个可对话的 AI 智能体。

### 助手配置

每个助手包含以下配置：

| 配置项 | 说明 |
|-------|------|
| **名称** | 助手的显示名称 |
| **系统提示词** | 定义助手角色、行为、限制 |
| **LLM 模型** | 选择用于生成回复的大语言模型 |
| **ASR 模型** | 选择用于语音识别的模型 |
| **TTS 声音** | 选择用于语音合成的音色 |
| **工具** | 配置助手可调用的外部工具 |
| **知识库** | 关联的知识库（用于 RAG） |

### 助手生命周期

```mermaid
stateDiagram-v2
    [*] --> Draft: 创建
    Draft --> Draft: 编辑配置
    Draft --> Published: 发布
    Published --> Draft: 取消发布
    Published --> Published: 更新配置
    Published --> [*]: 删除
```

---

## 会话 (Session)

**会话**代表一次完整的对话交互，从用户连接到断开。

### 会话状态

```mermaid
stateDiagram-v2
    [*] --> Connecting: WebSocket 连接
    Connecting --> Started: session.started
    Started --> Active: 对话中
    Active --> Active: 多轮对话
    Active --> Stopped: session.stop
    Stopped --> [*]: 连接关闭
```

### 会话数据

每个会话记录包含：

- **基本信息** - ID、时长、时间戳
- **音频数据** - 用户和助手的音频记录
- **转写文本** - ASR 识别结果
- **LLM 交互** - 输入输出和工具调用
- **元数据** - 渠道、来源、自定义变量

---

## 管线式引擎 vs 多模态引擎

RAS 支持两种引擎架构，适用于不同场景。

### 管线式引擎 (Pipeline)

将语音交互拆分为三个独立环节：

```
用户语音 → [ASR] → 文本 → [LLM] → 回复 → [TTS] → 助手语音
```

**优点：**

- 灵活选择各环节供应商
- 可独立优化每个环节
- 成本可控

**缺点：**

- 延迟较高（累加延迟）
- 需要协调多个服务

### 多模态引擎 (Multimodal)

使用端到端模型直接处理：

```
用户语音 → [Realtime Model] → 助手语音
```

**优点：**

- 更低延迟
- 更自然的语音
- 架构简单

**缺点：**

- 依赖特定供应商
- 成本较高
- 可定制性有限

### 选择建议

| 场景 | 推荐引擎 |
|------|---------|
| 成本敏感 | 管线式 |
| 延迟敏感 | 多模态 |
| 需要特定 ASR/TTS | 管线式 |
| 追求最自然体验 | 多模态 |

---

## 智能打断 (Barge-in)

**智能打断**是指用户在助手说话时可以随时插话，系统能够：

1. 检测用户开始说话
2. 立即停止 TTS 播放
3. 处理用户新的输入

### 打断检测方式

| 方式 | 说明 |
|------|------|
| **VAD** | Voice Activity Detection，检测到声音活动即打断 |
| **语义** | 基于语音内容判断是否有意义的打断 |
| **混合** | VAD + 语义结合，减少误触发 |

### 打断流程

```mermaid
sequenceDiagram
    participant User as 用户
    participant Engine as 引擎
    participant TTS as TTS

    Note over Engine,TTS: 助手正在播放回复
    Engine->>User: 音频流...
    User->>Engine: 开始说话 (VAD 触发)
    Engine->>Engine: 打断判断
    Engine->>TTS: 停止合成
    Engine->>User: output.audio.interrupted
    Note over Engine: 处理新输入
```

---

## 工具调用 (Tool Calling)

助手可以通过**工具**扩展能力，访问外部系统或执行特定操作。

### 工具类型

| 类型 | 说明 | 示例 |
|------|------|------|
| **Webhook** | 调用外部 HTTP API | 查询订单、预约日程 |
| **客户端** | 由客户端执行的操作 | 打开页面、显示表单 |
| **内置** | 平台提供的工具 | 代码执行、计算器 |

### 工具调用流程

```mermaid
sequenceDiagram
    participant User as 用户
    participant LLM as LLM
    participant Tool as 工具

    User->>LLM: "帮我查一下订单状态"
    LLM->>LLM: 决定调用工具
    LLM->>Tool: get_order_status(order_id)
    Tool-->>LLM: {status: "已发货"}
    LLM->>User: "您的订单已发货"
```

---

## 知识库 (Knowledge Base)

**知识库**让助手能够基于私有文档回答问题，实现 RAG（检索增强生成）。

### 工作原理

```mermaid
flowchart LR
    subgraph Indexing["索引阶段"]
        Doc[文档] --> Chunk[分块]
        Chunk --> Embed[向量化]
        Embed --> Store[(向量数据库)]
    end

    subgraph Query["查询阶段"]
        Q[用户问题] --> QEmbed[问题向量化]
        QEmbed --> Search[相似度搜索]
        Store --> Search
        Search --> Context[相关上下文]
        Context --> LLM[LLM 生成回答]
    end
```

### 支持的文档格式

- PDF
- Word (.docx)
- Markdown
- 纯文本
- HTML

---

## 动态变量

**动态变量**允许在运行时向助手注入上下文信息。

### 使用方式

在系统提示词中使用 `{{variable}}` 占位符：

```
你是{{company_name}}的客服助手。
当前用户是{{customer_name}}，会员等级为{{tier}}。
```

连接时通过 `dynamicVariables` 传入：

```json
{
  "type": "session.start",
  "metadata": {
    "dynamicVariables": {
      "company_name": "ABC 公司",
      "customer_name": "张三",
      "tier": "VIP"
    }
  }
}
```

---

## 下一步

- [快速开始](../quickstart/index.md) - 创建第一个助手
- [助手配置](../assistants/configuration.md) - 详细配置说明
- [WebSocket 协议](../api-reference/websocket.md) - API 接口详情
