- Corrected phrasing in the introduction of RAS as an open-source alternative. - Added new documentation sections for voice AI and voice agents. - Enhanced the flowchart for assistant components to include detailed configurations. - Updated terminology for engine types to clarify distinctions between Pipeline and Realtime engines. - Introduced a new section on user utterance endpoints (EoU) to explain detection mechanisms and configurations.
5.1 KiB
5.1 KiB
助手概念详解
深入了解助手(Assistant)的设计理念和配置细节。
什么是助手?
助手是 RAS 中的核心实体,代表一个具有特定角色、能力和行为的 AI 对话智能体。每个助手都是独立配置的,可以服务于不同的业务场景。
助手的组成
flowchart
subgraph Assistant["助手"]
direction TB
Prompts[指令配置]
Audio[语音配置]
Interaction[交互配置]
tool[工具配置]
knowledge[知识配置]
webhooks[webhooks]
end
subgraph Prompts
Name[名称]
Prompt[提示词]
Opener[开场白]
end
subgraph Audio
LLM[LLM 模型]
ASR[ASR 模型]
TTS[TTS 声音]
end
subgraph Interaction
Tools[工具调用]
KB[知识库]
end
subgraph tool
Greeting[开场白]
Interruption[打断设置]
Output[输出模式]
end
subgraph knowledge
Greeting[开场白]
Interruption[打断设置]
Output[输出模式]
end
subgraph webhooks
Greeting[开场白]
Interruption[打断设置]
Output[输出模式]
end
身份定义
系统提示词
系统提示词是助手最重要的配置,它定义了:
| 要素 | 说明 | 示例 |
|---|---|---|
| 角色 | 助手扮演什么身份 | "你是一名专业的医疗咨询顾问" |
| 能力 | 助手能做什么 | "你可以回答健康问题,但不能开具处方" |
| 限制 | 助手不能做什么 | "不要讨论政治话题" |
| 风格 | 回复的语气和格式 | "保持友好专业,回答简洁" |
提示词模板
## 角色
你是{{company}}的智能客服助手"小智"。
## 任务
- 回答用户关于产品和服务的问题
- 协助处理订单查询和售后问题
- 收集用户反馈
## 限制
- 不讨论竞争对手产品
- 不承诺超出权限的优惠
- 遇到复杂问题引导用户联系人工客服
## 风格
- 语气友好亲切
- 回答简洁明了,每次 2-3 句话
- 适当使用语气词使对话更自然
模型配置
LLM 模型
大语言模型是助手的"大脑",负责理解用户意图和生成回复。
| 参数 | 说明 | 建议值 |
|---|---|---|
| 温度 | 回复随机性,越高越发散 | 0.7 (对话) / 0.3 (问答) |
| 最大 Token | 单次回复长度上限 | 256-512 |
| 上下文长度 | 记忆的对话轮数 | 10-20 轮 |
ASR 模型
语音识别模型将用户语音转为文字。
| 配置 | 说明 |
|---|---|
| 语言 | 识别语言,如中文、英文 |
| 热词 | 提高特定词汇识别率 |
| 标点 | 是否自动添加标点 |
TTS 声音
语音合成将助手回复转为语音输出。
| 配置 | 说明 |
|---|---|
| 音色 | 选择声音角色 |
| 语速 | 说话速度,0.5-2.0 |
| 音调 | 声音高低 |
能力扩展
工具调用
通过工具让助手能够执行外部操作:
flowchart LR
User[用户] -->|"查询订单"| Assistant[助手]
Assistant -->|调用工具| API[订单 API]
API -->|返回数据| Assistant
Assistant -->|回复| User
工具定义示例:
{
"name": "get_order_status",
"description": "查询用户订单状态",
"parameters": {
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "订单编号"
}
},
"required": ["order_id"]
}
}
知识库关联
让助手基于私有文档回答问题:
flowchart LR
Question[用户问题] --> Search[知识检索]
Search --> KB[(知识库)]
KB --> Context[相关内容]
Context --> LLM[LLM]
LLM --> Answer[回答]
行为控制
开场白设置
| 模式 | 说明 |
|---|---|
| 助手先说 | 连接后助手主动问候 |
| 用户先说 | 等待用户开口 |
| 静默 | 不自动开场 |
打断设置
| 选项 | 说明 |
|---|---|
| 允许打断 | 用户可随时插话 |
| 禁止打断 | 助手说完才能输入 |
| 灵敏度 | 打断触发的敏感程度 |
输出模式
| 模式 | 说明 |
|---|---|
| 语音 | TTS 语音输出 |
| 文本 | 纯文本输出 |
| 混合 | 同时输出语音和文本 |
最佳实践
1. 提示词工程
- 明确角色: 清晰定义助手身份
- 设定边界: 明确能做什么、不能做什么
- 控制长度: 语音场景下回复要简短
2. 模型选择
- 平衡成本与效果: 不一定需要最强模型
- 测试不同供应商: 找到最适合场景的组合
- 考虑延迟: 语音交互对延迟敏感
3. 工具设计
- 单一职责: 每个工具做一件事
- 清晰描述: 让 LLM 正确理解何时调用
- 错误处理: 工具失败时优雅降级