语音小伴侣是扣子编程官方推出的低延时语音场景的智能体模板,融合了联网搜索、设备控制、闲聊、低时延等功能,你可以通过复制该模板,创建并定制符合自身业务需求的低延时语音陪伴智能体,尤其适用于对实时性要求较高的场景。
单击体验语音小伴侣智能体模板。
语音小伴侣智能体是专为实时交互场景打造的低延时语音通话智能体模板,适用于智能家居、智能车载、智能客服等场景。凭借其低延时特性,实现毫秒级响应,让语音交互如面对面交流般自然流畅。例如,在智能家居场景中,用户可语音控制灯光、家电;在车载场景中,智能体可帮用户查询路况、播放音乐;在日常陪伴中,能陪用户闲聊、解答问题,成为用户贴心小帮手。
语音小伴侣智能体具备以下能力:
扣子编程支持多种方式搭建语音通话的智能体,以下是各方案的优缺点及适用场景:
|
方案 |
适用场景 |
|---|---|
|
单 Agent(对话流模式) |
|
|
单 Agent(自主规划模式) |
|
|
多 Agents |
|
语音小伴侣模板采用对话流模式编排,主要功能通过对话流实现。对话流的设计思路如下:
建议沿用智能体的对话流模式,仅调整变量参数、开场白和语音的音色即可。
在智能体的编排页面,修改智能体的以下编排配置:
|
配置 |
说明 |
设置方式 |
|---|---|---|
|
变量 |
在记忆 > 变量区域设置变量。本场景中定义了长期记忆所需要的用户画像和用户记忆点变量,在后续对话流中会引用对应的变量。你可以根据需要添加其他变量,具体设置方法请参见变量。 |
|
|
开场白 |
为智能体重新设计开场白,例如:你好呀!我是你的语音小助手,能帮你查天气、控制家电,还能陪你聊天哦~有什么需要帮忙的吗?具体设置方法请参见人设与回复逻辑。 |
|
|
语音的音色 |
智能体默认使用邻家女孩音色,你可以根据需要修改音色。具体设置方法请参见音色。 |
|
对话流的编排详情如下:
根据实际场景,在对话流中调整相应的节点。以下是关键节点的修改说明:
|
节点 |
修改说明 |
示例 |
|---|---|---|
|
意图识别(大模型节点) |
通过开始节点中的用户输入进行意图识别,每一种意图分别对应一个子工作流,通过子工作流进行处理。
说明
|
|
|
获取当前时间(代码节点) |
通过代码获取实时日期,作为后续大模型的输入参数,用于生成当前时间相关的回答。 |
|
|
获取用户画像(文本处理节点) |
在智能体的变量中设置了 |
|
|
获取用户记忆点(文本处理节点) |
在智能体的变量中设置了 |
|
|
闲聊(大模型节点) |
根据实际需求调整闲聊的回复逻辑和风格。 |
|
根据不同的意图,分别设计不同的子工作流,并通过子工作流的调用,实现不同的功能。以下是联网搜索子工作流的设计思路。天气查询、新闻搜索、股票查询等子工作流的实现也类似。
|
节点 |
修改说明 |
示例 |
|---|---|---|
|
搜索词改写(大模型节点) |
|
|
|
插件 |
根据不同的意图,选择合适的插件,例如头条搜索、墨迹天气、新浪财经、头条新闻等。 |
|
|
搜索结果总结(大模型节点) |
用于对插件的搜索结果进行总结。 |
|
|
延时安抚(输出节点) |
联网搜索链路耗时较长,可以在搜索词改写节点前,增加输出节点,流式输出安抚的内容。 说明 安抚内容的结尾需要加标点符号,因为扣子编程语音合成需要识别到断句后才会将文本转换为语音。 |
|
|
输出节点 |
每个子工作流中需要增加输出节点,并开启流式输出。 |
|
由于对话流中不能直接在大模型节点调用端插件,因此通过一个大模型节点抽取出设备控制需要的参数,再通过一个代码节点拼接出完整的插件调用参数,触发插件调用。因为本场景中设备控制的参数较为简单,所以直接通过大模型节点抽取参数即可。
如果设备控制的参数很多,你可以通过 prompt generator 智能体,将 JSON 格式的参数模板发送给智能体,从而快速生成参数抽取提示词。
说明
为了减少 Token 数量,优化响应时间,建议:
|)将它们拼接在一起,以减少输出的 Token 数量。再通过代码节点解析这些参数,生成多个具体的参数值。示例代码如下:
例如抽取场景是:抽取出查询天气的城市和日期
1. 参数提取节点的结果是:深圳|20250101|20250102
2. 代码节点将字符串处理成json
{
"city":"深圳","start_date":"20250101","end_date":"20250102"
}
3. 墨迹天气插件,引用代码节点解析出的字段
本场景通过自定义变量实现更新用户画像和记忆点,而非使用系统自带的长期记忆功能。系统自带的长期记忆功能会在每次查询时触发查询操作,导致响应速度较慢。相比之下,自定义的子工作流采用异步处理方式,不会影响主流程的响应时间。
在拼接用户记忆点节点中,可自定义存储的记忆点数量,默认为 50 条,用户可根据需求进行调整。
parts = point.split(' | ')
while point.count(' | ') > 50:
parts.pop(0)
point = ' | '.join(parts)
修改对话流并调试发布之后,你就可以测试智能体效果并发布智能体。