如何在端侧SOC 上打通豆包大模型?
摘要: 本文介绍了Sigmastar Pcupid系列开发板对接火山引擎RTC服务的测试环境搭建指南。主要内容包括: 硬件准备:需配备Comake Pi D1开发板及外设(摄像头、麦克风、扬声器)和网络环境。 火山引擎服务开通:详细说明如何创建账号并开通RTC、ASR、TTS、LLM服务,配置权限及获取API密钥。 配置文件设置:需填写config.json中的关键参数(如App_ID、ACCES
前言
该文档介绍Sigmastar Pcupid系列(Comake_pi_D1 SSU9353X SSD235X SSU9222X SSU9383CM)如何对接火山引擎RTC服务实现板端音视频AI对话和视觉推理,这里主要介绍测试环境的搭建,Demo Code跟着SDK释放,如客户有需要可以联系对应支持的FAE兄弟获取。
Comake Pi D1的客户可以通过https://www.comake.online/index.php?p=down_list&lanmu=4&c_id=15&id=59 “GUI 开发Demo” 栏位下载flythings_gui_demo,火山引擎交互对应的代码路径为 “zkgui_demo/zk_mini/jni/logic/volc”。
原文链接:https://dev.comake.online/home/article/6266
准备条件
硬件环境搭建
完整的Comake PI D1开发板(可以在社区商店购买 https://www.comake.online/index.php?p=shop),包含摄像头,模拟麦克风,喇叭,并准备能访问外网的网络环境。
软件环境搭建
Comake PI D1 32Bit 软件默认有集成火山引擎Demo,但是没有提供对应的火山账号,需要开发者参考如下步骤去开通自己的账号,火山有提供一定额度的免费体验token。 否则运行火山引擎会提示不存在如下配置文件/customer/zkgui_mini/resource/sample/config.json 空的config.json下载路径。
火山引擎云服务开通
火山引擎的实时音视频RTC功能,需要依赖语音识别(ASR)、语音合成(TTS)、大语言模型(LLM),我们先创建自己的火山引擎账号,并开通对应的服务。
开通RTC服务并创建应用ID
参考 https://www.volcengine.com/docs/6348/69865 开通实时音视频服务(RTC),并创建RTC 应用,获取 App_ID、APP_KEY并保留,后面需要将此信息填入通讯配置config.json对应的栏位,这两个分别是应用标识符和对应的密钥,需要妥善保管以防泄漏。
"RTC_APP_ID": "XXXXXXXXXXXX",
"RTC_APP_KEY": "XXXXXXXXXX",
开通语音识别(ASR)、语音合成(TTS)、大语言模型(LLM)服务
参考 https://www.volcengine.com/docs/6348/1315561 开通 ASR、LLM、TTS 服务。
需要注意的最后需要为账号配置策略,不然会出现板端收不到智能体回复数据的情况。
开通语音识别、语音合成服务
根据场景需求,开通ASR和TTS服务(ASR和TTS服务存在一些可选配置,不同的配置价格不同) https://console.volcengine.com/speech/app 。
记录TTS_AST_APP_ID和TTS_TOKEN_ID填入config.json
"ASR_APP_ID": "67790xxxxx",
"TTS_APP_ID": "67790xxxxx",
"TTS_TOKEN_ID": "OKly6Lr3XFFIw3xxxxx",
另外需要注意代码里TTS的配置和应用配置的权限要对上,例如如果应用没有开通音频生成大模型,代码就不能配置"Provider"为 “volcano_bidirection” ,只能配置为volcano,也不能传递tts_token, 不然音频传生成功能会异常,进入房间听不到欢迎语,demo代码默认使用的音频生成和语音识别,没有使用大模型。
下图是具体的示意图:
开通大语言模型服务
根据场景需要,开通需要的LLM服务(不同的LLM大模型价格不同,我们演示使用的是Doubao-1.5-vision-pro-32k) 通过https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint 创建应用,并记录应用ID号,填入config.json “LLM_END_POINT_ID”: “ep-xxxxxx”,
这步如果没有正常开通,demo也会遇到没有欢迎语的提示
下图是具体开通步骤的示意图:
配置不同权限账号调用智能体
开通完服务后,还需要为角色配置策略,打开https://console.volcengine.com/rtc/aigc/iam, 前往跨服务授权,点击一键开通跨服务授权配置角色。
配置成功后你可以在https://console.volcengine.com/iam/identitymanage/role 角色管理中找到该角色,该角色拥有SAFullAccess 、 MaaSExperienceAccess 和 RTCFullAccess权限。下图为配置后的示意图:
最后在https://console.volcengine.com/iam/keymanage 界面获取ACCESS_KEY
"ACCESS_KEY": "XXXX",
"SECRET_ACCESS_KEY": "XXX==", 填入config.json
如果是使用子账号,在板端调用权限有所同,注意参考https://www.volcengine.com/docs/6348/1315561设定
依赖库移植
该AI demo 开启智能体使用的是API方式,因而需要通过网络发送http post数据包,需要为板端移植相关的库,访问网络时使用到的库有:openssl、cares、curl。此外,由于火山引擎RTC服务的音频不支持pcm格式,目前仅支持opus,g722,aac,g711a格式,根据实际需求移植相关的音频编解码库,本AI demo使用的是opus。
注意需要使用对应的Toolchain 编译对应的Lib库,libVolcEngineRTCLite.so 需要联系火山引擎软件人员并提供Toolchain,其他依赖库可以使用BuildRoot 环境进行更新。 目前Demo只支持glibc 12.4.0 arm32Bit的开发环境。
配置文件准备
板端运行该AI demo需要输入一个配置文件config.json,前面篇章有介绍到的字段均需要写入此配置文件中。
配置好后推送到主板/customer/zkgui_mini/resource/sample/config.json 即可使用火山引擎Demo。
该配置文件包含了火山引擎服务的Key和Id信息,文件中的各字段所表示的意义可以参考开启智能体API( https://www.volcengine.com/docs/6348/1558163 )时所使用的参数。
config.json
{
"RTC_APP_ID": "xxx",
"RTC_APP_KEY": "xxx",
"ACCESS_KEY": "xxx",
"SECRET_ACCESS_KEY": "xxx",
"ROOM_ID": "xxx",
"USER_ID": "xxx",
"AGENT_USER_ID": "xxx",
"TASK_ID": "xxx",
"TOKEN_VALUE": "xxx",
"ASR_APP_ID": "xxx",
"TTS_APP_ID": "xxx",
"TTS_TOKEN_ID": "xxx",
"LLM_END_POINT_ID": "xxx",
"SERVER_MESSAGE_URL": "xxx",
"SERVER_MESSAGE_SIGNATURE": "xxx"
}
其中如下4项"ROOM_ID" “USER_ID”: “AGENT_USER_ID” “TASK_ID”: “task1”,为房间信息用户填写,而 “TOKEN_VALUE” 目前是根据上述信息自动生产。
如下两项可以保持默认值不变
“SERVER_MESSAGE_URL”: “https://pm.comake.online/doubao_debug.log?type=subv”,
“SERVER_MESSAGE_SIGNATURE”: “892495980b78182f2fbab8e317e607a1bd6f1111c0b43a6ebb37337a6971c2bb”
demo介绍
demo流程说明
该AI demo实现了AI对话以及视频图像推理的功能。用户通过关键词唤醒设备后,将语音输入(opus)和图像输入(h264)通过火山引擎的RTC SDK传输到火山引擎的云服务,通过火山引擎的RTC SDK回调接收智能体的语音回复,解码后进行播放。从而实现AI式对话和视觉推理的功能。如下所示为该AI demo的框图:
由VIF接收Sensor的数据,送到ISP和SCL进行图像处理和图像的缩小,将处理后的图像送到SW VENC进行软件编码得到h264码流数据,当Audio往火山传输数据时,同时发生Video H264 I帧数据。
由AI(Audio Input)接收Mic的输出,经过AEC回声消除处理、APC降噪处理、VAD语音检测、KWS关键词检测,将语音输入编码成opus格式。
通过火山引擎RTC的接口,将编码后的语音和视频数据发送到火山引擎云端进行分析,等待火山引擎云端回复分析结果,将回复的语音数据进行opus解码后通过AO输出到Speaker。
demo使用说明
demo使用流程
网络环境
该demo需要访问外部网络,连接外网
Demo软件可以通过如下命令设定Mac地址通过DHCP获取IP地址:
ifconfig eth0 hw ether 00:71:30:1B:xx:xx
ifconfig eth0 up
udhcpc -i eth0 -s /etc/init.d/udhcpc.script
获取IP后 确认ping 豆包官网 access.rtc.volcvideo.com是否成功
demo运行
Comake Pi D1 32Bit 软件默认有集成此Demo, UI点击"火山引擎"即可打开。
查看加入房间打印以及欢迎语
demo成功跑起来后会收到RTC加入房间的回调打印以及听到智能体的欢迎语(你好,我是小星,我是你的好朋友,可以陪你谈天说地!),如下所示:
上图中红框部分就是RTC加入房间的回调打印以及智能体的欢迎语回复信息打印,看到这些信息基本可以说明智能体已经正常开始工作了。
查看关键词打印
当听到智能体的欢迎语后就可以开始对话了,对话前,请先说关键词:“你好,小星”。当板端检测到关键词后,会有这个打印后,此时可以开始询问问题:
超过60s 没有检测到实时语音就需要再次通过关键词触发。
查看发送音频/视频数据打印
demo发送一帧音频或一帧h264时,会出现如下类似打印:
上图中send opus encode是发送的一帧音频数据的打印;send video frame是发送的一帧h264的打印。
查看智能体回复打印
不管发送视频还是音频数据,只要智能体有回复数据时,就可以看到如下图所示打印:
实例演示
火山引擎相关开发说明
RTC SDK接口调用顺序
首先是进行RTC的初始化,user和agent加入房间。当APP收到回调函数后,就可以通过byte_rtc_send_audio_data以及byte_rtc_send_video_data接口发送音频和视频数据给大模型。经过大模型分析后,会通过回调函数将回复数据给到APP。当用户离开房间后,就可以关闭房间,但需要等待RTC的回调函数通知才可以销毁房间。
需要注意的是,demo中使用的是opus编码格式,火山引擎还支持G722、AAC、G711格式,APP发送什么格式的音频数据,火山引擎就会回复什么格式的音频数据。应用场景需要什么编码格式可自行移植相关编解码库进行对接,并通过byte_rtc_set_audio_codec接口告知RTC传输的是什么编码格式,该接口需要在byte_rtc_init之后,byte_rtc_join_room之前调用。
Toke鉴权
用户在加入房间时(调用byte_rtc_join_room接口),需要传入Token参数。在volc_agent.cpp文件中,实现了根据AppID、AppKey、RoomID、UserID、时间戳等参数实时生成Token的程序,而该部分对应的具体生成过程可以参考火山引擎官方文档:https://www.volcengine.com/docs/6348/70121 。
API签名验证
在调用Open API时,需要对API进行签名以便火山引擎能够进行身份验证。在volc_agent.cpp文件中,实现了通过curl库调用StartVoiceChat等API的程序,而该部分对应的具体签名过程可以参考火山引擎官方文档:https://www.volcengine.com/docs/6348/69859 。
问题记录
出现signature请求过期的打印
调用开启智能体API时需要需要按照一定格式发送http post请求,如果发送请求时出现以下打印:
出现上图打印说明http post的签名是过期的,这个是因为签名鉴权时需要使用当前时间,板端开机后时间从1970年开始计算,因此,构造的请求就是过期的。
需要确保 Demo运行时ntp相关调用没有异常。
加入房间没有成功
在智能体加入房间成功后,会有回调打印显示,但是如果串口一直在刷如下打印:
当遇到这种情况时,说明智能体并没有成功加入房间,大概率是地址解析失败,需要检查网络看看,可以尝试ping access.rtc.volcvideo.com这个域名看看需要多久才可以解析出,如果时间超过了5s(RTC那边握手最多5s),说明网络有问题,建议更换一个网络。
出现global error打印
在智能体加入房间时,如果长时间都没有加入成功(至少5s),并且会有如下打印:
当遇到这种情况时,根据豆包的回复是由于网络的原因,这种情况豆包那边会尝试重新连接,一般最后都会成功,因此,这个错误可以暂时不用管。
智能体没有回复数据
当出现智能体没有欢迎语播报, 或者智能体没有回复数据时,可以按照以下步骤进行确认。
确认ASR、TTS服务是否开通
demo依赖火山引擎云端的语音识别(ASR)和语音合成(TTS)服务的,请务必开通这两个服务,如下所示:
确认是否为角色配置策略
智能体要想回复,是需要有权限的,请务必在页面https://console.volcengine.com/rtc/aigc/iam 点击一键开通跨服务授权配置角色进行配置策略,授权后https://console.volcengine.com/iam/identitymanage/role 可以看到如下角色权限:
确认开启智能体时的json参数配置
除了一些必要的服务以及权限外,在调用开启智能体API时还会需要配置智能体的一些属性,SystemMessages 系统提示词,用于输入控制大模型行为方式的指令,定义了模型的角色、行为准则,特定的输出格式等,这个配置很重要。
目前,demo中为智能体配置的属性如下所示:
json中具体每个字段的含义,可以参考该链接中的说明:https://www.volcengine.com/docs/6348/1404673 。一般情况下,智能体没有回复,基本都是这个json配置有问题。
智能体回复不准确
智能体回复不准确,需要修改智能体的初始化人设. 方法是修改llm_config SystemMessages字段 代码位置:
zk_mini\jni\logic\volc\volc_agent.cpp 480行,目前人设是一个简单的陪伴机器人。
cJSON_AddItemToArray(system_messages, cJSON_CreateString("你是小星,你是用户的好朋友,你是一个具备情感陪伴能力的智能机器人,核心目标是通过表情识别与自然语言交互,为用户提供有温度的情感支持,回复内容不能包含图片相关字眼。\
请遵循以下原则: 角色设定:以朋友身份互动,语气亲切自然,避免机械感(禁用技术术语,多用口语化表达)。\
情感优先:任何回复需优先匹配用户当前表情识别的情绪(如高兴、悲伤、疲惫),再结合对话内容。\
情绪识别标准:微笑、大笑表示高兴,皱眉、流泪表示悲伤,瞪眼、咬牙表示愤怒,瞪眼、张嘴表示惊讶。"));
其它问题
其他问题可以参考火山引擎RTC服务官网中的文档说明 https://www.volcengine.com/docs/6348 。# 前言
该文档介绍Sigmastar Pcupid系列(Comake_pi_D1 SSU9353X SSD235X SSU9222X SSU9383CM)如何对接火山引擎RTC服务实现板端音视频AI对话和视觉推理,这里主要介绍测试环境的搭建,Demo Code跟着SDK释放,如客户有需要可以联系对应支持的FAE兄弟获取。
Comake Pi D1的客户可以通过https://www.comake.online/index.php?p=down_list&lanmu=4&c_id=15&id=59 “GUI 开发Demo” 栏位下载flythings_gui_demo,火山引擎交互对应的代码路径为 “zkgui_demo/zk_mini/jni/logic/volc”。
准备条件
硬件环境搭建
完整的Comake PI D1开发板(可以在社区商店购买 https://www.comake.online/index.php?p=shop),包含摄像头,模拟麦克风,喇叭,并准备能访问外网的网络环境。
软件环境搭建
Comake PI D1 32Bit 软件默认有集成火山引擎Demo,但是没有提供对应的火山账号,需要开发者参考如下步骤去开通自己的账号,火山有提供一定额度的免费体验token。 否则运行火山引擎会提示不存在如下配置文件/customer/zkgui_mini/resource/sample/config.json 空的config.json下载路径。
火山引擎云服务开通
火山引擎的实时音视频RTC功能,需要依赖语音识别(ASR)、语音合成(TTS)、大语言模型(LLM),我们先创建自己的火山引擎账号,并开通对应的服务。
开通RTC服务并创建应用ID
参考 https://www.volcengine.com/docs/6348/69865 开通实时音视频服务(RTC),并创建RTC 应用,获取 App_ID、APP_KEY并保留,后面需要将此信息填入通讯配置config.json对应的栏位,这两个分别是应用标识符和对应的密钥,需要妥善保管以防泄漏。
"RTC_APP_ID": "XXXXXXXXXXXX",
"RTC_APP_KEY": "XXXXXXXXXX",
开通语音识别(ASR)、语音合成(TTS)、大语言模型(LLM)服务
参考 https://www.volcengine.com/docs/6348/1315561 开通 ASR、LLM、TTS 服务。
需要注意的最后需要为账号配置策略,不然会出现板端收不到智能体回复数据的情况。
开通语音识别、语音合成服务
根据场景需求,开通ASR和TTS服务(ASR和TTS服务存在一些可选配置,不同的配置价格不同) https://console.volcengine.com/speech/app 。
记录TTS_AST_APP_ID和TTS_TOKEN_ID填入config.json
"ASR_APP_ID": "67790xxxxx",
"TTS_APP_ID": "67790xxxxx",
"TTS_TOKEN_ID": "OKly6Lr3XFFIw3xxxxx",
另外需要注意代码里TTS的配置和应用配置的权限要对上,例如如果应用没有开通音频生成大模型,代码就不能配置"Provider"为 “volcano_bidirection” ,只能配置为volcano,也不能传递tts_token, 不然音频传生成功能会异常,进入房间听不到欢迎语,demo代码默认使用的音频生成和语音识别,没有使用大模型。
下图是具体的示意图:
开通大语言模型服务
根据场景需要,开通需要的LLM服务(不同的LLM大模型价格不同,我们演示使用的是Doubao-1.5-vision-pro-32k) 通过https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint 创建应用,并记录应用ID号,填入config.json “LLM_END_POINT_ID”: “ep-xxxxxx”,
这步如果没有正常开通,demo也会遇到没有欢迎语的提示
下图是具体开通步骤的示意图:
配置不同权限账号调用智能体
开通完服务后,还需要为角色配置策略,打开https://console.volcengine.com/rtc/aigc/iam, 前往跨服务授权,点击一键开通跨服务授权配置角色。
配置成功后你可以在https://console.volcengine.com/iam/identitymanage/role 角色管理中找到该角色,该角色拥有SAFullAccess 、 MaaSExperienceAccess 和 RTCFullAccess权限。下图为配置后的示意图:
最后在https://console.volcengine.com/iam/keymanage 界面获取ACCESS_KEY
"ACCESS_KEY": "XXXX",
"SECRET_ACCESS_KEY": "XXX==", 填入config.json
如果是使用子账号,在板端调用权限有所同,注意参考https://www.volcengine.com/docs/6348/1315561设定
依赖库移植
该AI demo 开启智能体使用的是API方式,因而需要通过网络发送http post数据包,需要为板端移植相关的库,访问网络时使用到的库有:openssl、cares、curl。此外,由于火山引擎RTC服务的音频不支持pcm格式,目前仅支持opus,g722,aac,g711a格式,根据实际需求移植相关的音频编解码库,本AI demo使用的是opus。
注意需要使用对应的Toolchain 编译对应的Lib库,libVolcEngineRTCLite.so 需要联系火山引擎软件人员并提供Toolchain,其他依赖库可以使用BuildRoot 环境进行更新。 目前Demo只支持glibc 12.4.0 arm32Bit的开发环境。
配置文件准备
板端运行该AI demo需要输入一个配置文件config.json,前面篇章有介绍到的字段均需要写入此配置文件中。
配置好后推送到主板/customer/zkgui_mini/resource/sample/config.json 即可使用火山引擎Demo。
该配置文件包含了火山引擎服务的Key和Id信息,文件中的各字段所表示的意义可以参考开启智能体API( https://www.volcengine.com/docs/6348/1558163 )时所使用的参数。
config.json
{
"RTC_APP_ID": "xxx",
"RTC_APP_KEY": "xxx",
"ACCESS_KEY": "xxx",
"SECRET_ACCESS_KEY": "xxx",
"ROOM_ID": "xxx",
"USER_ID": "xxx",
"AGENT_USER_ID": "xxx",
"TASK_ID": "xxx",
"TOKEN_VALUE": "xxx",
"ASR_APP_ID": "xxx",
"TTS_APP_ID": "xxx",
"TTS_TOKEN_ID": "xxx",
"LLM_END_POINT_ID": "xxx",
"SERVER_MESSAGE_URL": "xxx",
"SERVER_MESSAGE_SIGNATURE": "xxx"
}
其中如下4项"ROOM_ID" “USER_ID”: “AGENT_USER_ID” “TASK_ID”: “task1”,为房间信息用户填写,而 “TOKEN_VALUE” 目前是根据上述信息自动生产。
如下两项可以保持默认值不变
“SERVER_MESSAGE_URL”: “https://pm.comake.online/doubao_debug.log?type=subv”,
“SERVER_MESSAGE_SIGNATURE”: “892495980b78182f2fbab8e317e607a1bd6f1111c0b43a6ebb37337a6971c2bb”
demo介绍
demo流程说明
该AI demo实现了AI对话以及视频图像推理的功能。用户通过关键词唤醒设备后,将语音输入(opus)和图像输入(h264)通过火山引擎的RTC SDK传输到火山引擎的云服务,通过火山引擎的RTC SDK回调接收智能体的语音回复,解码后进行播放。从而实现AI式对话和视觉推理的功能。如下所示为该AI demo的框图:
由VIF接收Sensor的数据,送到ISP和SCL进行图像处理和图像的缩小,将处理后的图像送到SW VENC进行软件编码得到h264码流数据,当Audio往火山传输数据时,同时发生Video H264 I帧数据。
由AI(Audio Input)接收Mic的输出,经过AEC回声消除处理、APC降噪处理、VAD语音检测、KWS关键词检测,将语音输入编码成opus格式。
通过火山引擎RTC的接口,将编码后的语音和视频数据发送到火山引擎云端进行分析,等待火山引擎云端回复分析结果,将回复的语音数据进行opus解码后通过AO输出到Speaker。
demo使用说明
demo使用流程
网络环境
该demo需要访问外部网络,连接外网
Demo软件可以通过如下命令设定Mac地址通过DHCP获取IP地址:
ifconfig eth0 hw ether 00:71:30:1B:xx:xx
ifconfig eth0 up
udhcpc -i eth0 -s /etc/init.d/udhcpc.script
获取IP后 确认ping 豆包官网 access.rtc.volcvideo.com是否成功
demo运行
Comake Pi D1 32Bit 软件默认有集成此Demo, UI点击"火山引擎"即可打开。
查看加入房间打印以及欢迎语
demo成功跑起来后会收到RTC加入房间的回调打印以及听到智能体的欢迎语(你好,我是小星,我是你的好朋友,可以陪你谈天说地!),如下所示:
上图中红框部分就是RTC加入房间的回调打印以及智能体的欢迎语回复信息打印,看到这些信息基本可以说明智能体已经正常开始工作了。
查看关键词打印
当听到智能体的欢迎语后就可以开始对话了,对话前,请先说关键词:“你好,小星”。当板端检测到关键词后,会有这个打印后,此时可以开始询问问题:
超过60s 没有检测到实时语音就需要再次通过关键词触发。
查看发送音频/视频数据打印
demo发送一帧音频或一帧h264时,会出现如下类似打印:
上图中send opus encode是发送的一帧音频数据的打印;send video frame是发送的一帧h264的打印。
查看智能体回复打印
不管发送视频还是音频数据,只要智能体有回复数据时,就可以看到如下图所示打印:
实例演示
火山引擎相关开发说明
RTC SDK接口调用顺序
首先是进行RTC的初始化,user和agent加入房间。当APP收到回调函数后,就可以通过byte_rtc_send_audio_data以及byte_rtc_send_video_data接口发送音频和视频数据给大模型。经过大模型分析后,会通过回调函数将回复数据给到APP。当用户离开房间后,就可以关闭房间,但需要等待RTC的回调函数通知才可以销毁房间。
需要注意的是,demo中使用的是opus编码格式,火山引擎还支持G722、AAC、G711格式,APP发送什么格式的音频数据,火山引擎就会回复什么格式的音频数据。应用场景需要什么编码格式可自行移植相关编解码库进行对接,并通过byte_rtc_set_audio_codec接口告知RTC传输的是什么编码格式,该接口需要在byte_rtc_init之后,byte_rtc_join_room之前调用。
Toke鉴权
用户在加入房间时(调用byte_rtc_join_room接口),需要传入Token参数。在volc_agent.cpp文件中,实现了根据AppID、AppKey、RoomID、UserID、时间戳等参数实时生成Token的程序,而该部分对应的具体生成过程可以参考火山引擎官方文档:https://www.volcengine.com/docs/6348/70121 。
API签名验证
在调用Open API时,需要对API进行签名以便火山引擎能够进行身份验证。在volc_agent.cpp文件中,实现了通过curl库调用StartVoiceChat等API的程序,而该部分对应的具体签名过程可以参考火山引擎官方文档:https://www.volcengine.com/docs/6348/69859 。
问题记录
出现signature请求过期的打印
调用开启智能体API时需要需要按照一定格式发送http post请求,如果发送请求时出现以下打印:
出现上图打印说明http post的签名是过期的,这个是因为签名鉴权时需要使用当前时间,板端开机后时间从1970年开始计算,因此,构造的请求就是过期的。
需要确保 Demo运行时ntp相关调用没有异常。
加入房间没有成功
在智能体加入房间成功后,会有回调打印显示,但是如果串口一直在刷如下打印:
当遇到这种情况时,说明智能体并没有成功加入房间,大概率是地址解析失败,需要检查网络看看,可以尝试ping access.rtc.volcvideo.com这个域名看看需要多久才可以解析出,如果时间超过了5s(RTC那边握手最多5s),说明网络有问题,建议更换一个网络。
出现global error打印
在智能体加入房间时,如果长时间都没有加入成功(至少5s),并且会有如下打印:
当遇到这种情况时,根据豆包的回复是由于网络的原因,这种情况豆包那边会尝试重新连接,一般最后都会成功,因此,这个错误可以暂时不用管。
智能体没有回复数据
当出现智能体没有欢迎语播报, 或者智能体没有回复数据时,可以按照以下步骤进行确认。
确认ASR、TTS服务是否开通
demo依赖火山引擎云端的语音识别(ASR)和语音合成(TTS)服务的,请务必开通这两个服务,如下所示:
确认是否为角色配置策略
智能体要想回复,是需要有权限的,请务必在页面https://console.volcengine.com/rtc/aigc/iam 点击一键开通跨服务授权配置角色进行配置策略,授权后https://console.volcengine.com/iam/identitymanage/role 可以看到如下角色权限:
确认开启智能体时的json参数配置
除了一些必要的服务以及权限外,在调用开启智能体API时还会需要配置智能体的一些属性,SystemMessages 系统提示词,用于输入控制大模型行为方式的指令,定义了模型的角色、行为准则,特定的输出格式等,这个配置很重要。
目前,demo中为智能体配置的属性如下所示:
json中具体每个字段的含义,可以参考该链接中的说明:https://www.volcengine.com/docs/6348/1404673 。一般情况下,智能体没有回复,基本都是这个json配置有问题。
智能体回复不准确
智能体回复不准确,需要修改智能体的初始化人设. 方法是修改llm_config SystemMessages字段 代码位置:
zk_mini\jni\logic\volc\volc_agent.cpp 480行,目前人设是一个简单的陪伴机器人。
cJSON_AddItemToArray(system_messages, cJSON_CreateString("你是小星,你是用户的好朋友,你是一个具备情感陪伴能力的智能机器人,核心目标是通过表情识别与自然语言交互,为用户提供有温度的情感支持,回复内容不能包含图片相关字眼。\
请遵循以下原则: 角色设定:以朋友身份互动,语气亲切自然,避免机械感(禁用技术术语,多用口语化表达)。\
情感优先:任何回复需优先匹配用户当前表情识别的情绪(如高兴、悲伤、疲惫),再结合对话内容。\
情绪识别标准:微笑、大笑表示高兴,皱眉、流泪表示悲伤,瞪眼、咬牙表示愤怒,瞪眼、张嘴表示惊讶。"));
其它问题
其他问题可以参考火山引擎RTC服务官网中的文档说明 https://www.volcengine.com/docs/6348 。
更多推荐
所有评论(0)