- 简介
- 入门指南
- 使用 Maestro BPMN 进行构建
- 使用 Maestro Case 构建
- 使用 Maestro Flow 进行构建
- Maestro Automate
- 集成
- 运营
- 监控
- 正在优化
- 参考信息
语音智能体
附加到实时通话并与通话者对话的语音智能体。
操作
将智能体附加到实时电话中并与呼叫者通话。音频直接流式传输到实时语音模型,允许调用者打断智能体语音。直接在节点上配置模型、角色、提示词、工具、上下文锚定索引和升级。
两个调用方向都使用相同的三步形状:
该节点在节点面板的智能体类别中标记为语音智能体。
配置参考
| 字段 | 描述 |
|---|---|
| 模型 | 实时语音模型。 |
| 角色 | 所选模型的语音。 |
| 系统提示 | 智能体的角色、其长期指令以及应如何关闭对话。 |
| 温度 | 截止日期:0、1 |
| 令牌最大数量 | 对话的最大令牌数。 |
| 呼叫上下文 | 此智能体附加到的调用。将其绑定到上游 callContext — 例如 $vars.createOutgoingCall1.output.callContext。 |
输出变量
您可以选择在属性面板的输出部分中配置结构化输出变量。它们可用于设置面向目标的变量或路由变量,以在流内的下游节点中使用。
您声明的每个输出变量将成为智能体输出对象上的一个字段,以 $vars.<agentName>.output.<name> 引用。为每个变量指定名称和类型,然后在变量的说明字段中指示智能体如何填充该字段。输出生成由智能体的系统提示词和输出变量描述共同驱动。
智能体会在结束语音会话时填充这些字段。
两种最常见的用途是通话摘要和交接。对于摘要,请声明输出(例如 call_summary),并使用其描述告诉智能体总结调用。智能体在结束会话时会写入该字段,下游节点将其读取为 $vars.voiceAgent1.output.call_summary。
工具
将工具连接到工具句柄,为智能体提供在推理时可以调用的功能。智能体在其循环中决定是否以及何时调用每个已连接的工具。每个工具都带有描述,告诉智能体该工具的用途,因此请在工具公开时编写清晰的描述。
为语音智能体设计工具时:
- 调用者会在每次工具调用期间处于等待状态,因此请保持每个工具的作业任务小而速度快。
- 智能体在同一轮中调用的工具一起返回——最慢的工具设置了调用者听到静默的时长。
- 超时后,智能体可能会报告失败并重试,因此请为工具设为幂等。在 180 秒内未返回的工具调用将超时。
工具可用性
| 工具类别 | 可用性 |
|---|---|
| RPA 流程 | 可用 |
| API 工作流 | 可用 |
| Activities (活动) | 可用 |
| 其他流程 (Maestro) | 可用 |
| Process Orchestration | 可用 |
| 编码函数 | 可用 |
| 智能体(调用已发布的独立智能体) | 可用 |
| Integration Service 连接器 | 可用 |
| 上下文锚定索引 | 可用 |
| 内置工具(分析文件、Deep RAG、批量转换) | 不可用 |
| 升级 | 不可用 |
| 模型上下文协议 (MCP) 工具 | 不可用 |
| A2A(智能体到智能体) | 不可用 |
| IXP(文档提取) | 不可用 |
内置语音工具
每个语音智能体都可以访问两个内置工具。这些内容已包含在流画布中,但未显示:
- 双音多频率 (DTAF) 工具:用于按下电话键盘上的数字,这些键盘可用于导航外部电话树
- 结束会话:用于在不结束通话的情况下退出对话。适用于语音智能体交接。
工具防护机制
工具级护栏设置在连接到语音代理节点的工具上。您可以筛选或阻止工具的输入参数。在附加到语音代理工具句柄的工具上配置防护栏。请参阅工具防护机制。
交接
结束语音会话不同于结束通话。当智能体结束会话时,它会退出通话,但保持线路开启:智能体填充其输出变量,并且流会移至下一个节点。只有结束调用节点和调用者可以挂断通话。
这就是使交接成为可能的原因。链接语音智能体节点,并将其全部绑定到同一个调用上下文。每个智能体在完成后结束自己的会话,并且只有最后一个路径到达“结束调用” ,因此调用者将始终保持在线状态。
交接包含两个部分:
- 路由到正确的智能体。为第一个智能体提供一个输出变量(例如
handoff),并使用其描述告知智能体要设置哪个值。使用切换节点对该值进行分支,因此每个案例都会指向处理它的智能体。 - 转移上下文。接收智能体对先前所述的内容一无了解。在其系统提示词 (
$vars.voiceAgent1.output.call_summary) 中引用第一个智能体的调用摘要输出,或者在分支上添加一个“获取对话上下文”节点并引用副本。请参阅通话记录。
不支持将呼叫移交给人员。没有实时调用转接。
通话记录
要在调用后读取副本,请打开调试执行追踪记录或Orchestrator 作业追踪记录。请参阅可观察性。
要在流程中使用副本:
- 添加一个“获取对话上下文”节点。
- 传递
$vars.<incomingOrOutgoingCallNodeId>.output.callContext.conversationId。例如,<incomingOrOutgoingCallNodeId>可以是createOutgoingCall1。 - 将副本引用为
$vars.<getConversationContextNodeId>.output.conversationContext.messages。例如,getConversationContextNodeId可以是getConversationContext1。
例如,您可以将副本传递给自主智能体进行处理:
常见问题
智能体正常对话,但从不运行工具。Orchestrator 文件夹中不包含分配了无服务器计算机的无人值守或默认机器人,因此每次工具调用都将作为错误返回,而智能体会保持对话。将机器人添加到文件夹中,然后再次调用。请参阅Orchestrator 文件夹要求。
调用在对话完成之前结束,但没有错误。智能体在对话中结束了自己的会话,流程转到“结束调用” 。这可能是一个提示问题,语音智能体认为它已完成对呼叫者的帮助,并决定结束会话。
智能体停止运行或生成静态读取数字字符串。在 Gemini Live温度为0时,长数字字符串可能会停止运行或声音失真。略微提高温度。如果问题仍然存在,请尝试其他模型。
智能体附加失败,显示工具架构错误。Gemini 模型接受的架构子集范围较小。展平工具的输入架构,或使用平面输入架构将工具包装在 API 工作流中,并将工作流用作工具。