传递自定义信息
与智能体对话时,你可能需要从端侧获取用户的说话状态、选中的文字、个性签名、得分等自定义上下文信息,并将这些信息传递给智能体,引导智能体输出更符合用户需求的内容。
本文介绍如何结合 RTM SDK 提供的能力,实现与智能体对话时携带自定义信息。
技术原理
声网实时消息 RTM SDK 支持为频道中的用户设置自定义的临时状态信息,并以事件通知的方式通知频道中其他的在线用户。如果你的 App 同时集成了声网实时互动 RTC 和实时消息 RTM 服务,就可以在创建智能体时开启 RTM 功能,让智能体在调用大模型前,从 RTM 频道中获取临时状态信息,并将其作为上下文信息传递给大模型,引导智能体输出更符合用户需求的内容。
前提条件
开始前,请确保你已经:
实现方式
打开 RTM 开关
调用 POST 创建对话式智能体时,将 advanced_features.enable_rtm
配置设置为 true
即可启用 RTM。以下为请求示例:
声网推荐启动 RTM 时开启 String UID(enable_string_uid
配置为 true
),并将智能体的 agent_rtc_uid
和 agent_rtm_uid
设置为相同的字符串(不可设为 "0"
)。
curl --request post \
--url https://api.agora.io/cn/api/conversational-ai-agent/v2/projects/<your_app_id>/join \
--header 'Authorization: Basic <credentials>' \
--data '
{
"name": "unique_name",
"properties": {
"channel": "channel_name",
"token": "token",
"agent_rtc_uid": "friday",
"agent_rtm_uid": "friday",
"advanced_features": {
"enable_rtm": true
},
"remote_rtc_uids": [
"*"
],
"enable_string_uid": true,
"llm": {
"url": "https://api.xxxx/v1/xxxx",
"api_key": "xxx",
"params": {
"model": "xxxx",
}
},
"tts": {
"vendor": "vendor_name",
"params": {
"key": "xxxx",
"voice_id": "xxxx",
}
}
}
}
'
设置自定义信息
参考临时用户状态文档,为频道中的用户设置临时状态信息。
传递自定义信息
智能体在调用大模型前,会自动获取说话用户的临时状态信息,并将其作为上下文信息传递给大模型。该临时状态信息会被设置到 context.presence
字段中。
以下示例的场景为用户 UserA 在 App 中选中了文字“勾股定理”,并向智能体提问“这是什么意思?”。示例 JSON 展示了智能体在调用大模型时,从 RTM 获取了 UserA 的一个名为 selection
的临时状态信息,请求的数据结构如下:
{
"messages": [
{
"role": "user",
"content": "这是什么意思"
}
],
"context": {
"presence": {
"userA": {
"selection": "勾股定理"
}
}
},
"model": "deepseek-r1"
}
大模型适配
你需要对大模型进行适配,使其能够处理 context.presence
字段中的临时状态信息,生成更符合用户需求的内容。这部分的实现方式可以参考自定义大模型文档。